应用程序数据缓存 - Quartz.NET vs Task列表?

时间:2010-12-09 18:34:20

标签: .net design-patterns architecture quartz.net

我正在为.NET中的大型系统设计应用程序数据缓存。

应用程序数据缓存将从多个(10+)个不同的系统或数据库进行轮询。它还需要以一定的间隔(30分钟)刷新。

我有两种选择。

第一个是使用Quartz.NET(或其他调度程序框架)以特定间隔触发缓存构建器。我似乎可以轻松控制配置文件中的间隔,并且调度非常灵活。

第二个选项是使用任务列表,其中一个或多个任务将提取数据并构建缓存,最后一个任务将在可配置的时间段内休眠。然后我可以触发任务列表并让它运行直到应用程序关闭。

现在,我更倾向于第二个选项,我可以传递取消令牌,这样就可以更好地控制启动和关闭过程。此外,可以分解单个任务以定义任务层次结构等依赖关系。

以上哪种方式更好?有没有更好的方法?

2 个答案:

答案 0 :(得分:3)

在您考虑的两个选项中,我建议使用调度程序,因为:

  1. 这是你不必自己编写和维护的东西。
  2. 计划程序可以保留计划,因此如果应用程序重新启动或重新启动,则计划程序会对其进行处理。
  3. 这些任务在调度程序中称为作业(无论如何都在Quartz.net中),您可以将它们设置为以不同的时间间隔运行。您也可以让一个工作触发其他工作。
  4. 计划程序提供对计划和作业的编程访问,因此您可以根据需要暂停,添加或删除作业。

答案 1 :(得分:1)

如果它是标准的Asp.Net和SQL服务器,请探索SQLCacheDependency。它的事件基于并且将在不当数据库表发生更改时触发。你不必每次轮询数据库。