0

我有一个高级架构问题。我正在构建一个需要执行以下相关任务的 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 的人,这是否适用于这里?

4

0 回答 0