我有一个高级架构问题。我正在构建一个MVC应用程序,需要执行以下相关任务:
例如,用户可以输入分配给她自己的任务并将其设置为在三小时内到期。根据业务规则,当它在到期时间的一小时内,状态将从“待定”变为“紧急”。
这意味着,每个时间段N,某事需要检查所有待处理任务的时间,以查看它们是否已进入“紧急”阈值。到目前为止,我只使用Windows任务计划程序执行了这样的任务。 (创建一个批处理文件或EXE,让它每十五分钟运行一次。)我一直试图说明专业人员如何做到这一点。
我的印象是首选解决方案是运行服务来实现业务规则。这是我不明白的:如果我没有使用像任务调度程序这样的实用程序,我基本上只是在我的应用程序的一个查询服务的线程中运行无限循环?
do
{
myObject = myService.query();
if (myObject.dueDate < Now() + 1 hour)
{
myObject.status = urgent
//Update db
//update view
myService.fireAlert(myObject);
}
Thread.Sleep(60000);
}
这可能是一个广泛的学术问题。更具体地说,我对此不了解Windows服务。我认为这是我需要的方向,因为我没有真正看到任何方式来安排代码运行的替代方法。还有其他可能吗?
对于任何了解SignalR的人来说,这适用于此吗?