我有网络应用程序(asp.net mvc3,.net 4),我正在尝试实现电子邮件通知服务。
基本上,有一个带有日期时间/内容的表格和一个要向其发送电子邮件的用户,当我们到达表格上的那个日期时间时,我想发送通知电子邮件。
我不确定这应该如何实现,是否应该有某种后台线程不断检查数据库?我觉得这样做效率很低。
你能建议一些方法吗?
我有网络应用程序(asp.net mvc3,.net 4),我正在尝试实现电子邮件通知服务。
基本上,有一个带有日期时间/内容的表格和一个要向其发送电子邮件的用户,当我们到达表格上的那个日期时间时,我想发送通知电子邮件。
我不确定这应该如何实现,是否应该有某种后台线程不断检查数据库?我觉得这样做效率很低。
你能建议一些方法吗?
您将需要在某处系统上运行的服务或计划作业(我以前做过;我有共享主机,并编写了一个小应用程序,我计划在我的家用计算机上定期运行)。你可以让这个过程为你做通知,或者在你的控制器上点击一个动作,这将触发它们被发送出去。
似乎让服务查询您的数据库并发送通知是最直接的途径。但是,有几个原因可以说明您的 MVC 应用程序中的操作可能更合适,例如无法远程访问数据库或 SMTP 服务器。
您可以使用 Windows 任务计划程序或类似工具来安排作业以执行应用程序(例如控制台应用程序,或者可能是 CURL)。或者你可以使用Quartz.net 之类的东西来创建你自己的服务来执行作业。
这不是正确的做法。您应该创建一个控制台应用程序并使用内置的调度程序任务定期运行它。
作为额外参考,请查看Ayende Rahien的这篇文章