如何在MVC5网站中创建基于时间的事件

本文关键字:时间 事件 于时间 MVC5 网站 创建 | 更新日期: 2023-09-27 18:27:07

为了举办基于时间的活动,什么是最佳设计?比如说,在用户最后一次登录后60天左右向用户发送提醒?

该系统目前是在MVC5上构建的,所以我想在基本控制器的ActionExecuted中添加一些cronjobs,它将触发所有的检查和填充,并执行所有基于事件的任务。

我正在考虑的另一种方法是创建一个桌面应用程序(控制台应用程序),让它一直运行,并在新用户注册时从SQL服务器获得推送通知,然后只保留列表,60天后立即发送电子邮件,或者每天查询一次服务器,以获取每个人的最后登录日期,并在任何用户需要时发送电子邮件。

我发现了这个(http://www.quartz-scheduler.net)关于SO的另一个问题:MVC-即使没有人登录应用程序,也要运行计划任务

我想问一下,这对系统来说是否是一个更好的选择?

一个更好的例子是,每个月都应该向一些用户发送一份时事通讯。这将如何实施?

如何在MVC5网站中创建基于时间的事件

所以最终我使用了Quartz.NET。我让MVC应用程序创建触发器和作业,并且一个单独的服务器运行一个控制台应用程序来执行触发器和作业。

这可以通过Scheduler.Start();在控制台应用程序中,而不在web应用程序中。

此外,作业和触发器存储在SQL服务器(Azure SQL)上,而不是RAM上,因此两台机器都可以访问它们。

我还必须确保时钟与秒同步,并更改Web.config和App.config:中<quartz>配置部分中的一些变量

 <add key="quartz.scheduler.instanceId" value="AUTO" />
 <add key="quartz.jobStore.clustered" value="true" />

两个系统都应该在集群中运行!