预定任务或Windows服务

9
我需要创建一个应用程序,从数据库中读取一些信息,处理数据,将更改写回到数据库,并向某些用户或组发送具有这些更改的电子邮件。我将使用c#编写此过程,此过程必须在特定时间每周运行一次。这将在Windows 2008服务器上运行。
过去,我通常会创建一个带有计时器的Windows服务,并在app.config文件中设置运行时间/日期,以便可以更改并只需重新启动即可捕获更新。
最近,我看到了一些博客文章等,推荐编写控制台应用程序,然后使用计划任务来执行它。
我阅读了许多涉及此问题的帖子,但没有看到关于哪种进程更好的明确答案。
你们对此有何想法?
谢谢任何想法。
3个回答

15

如果应用程序每周只需要运行一次,为什么要浪费资源让它在其余时间都在后台运行。

控制台应用程序似乎更合适。

我通常使用以下规则。首先,我会问几个问题。

  1. 执行频率
  2. #1更改的频率
  3. 触发机制

基本上,如果执行频率是每天一次或更少,我几乎总是倾向于使用定时任务。然后看看变化的频率,如果对计划变更有很高的需求,则也会尽量倾向于使用定时任务,以允许无编码变更的计划变更。最后,如果想到除时间外的触发器,那么我会倾向于使用Windows服务来帮助“未来证明”应用程序。例如,要求在用户将文件放入X文件夹时每次运行。


我同意使用服务器资源。我认为这是我要走的方向。 - czuroski

6
我遵循的基本规则是:如果您需要持续运行,因为感兴趣的事件可能随时发生,请使用服务(或UNIX中的守护程序)。
如果您只想定期执行某些操作,请使用定时任务(或cron)。
这里的关键是您的短语“必须在特定时间每周运行一次”- 选择定时任务。

那正是我所想的。当我阅读过帖子后,这就是我对于去做这件事的感觉。我会尝试一下。谢谢。 - czuroski

3
如果您只有一个应用程序,并且需要每周运行一次,那么计划程序可能是很好的选择,因为没有必要在系统上运行独立的服务和进程,这些服务和进程大部分时间都处于空闲状态。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接