.net 服务到进程排队的长期运行进程-从何处开始?
构建服务以处理排队的长期运行进程的最佳方法是什么?例如,这就是我们要做的.net 服务到进程排队的长期运行进程-从何处开始?,.net,windows-services,queue,batch-processing,.net,Windows Services,Queue,Batch Processing,构建服务以处理排队的长期运行进程的最佳方法是什么?例如,这就是我们要做的 用户将401k数据上传到web 数据进入处理队列(数据库表) 401k已处理(每个客户端可能需要几分钟) 通过电子邮件通知用户401k已被接受 我们当然可以编写一个服务来处理这个问题,但是如果服务失败怎么办?如何通知某人?如果有例外怎么办?此外,该服务是否应处理其他非用户启动的流程(如发送电子邮件等) 我们有一个由熟练的.NET开发人员组成的团队,但我们所有的经验都是在任务调度器启动的web/客户端应用程序或控制台应用程序
- 用户将数据上传到网站
- 将数据写入MSMQ
- 在间隔n处,Windows服务从队列中窥视/读取下一条等待的消息
- 该工作由服务完成,数据被写入数据库,并向另一个队列发送另一条消息以通知客户李>
- 另一个服务从第二个队列中窥视/读取。根据需要向客户发送电子邮件/通知。建议需要第二个队列来处理SMTP中断等,并且可以独立于第一个队列进行管理
- 很好地处理数据库中断,因为它依赖于数据库来保存其工作的输出。“捕手”、“工人”和“结果者”一炮而过。这真的属于非军事区吗?注1:“网络”,而不是内联网
- 在不添加更多web+工作节点的情况下进行扩展
- MSMQ有自己的存储实现,因此它不依赖于应用程序数据库来排队和发送顺序。它是Windows的一部分,作为服务运行。如果MSMQ已关闭,则Windows已关闭,或者安全配置不正确
- 异步处理。您的web层可以简单地“捕获”请求并“放入”队列。就这样。无需旋转线程,无需依赖应用程序数据库。它可以返回到接收其他用户请求的工作。用户不必“感觉”繁忙工作日的滞后
- 可伸缩性。您可以将Windows服务部署到1台以上的计算机上才能工作
- 工作分离:401k处理、电子邮件发送、请求处理+身份验证都在不同的模块中
- 安全性—不清楚这是在内部网还是在internet解决方案中实现的。如果Internet被暴露,那么考虑如何将消息从DMZ发送到内部应用程序。您能证明从开放的internet对应用程序数据库进行读写访问是合理的吗?考虑一下某个门面。队列提供了这一点
- 用户将数据上传到网站
- 将数据写入MSMQ
- 在间隔n处,Windows服务从队列中窥视/读取下一条等待的消息
- 该工作由服务完成,数据被写入数据库,并向另一个队列发送另一条消息以通知客户李>
- 另一个服务从第二个队列中窥视/读取。根据需要向客户发送电子邮件/通知。建议需要第二个队列来处理SMTP中断等,并且可以独立于第一个队列进行管理
- 很好地处理数据库中断,因为它依赖于数据库来保存其工作的输出。“捕手”、“工人”和“结果者”一炮而过。这真的属于非军事区吗?附注一