我需要创建一个发送到许多电子邮件的电子邮件列表。什么是mvc调用长时间操作的最佳解决方案?更好的例子
答案 0 :(得分:2)
您不希望在Web服务器上运行这样的长进程。您需要一个“后台”应用程序来处理发送电子邮件和响应。编写另一台在不同计算机上运行的应用程序。让它从数据库中读取必要的信息并发送电子邮件。如果您要发送电子邮件,则还需要处理回复。这个后台应用程序应该处理这两个。
答案 1 :(得分:1)
可能您需要执行以下操作: -
每个组件的一些选项: -
1)作业队列的选项包括内存队列Queue<>,存储在数据库中的队列,MSMQ,像Amazon的简单消息队列的远程队列。您选择的将取决于您希望解决方案的容错程度,是否要在故障后重新启动,以及是否需要将工作分发到多个服务器。
2)服务选项包括Web应用程序中的线程或NT服务。同样,这将取决于您对容错和可重启性的需求。
3)报告进度的方式取决于您使用的队列类型。对于MSMQ,您可能会以相反的方式返回“相关”消息。对于数据库队列,您可以标记数据库中的进度。或者您可能正在调用Web应用程序上的Web服务来报告进度。
4)如果您希望在作业进行时向用户显示动态进度条(或类似内容),您可以实现将进度信息从服务器传递到浏览器的Ajax服务。
对于发送电子邮件,我建议您使用数据库作为队列,因为您可能希望长时间跟踪它们并标记无法传送的电子邮件,已读取的电子邮件等等。 / p>
答案 2 :(得分:-1)
如果你可以使用ASP.NET MVC2,我会使用新的Asynchronous Controller
答案 3 :(得分:-1)
我建议您将要发送的邮件与收件人一起保存在数据库中。然后,您可以使用调度程序(如Quartz.NEt)每隔一分钟检查一次(例如)是否有要发送的电子邮件,如果有,则每次最多发送10封邮件。