2

我希望构建一个允许用户管理简单任务或待办事项的 Web 应用程序。作为其中的一部分,我想每天向用户发送电子邮件提醒他们的任务。不过,我希望系统中的每个用户都指定他们在一天中的什么时间收到提醒。例如,一个用户可以指定在上午 8 点收到他们的电子邮件,而另一个用户可能选择在晚上 7 点收到他们的电子邮件。使用 .Net,构建和构建这种“提醒”服务的最佳方式是什么?此外,作为未来阶段,我想将提醒扩展到 SMS 文本和/或其他形式的通知。

任何指导将不胜感激。

4

3 回答 3

1

您的问题有点宽泛,但在 Windows 上处理重复发生的任务有两种通用方法:

  • 编写一个服务,并将其设计为定期检查任务。您可以让它在每个时间段轮询数据库,并执行当时到期的任何提醒(标记已完成的提醒)。
  • 将程序作为 Windows 计划任务运行(相当于 Microsoft 的 cron)。每小时运行一次,并按上述方式检查数据库。

我假设您知道如何从 .NET 发送电子邮件——这非常简单,而且大多数运营商都有邮件到 SMS 网关。

于 2010-02-26T02:24:58.153 回答
1

我想你可以通过两种方式做到这一点:

  • Windows 服务在后台运行,轮询数据库,查找当前时间的项目,如果没有找到则休眠,循环

    这已经足够好了,但如果突然有 1,000 个项目要在 30 秒左右处理,则可能无法很好地扩展,因为这样做需要很长时间。您可以通过考虑 MSMQ 来构建它来解决这个问题,它允许在不同的机器上进行分发,等等。

  • 类似的 Windows 服务,但可以通过某种脉冲/等待系统进行交互,每次创建新的数据库条目时都会触发该系统。然后它可以合法地睡觉,但有点“脆弱”。

我可能会采用第一种方法。

于 2010-02-26T02:26:23.460 回答
0

我将创建一个始终运行的服务,并每分钟检查一次任务是否执行。然后,您可以执行您需要的任何操作。您可以创建一个网站供用户使用,该网站转到该服务也读取的数据库。如果您想获得更多花哨和服务的 WCF 界面,请让网站转到该服务并将您需要的提醒存储在数据库中。

于 2010-02-26T02:24:39.470 回答