我打算创建一个实用程序,该实用程序将查询数据库并存储一些信息(在数据库的另一个表中)。它是一个多线程实用程序,需要每5或10分钟/以后运行,一天可能会发生三次。
我在C#/ DotNet编程中看到两种方法可以实现此目的。
- 创建具有计时器方法的Windows服务。
- 控制台程序,并使用Windows Task Scheduler对其进行调度。
您更喜欢哪一个?为什么?
我打算创建一个实用程序,该实用程序将查询数据库并存储一些信息(在数据库的另一个表中)。它是一个多线程实用程序,需要每5或10分钟/以后运行,一天可能会发生三次。
我在C#/ DotNet编程中看到两种方法可以实现此目的。
您更喜欢哪一个?为什么?
Answers:
我的一位同事昨天就同一主题发表的评论
“对此总是会有各种各样的意见……我的经验法则是,如果您需要每五分钟运行一次的东西(而您不在乎运行什么时间或运行多长时间)或响应事件,使用服务。如果您需要每天在特定时间运行某些东西,并且确定不会出现重叠,请使用操作系统随附的Scheduler。如果需要混合,请同时使用两者各种情况下的解决方案,或找到现成的东西。(可能是Quartz .Net)“
乔恩·加洛韦(Jon Galloway)在2005年发表的文章“ // TODONT:仅使用Windows服务运行计划的进程” 是一本好书。我建议也阅读这些评论,因为讨论仍将持续到今天,并提供一些很好的反驳。
就我个人而言,我同意这一点。保持简单尽可能长的时间。如果要部署到Win2008服务器,请查看任务计划程序以及标准计划程序提供的所有功能。对我来说,杀手是在事件发生时启动计划任务。
服务用于管理目的或为多个应用程序提供服务。
计划用于多次运行任务,不一定需要额外的权限。
您为什么不尝试使用Quartz.net,
我曾经使用过它,因此可以说它是一个强大的框架,可以创建您自己的调度程序,并且它提供了一个预先构建的服务,可以运行您的调度作业(存储在数据库中或仅存储在XML文件中) )
http://quartznet.sourceforge.net/