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

时间:2014-10-18 04:10:06

标签: c# events asp.net-mvc-5.2

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

系统目前是在MVC5上构建的,所以我想在基本控制器的ActionExecuted中添加一些cronjobs,它们会触发所有的检查和操作,并完成所有基于事件的任务。

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

我在另一个关于SO的问题上找到了这个(http://www.quartz-scheduler.net): MVC - Run scheduled task even if nobody logs into app

想知道这对系统来说是否更好?

更好的例子是每月应向某些用户发送简报。如何实施?

1 个答案:

答案 0 :(得分:1)

所以最后我最终使用了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" />

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