排队更新的建议是在asp.net-mvc应用程序中通过电子邮件发送出去的?

leo*_*ora 5 c# email asp.net-mvc notifications scheduled-tasks

我有一个asp.net-mvc应用程序(SQL Server后端)和一个跟踪采购订单的基本CRUD Web应用程序.其中一项功能是订阅订单,因此如果有人进行任何更改,您会收到电子邮件通知.在更新提交到数据库之后和之后,我在表单发布后触发电子邮件通知.

问题是,有一天,单个订单上有大量更新,一个人在一天内收到24封电子邮件更新.用户要求他每天只收到1封电子邮件,其中包含所有更改的摘要.这似乎是一个合理的请求,我在其他情况下看到了这一点(每天或每周发送一次批量通知),但我正在努力找出构建这个的最佳方法.我知道我需要坚持用户设置他们想要如何接收更新,但之后我可以:

  • 有临时更新表或
  • 每天对所有订单运行一次查询,查看是否对任何"每天一次"检查的用户的订单进行了任何更改.
  • 其他?

由于我在其他地方看到过这种情况,我认为可能会有推荐的模式或建议来支持这一点.

ted*_*e24 2

我会用日期来实现这个目的:

任何订单都有一个“最后更新”日期时间。每个用户都有一个“上次运行”日期时间和频率。然后,您可以每##分钟运行一次进程,根据用户偏好获取所有需要通知的用户,并找到上次更新日期>用户上次运行属性的所有订单。

关键是您的应用程序中需要一些后台作业处理组件来安排工作并监控运行情况。我使用hangfire.io来完成这项工作,效果非常好