我想在我的项目中添加一个简报功能,将构建的邮件发送给所有订阅的用户。虽然我根本不期待高容量,但我想这样做是为了重新使用它来发送邮件量大的项目。但是,我对于我可以使用什么策略感到困惑。引用this question的答案:
我不推荐使用asp.net网页发送,即使你是在另外的背景下启动它 线。我认为你冒着服务器在中间回收你的过程的风险 发送,这会弄乱它。你真的需要写一些单独的服务或 申请发送电子邮件。
这意味着WCF服务将成为现实,但是它是OData还是RIA服务是否重要? MSDN文档对于每种类型的用途有点混乱。它以Silverlight为例使用RIA,但仍然表示你也可以独立使用它。
此外,即使我以这种方式使用服务,上述有关回收流程的报价是否意味着我无法从MVC控制器调用它,因为它会在控制器等待时回收进程服务还是吗?理想情况下,我想用MVC创建邮件,将其传递到服务上,发送邮件并在MVC中处理结果。
之后的最后一个问题是我是否可以使用该服务实现表单身份验证。我需要能够控制对服务的访问,以便其他人不能随机发送简报。
这些目标是否可以通过WCF和MVC组合实现?
答案 0 :(得分:2)
在做类似的事情时,请记住我想保证一切都被发送。我只是在控制器中设置了邮件的内容,然后将邮件和收件人列表(或者在这种情况下是一个定义收件人的过滤器)写入数据库。
然后我在ASP外部运行一个完全独立的进程(在我的情况下是一个Windows服务),它定期检查数据库是否有发送请求,发送它们,并将它们标记为已发送。
显然,MVC控制器会处理所有身份验证问题。一旦在数据库中记录了发送请求,就会认为它是完全授权的。
你可以通过使用WCF在ASP和Windows服务之间进行通信来做类似的事情,但我认为它过于复杂。确保最终处理请求更加困难。无论如何,你真的需要一个数据库记录100%确定 - 所以这条记录也可能是你的信息。您通常也不需要实时触发电子邮件发送。