我希望构建一个允许用户管理简单任务或待办事项的 Web 应用程序。作为其中的一部分,我想每天向用户发送电子邮件提醒他们的任务。不过,我希望系统中的每个用户都指定他们在一天中的什么时间收到提醒。例如,一个用户可以指定在上午 8 点收到他们的电子邮件,而另一个用户可能选择在晚上 7 点收到他们的电子邮件。使用 .Net,构建和构建这种“提醒”服务的最佳方式是什么?此外,作为未来阶段,我想将提醒扩展到 SMS 文本和/或其他形式的通知。
任何指导将不胜感激。
您的问题有点宽泛,但在 Windows 上处理重复发生的任务有两种通用方法:
我假设您知道如何从 .NET 发送电子邮件——这非常简单,而且大多数运营商都有邮件到 SMS 网关。
我想你可以通过两种方式做到这一点:
Windows 服务在后台运行,轮询数据库,查找当前时间的项目,如果没有找到则休眠,循环
这已经足够好了,但如果突然有 1,000 个项目要在 30 秒左右处理,则可能无法很好地扩展,因为这样做需要很长时间。您可以通过考虑 MSMQ 来构建它来解决这个问题,它允许在不同的机器上进行分发,等等。
类似的 Windows 服务,但可以通过某种脉冲/等待系统进行交互,每次创建新的数据库条目时都会触发该系统。然后它可以合法地睡觉,但有点“脆弱”。
我可能会采用第一种方法。
我将创建一个始终运行的服务,并每分钟检查一次任务是否执行。然后,您可以执行您需要的任何操作。您可以创建一个网站供用户使用,该网站转到该服务也读取的数据库。如果您想获得更多花哨和服务的 WCF 界面,请让网站转到该服务并将您需要的提醒存储在数据库中。