2012-02-16 46 views
0

我想为我的项目添加简报功能,以向所有订阅的用户发送已构建的邮件。尽管我根本没有期待高音量,但我希望这样做的目的是重复使用邮件数量可能很大的项目。然而,我很困惑我能用这个策略。引述答案this question创建并发送简报

我不会建议asp.net网页发送,即使你在一个单独的后台线程 启动它。我想你会冒着服务器回收你的流程的风险,在 发送中,这会弄乱它。您确实需要编写某种单独的服务或 应用程序来发送您的电子邮件。

这意味着一个WCF服务将会走的路,但它是OData还是RIA服务无关紧要吗? MSDN文档对于每种类型的用途有点混淆。它让Silverlight成为使用RIA的一个例子,但仍然说你也可以独立使用它。

另外,即使我以这种方式使用服务,以上关于回收过程的引用是否意味着我将无法从MVC控制器调用它,因为它将在控制器正在等待时回收过程无论如何,这项服务?理想情况下,我想用MVC创建邮件,将其传递到服务上,发送邮件并在MVC内处理结果。

之后的最后一个问题是我是否可以使用服务实现表单身份验证。我需要能够控制对服务的访问,以便其他人不能随意发送新闻简报。

WCF和MVC结合起来可以实现这些目标吗?

回答

2

当做类似的事情时,要记住我想保证所有内容都已发送。我只是在我的控制器中设置消息的内容,然后将消息和收件人列表(或本例中定义收件人的过滤器)写入数据库。

然后,我有ASP的(在我的情况下,Windows服务)的完全独立的进程中运行置身其中定期检查发送请求的数据库,并将它们发送,并将其标记为传送。

显然,MVC控制器负责所有的身份验证问题。一旦在数据库中记录了发送请求,它就被认为是完全授权的。

您可以通过ASP和使用WCF Windows服务之间的通信做类似的事情,但我认为这是过于复杂。确保最终处理请求很难。无论如何,你确实需要一个数据库记录才能100%确定 - 这样记录可能就是你的信息。您通常也不需要实时触发电子邮件发送。

+0

感谢您的回答詹姆斯。这使得事情变得容易得多。 – 2012-02-16 20:52:42