1

在我的 Web 应用程序中,有一个网页显示某些字段及其值。这些值可以由用户编辑。一旦值被编辑,它们就会被持久化到数据库中。现在出现了我需要建议的问题。将值更新到数据库后,我需要运行一些耗时的模块。因此,这个耗时的部分可能会也可能不会立即完成,具体取决于配置。配置中的选项可以是瞬时、每小时、每天、每周或每月。因此,如果它是瞬时的,我必须运行模块,否则我应该根据配置在指定时间触发任务。

作业调度程序是解决此问题的好方法吗?听说过 Quartz.NET。是否有任何 .NET 库可用于实现此目的。请提供建议。

4

1 回答 1

1

强烈建议将这些作业存储在一个队列中并创建另一个异步服务来执行队列作业。因此,您不会在 Web 服务器 (IIS) 上加载所有工作,并且在 Web 服务器重新启动或 Web 应用程序重新启动的情况下,应用程序不会丢失作业。

要创建此解决方案,您需要考虑 3 点。

队列设计与管理

当然,您可以使用其中一种排队服务器(例如 MSMQ、ActiveMQ、ZeroQ)。但为了简单起见,我建议使用数据库上的新表作为队列。在以下链接中查找如何将数据库表用作队列。 http://rusanu.com/2010/03/26/using-tables-as-queues/

作业调度

您在这里有两个选项 Windows 任务计划程序和 QuatrZ.NET。我建议在这部分使用 QuatrZ.Net,因为它更具可定制性并且可以满足您的所有需求。

托管服务

您可以使用 QuartZ.NET 服务器部署,也可以使用.NET 4 Managed Extensibility Framework (MEF)并基于 QuartZ IJob 合同及其Corn 表达式构建自己的托管服务。

于 2012-07-23T13:56:05.553 回答