【发布时间】:2011-03-15 10:32:00
【问题描述】:
基于此答案here,我需要将电子邮件放入队列并运行后台任务并发送它们。如何使用 ASP.NET-MVC 和 WCF 的架构来做到这一点?
- 如何建立队列(sql server)?
- 如何构建后台任务?
【问题讨论】:
-
我不确定这是一个很好的方法,但它在 NuGet 上的事实使它很有吸引力。 :) hanselman.com/blog/…
标签: asp.net-mvc wcf email
基于此答案here,我需要将电子邮件放入队列并运行后台任务并发送它们。如何使用 ASP.NET-MVC 和 WCF 的架构来做到这一点?
【问题讨论】:
标签: asp.net-mvc wcf email
您可以用多种不同的方式给这只猫剥皮。关键是邮件的实际发送与邮件的排队是异步的。
HTH,
Z
【讨论】:
我认为您的解决方案与您使用 MVC 的事实无关。
我过去实现这一点的方式是将您需要发送电子邮件到数据库中的事实持久化,然后使用 Windows 服务进行处理。
另一种方法是使用 MSMQ 作为存储介质。一般来说,MSMQ 不应该被用来“存储”数据,而只是作为一种消息传输机制,但在这种情况下它肯定是一种选择。
就开发“队列”而言,如果电子邮件由于某种原因需要按顺序发送,只需在数据库表中添加一个“RequestedDTTM”列即可让您按照请求的顺序发送它们。
最后,我会考虑实现一个简单的多线程电子邮件发送器以最大限度地提高性能。在 .NET 4.0 中使用 TPL 会使这非常容易。或者,您可以使用 SmartThreadPool 库(可从 codeplex.com 获得)之类的东西来管理您的电子邮件发件人线程。
正如您链接到的另一个答案中提到的,您的 UI 不应该发送此电子邮件。
【讨论】: