【发布时间】:2013-01-09 19:57:10
【问题描述】:
我有一个使用 3rd 方 exe 处理请求的 asp.net 网站。目前我的工作流程是
用户使用任何浏览器访问网站并填写一份包含工作详细信息的表格
网站调用 WCF 自托管 Windows 服务,该服务正在侦听端口
Windows 服务启动 3rd 方 exe 来处理作业并将结果返回到网站
网站将返回的结果展示给用户
上述网站是一个原型,现在需要转变为可用于生产的部署。我意识到上述架构有很多可能会破坏的点。例如,如果机器关机或者windows服务崩溃并且不再监听端口,所有当前请求将停止处理。为了使架构更加健壮,我正在考虑以下
用户使用任何浏览器访问网站并填写一份包含工作详细信息的表格
网站将工作详细信息写入数据库
每 10 秒轮询一次数据库以获取新作业的 Windows 服务会选择该作业并使用第 3 方应用程序执行它。结果被写回数据库。
现在已经开始轮询数据库、获取结果并将其显示给用户的网站。
第二种架构为我提供了更多的日志记录功能,并且如果它们在队列中,它们可以重新开始。然而,它涉及大量可能不可扩展的轮询。谁能推荐一个更好的架构?
【问题讨论】:
-
我们为类似的需求做过 POC,我们在第 2 步考虑了 MSMQ,但没有在项目中实现。期待这个有趣的实现的答案..
-
@Sundeep - 您最终为您的项目使用了 MSMQ 的替代品吗?项目已完成还是仍在进行中?谢谢
-
很久以前,应用程序做一些后端处理并向用户发送通知电子邮件。所以,想替换它以进行即时处理。
-
如果你真的希望它健壮,那么你应该直接使用 MSMQ,或者使用依赖于 MSMQ 的 WCF 绑定之一。不要重新发明轮子,尤其是重要的时候。
-
我已经使用了 MQSeries(但 MSMQ 是相同的原理)和“保存到数据库”......两者都是有效的选项 - 但是:既然您已经拥有并了解 WCF,请查看“ netmsmqbinding',它允许您使用 WCF 写入 MSMQ(和读取)。 msdn.microsoft.com/en-us/library/…