答案 0 :(得分:21)
使用Quartz.NET,我可以对比一些早期的观点:
这主要是关于你需要什么的问题。 Windows计划任务可能会为您提供所需的一切。但是,如果您需要群集(分布式工作人员),对触发或失火处理规则进行细粒度控制,您可能想要检查Quartz.NET在这些区域上提供的内容。
采用最简单的填充您的要求,但足够抽象以允许更改。
答案 1 :(得分:16)
我的直觉反应是在安装另一个调度程序之前尝试让集成的WinScheduler满足您的需求 - 推理:
如果不符合您的需要,请到达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来解释,如果你需要:
...然后Quartz.NET将是您的要求。