【发布时间】:2015-07-27 20:23:42
【问题描述】:
我们的应用架构中有 3 个组件; ASP.Net Web 、WCF 服务和 Windows 服务。
ASP.Net Web 应用程序调用 WCF 来执行任务。
WCF 实习生触发正在运行的 Windows 服务来执行任务。 Windows 服务实习生打开多个线程来执行任务。
- Windows 服务使用任务的进度状态更新数据库,Web 应用程序将状态更新读取给用户。 Web 应用程序由单独的团队开发,而其他团队负责 WCF 和 Windows 服务。
开发windows服务而不仅仅是WCF的原因是需要打开多个线程作为任务完成的一部分。由于 WCF 只能用作 Web 应用程序的“一劳永逸”,因此其他团队决定使用 Windows 服务。此外(根据其他团队的研究),在 WCF 中退出任务时不可能关闭所有线程。
- 这是一个好的架构吗?
- 是否可以调用 Windows 服务从 WCF 执行任务?
- 是否可以在不使用 Windows 服务的情况下构建此应用程序?。
【问题讨论】:
-
1.不,太复杂了。您可以在 ASP.NET 中完成所有这些操作
-
怎么样?使 asp.net 成为多线程应用程序不会造成复杂性吗?此外,我们希望将责任分成 b/w 2 个团队,因为两个团队对其他任务的了解都有限
-
是什么让你觉得 WCF 不能做线程?
-
您可以有效地管理 ASP .NET 应用程序中的线程,并且对于跨团队共享,您可以使用组件和库,我认为这两个因素不会影响我的决定,如果我会在你的情况。也就是说,还有其他因素。如果任务长时间运行且密集,它们可能会影响运行 ASP .NET 应用程序的 Web 服务器的性能。如果在将工作负载转移到另一台机器时我想着火并忘记这种情况,我会考虑使用队列,例如RabbitMQ。 Web App 加入队列,worker 读取它
标签: c# asp.net wcf architecture windows-services