Windows Service或Windows Task Scheduler?


10

我打算创建一个实用程序,该实用程序将查询数据库并存储一些信息(在数据库的另一个表中)。它是一个多线程实用程序,需要每5或10分钟/以后运行,一天可能会发生三次。

我在C#/ DotNet编程中看到两种方法可以实现此目的。

  • 创建具有计时器方法的Windows服务。
  • 控制台程序,并使用Windows Task Scheduler对其进行调度。

您更喜欢哪一个?为什么?


3
我认为这个问题更适合SO
Naveen

1
确实,这是一个很好的软件设计问题,一旦您对SO提出疑问,您可能会在五个小时内至少得到五个好的答案。
sharptooth 2010年

1
我投票决定关闭,这实际上属于SO
Jaco Pretorius

2
这个问题引起了对两者优点的主观和/或扩展讨论。这里的话题很多,那里的主观和争论性很大。

2
我不确定,我想最后一句话“您更喜欢哪个,为什么?” 会触发附近的机器人。它在这里更好,因为可以在此处获得实际答案
TheLQ

Answers:


2

我的一位同事昨天就同一主题发表的评论

“对此总是会有各种各样的意见……我的经验法则是,如果您需要每五分钟运行一次的东西(而您不在乎运行什么时间或运行多长时间)或响应事件,使用服务。如果您需要每天在特定时间运行某些东西,并且确定不会出现重叠,请使用操作系统随附的Scheduler。如果需要混合,请同时使用两者各种情况下的解决方案,或找到现成的东西。(可能是Quartz .Net)“

乔恩·加洛韦(Jon Galloway)在2005年发表的文章“ // TODONT:仅使用Windows服务运行计划的进程” 是一本好书。我建议也阅读这些评论,因为讨论仍将持续到今天,并提供一些很好的反驳。

就我个人而言,我同意这一点。保持简单尽可能长的时间。如果要部署到Win2008服务器,请查看任务计划程序以及标准计划程序提供的所有功能。对我来说,杀手是在事件发生时启动计划任务。



3

我听说过使用Windows Scheduler的争论,但始终选择将我的应用程序写为服务。起初,我认为这将是在集群环境中更好的解决方案,但事实并非如此。最重要的是,除了“感觉”到更好的设计之外,我没有其他理由。


0

您为什么不尝试使用Quartz.net,
我曾经使用过它,因此可以说它是一个强大的框架,可以创建您自己的调度程序,并且它提供了一个预先构建的服务,可以运行您的调度作业(存储在数据库中或仅存储在XML文件中) ) http://quartznet.sourceforge.net/


2
-1这根本无法回答问题,因此更适合作为评论。
Tamara Wijsman 2010年

0

如果您希望用户无需构建便拥有更多控制权,请使用任务计划程序。看起来Google会通过其应用程序更新来做到这一点。根据用户的不同,管理任务并不困难。将用户带出循环并创建服务。大多数人永远不会碰他们。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.