Asp.Net - 将处理卸载到外部应用程序

6 c# asp.net polling

我有一个asp.net网站,使用第三方exe处理请求.目前我的工作流程是

  1. 用户使用任何浏览器访问网站,并填写包含作业详细信息的表单

  2. 网站调用WCF自托管Windows服务,该服务正在侦听端口

  3. Windows服务启动第三方exe来处理作业并将结果返回给网站

  4. 网站将返回的结果显示给用户

上面的网站是一个原型,现在需要转变为生产就绪部署.我意识到上述架构有许多可能会破坏的点.例如,如果机器电源关闭或者Windows服务崩溃并且不再监听端口,则所有当前请求都将停止处理.为了使架构更加健壮,我正在考虑以下内容

  1. 用户使用任何浏览器访问网站,并填写包含作业详细信息的表单

  2. 网站将作业详细信息写入数据库

  3. 为新作业每10秒轮询一次数据库的Windows服务将获取作业并使用第三方应用程序执行该作业.结果将写回数据库.

  4. 现在已经开始轮询数据库的网站,获取结果并将其显示给用户.

第二种体系结构为我提供了更多的日志记录功能,如果它们在队列中,则可以再次启动作业.然而,它涉及大量的轮询,可能无法扩展.有谁能推荐更好的架构?

Pab*_*meo 0

我会选择 MSMQ 或RabbitMQ而不是轮询。

这样,您就可以将处理任务转移给队列的多个使用者(可能将服务器与 Web 服务器分开),并并行处理更多请求。