2014-10-18 35 views
3

为了进行基于时间的事件,最佳设计是什么?例如,发送提醒给用户让我们说,他们上次登录后60天左右?如何在MVC5网站中创建基于时间的事件?

该系统目前建立在MVC5上,所以我打算在基本控制器的ActionExecuted中添加一些cronjobs,它会触发所有的检查和内容,并执行所有基于事件的任务。

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

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

,想问问这将是该系统一个更好的选择吗?

一个更好的例子是每个月都会发送一封简报给一些用户。那将如何实施?

回答

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" /> 

两个系统应该在集群行动!

相关问题