Quartz.NET与Windows计划任务。他们有多不同?

时间:2011-02-25 08:30:30

标签: windows scheduled-tasks scheduling quartz.net

我正在寻找Quartz.NET和Windows预定任务之间的一些比较?

他们有多不同?每个人的利弊是什么?如何选择使用哪一个?

TIA,

4 个答案:

答案 0 :(得分:21)

使用Quartz.NET,我可以对比一些早期的观点:

  1. 要编写的代码 - 您可以用.NET语言表达您的意图,编写单元测试并调试逻辑
  2. 与事件日志集成,您可以使用Common.Logging甚至可以写入db ..
  3. 既健壮又可靠
  4. 更丰富的API
  5. 这主要是关于你需要什么的问题。 Windows计划任务可能会为您提供所需的一切。但是,如果您需要群集(分布式工作人员),对触发或失火处理规则进行细粒度控制,您可能想要检查Quartz.NET在这些区域上提供的内容。

    采用最简单的填充您的要求,但足够抽象以允许更改。

答案 1 :(得分:16)

我的直觉反应是在安装另一个调度程序之前尝试让集成的WinScheduler满足您的需求 - 推理:

  1. 无需安装 - 默认安装并启用
  2. 无需编写代码 - 表示为元数据的作业
  3. 与事件日志等集成。
  4. 强大而可靠 - 足以满足MSFT,Google等。
  5. 相当丰富的API - 创建工作,检查状态等。
  6. 与远程管理工具集成
  7. 安全集成 - 以不同凭据运行作业
  8. 监控工具
  9. 如果不符合您的需要,请到达Quartz。 Quartz当然也有许多这样的功能,但是如果可以的话,还要加入另一项服务来拥有和管理。

答案 2 :(得分:2)

对于我来说,一个重要的区别是未包含在其他答案中的是调度程序执行的内容。

Windows任务计划程序只能运行可执行程序和脚本。为在Quartz中使用而编写的代码可以直接与项目的.NET组件进行交互。

使用Task Scheduler,您必须编写shell可执行文件或脚本。在shell中,您可以与项目的组件进行交互。虽然编写此shell代码并不是一个困难的过程,但您必须考虑部署额外的文件。

如果您预计在项目的生命周期内添加更多计划任务,则最终可能需要创建其他可执行shell或脚本文件,这需要更新部署过程。使用Quartz,您不需要这些文件,这可以减少创建和部署其他任务所需的总工作量。

答案 3 :(得分:0)

遗憾的是,如果不重新启动进程/主机/服务,则无法更新Quartz.NET作业程序集。对于一些人(包括我自己)而言,这是一个非常大的问题。

完全可以为在Task Scheduler下运行的作业构建一个框架。基于MEF的程序集可以由单个控制台应用程序调用,所有内容都通过配置UI进行管理。这是一个流行的托管包装器:

我确实很享受与Quart.NET合作的短暂时间,但重启要求是一个无法克服的问题。多年来,Marko用它完成了伟大的工作,而且他总是乐于助人并且反应灵敏。也许有一天该项目将获得多个AppDomain支持,这将解决这个问题。 (也就是说,它承诺会做很多工作。如果他们决定接受它,他和他的贡献者会感到荣幸。)

用Marko来解释,如果你需要:

  1. 群集(分布式工作人员)
  2. 对触发或失火处理规则进行细粒度控制
  3. ...然后Quartz.NET将是您的要求。