我有一个asp.net网站,使用第三方exe处理请求。目前我的工作流程是
用户使用任何浏览器访问网站并填写包含作业详细信息的表单
网站调用正在侦听端口的WCF自托管Windows服务
Windows服务启动第三方exe来处理作业并将结果返回给网站
网站将返回的结果显示给用户
上述网站是一个原型,现在需要转变为生产就绪部署。我意识到上述架构有许多可能会破坏的点。例如,如果机器电源关闭或者Windows服务崩溃并且不再监听端口,则所有当前请求都将停止处理。为了使架构更健壮,我正在考虑以下
用户使用任何浏览器访问网站并填写包含作业详细信息的表单
网站将作业详细信息写入数据库
Windows服务每隔10秒轮询数据库以获取新作业,然后使用第三方应用程序执行该作业并执行该作业。结果将写回数据库。
网站现已开始轮询数据库,获取结果并将其显示给用户。
第二种架构为我提供了更多的日志记录功能,如果它们在队列中,则可以再次启动作业。然而,它涉及大量的轮询,可能无法扩展。任何人都可以推荐更好的架构吗?
答案 0 :(得分:0)
我在我的一个应用程序中实现了相同的架构,用户正在处理多个请求。所以我有 -
答案 1 :(得分:0)
我会使用MSMQ或RabbitMQ。而不是轮询。
通过这种方式,您可以将处理卸载到队列中的多个使用者(可能是Web服务器的不同服务器),并并行处理更多请求。