繁体   English   中英

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

[英]Asp.Net - Offload processing to external application

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

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

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

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

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

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

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

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

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

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

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

我在我的一个应用程序中实现了相同的架构,用户正在处理多个请求。 所以我有 -

  1. 用户转到网站并选择参数等。提交请求
  2. 请求存储在数据库表中,包含所有详细信息和用户名等
  3. 服务查看数据库表并以FIFO方式获取请求
  4. 处理完请求后,状态将更新为“失败”或“已完成”到针对该requestId的数据库表,网站上的用户可以看到
  5. 如果有,服务会接收下一个请求,否则停止。
  6. 服务每30分钟一班

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

这样,您可以将处理卸载到队列的多个使用者(可能是Web服务器的不同服务器),并且并行处理更多请求。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM