2010-05-11 248 views
8

我必须创建一个应用程序,它将读取数据库中的某些信息,处理数据,将更改写回数据库,然后将这些更改的电子邮件发送给某些用户或组。我将用c#编写这个程序,这个过程必须在特定的时间每周运行一次。这将在Windows 2008 Server上运行。计划任务或Windows服务

在过去,我总是会用定时器去创建一个windows服务的路径,并设置它在app.config文件中运行的时间/日期,以便它可以被更改,只需要重新启动以捕获更新。

不过,最近我看到博客文章等,建议编写一个控制台应用程序,然后使用计划任务来执行它。

我已经阅读了很多关于这个问题的文章,但还没有看到关于哪个流程更好的明确答案。

你们有什么想法?

感谢您的任何想法。

回答

14

如果是每周一个应用程序,为什么浪费资源让它在本周的其余时间在后台运行。

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

我使用的典型经验法则是沿着这些方向。首先我问几个问题。

  1. 执行修改#1
  2. 频率触发机制的
从这里

基本上的频率,如果执行的频率是每天或较不频繁我几乎总是朝着一个瘦计划任务。然后查看变化的频率,如果对时间表的变化有很高的要求,我也会尽量倾向于计划任务,以便对计划变更进行无编码更改。最后,如果除了时间之外还有一个触发器的想法,那么我会倾向于Windows服务,以帮助“未来证明”的应用程序。例如说,每次用户将文件放入X文件夹时都会执行需求更改。

+0

我同意使用服务器资源。我认为这是我将要走的方向。因为 – czuroski 2010-05-11 14:55:09

3

如果您只有一个应用程序,并且您需要它每周运行一次,那么调度程序将会很好,因为不需要在系统上运行单独的服务和进程,而这些服务和进程在大多数时间都处于空闲状态。

6

我遵循的基本规则是:如果由于感兴趣的事件随时可能发生而需要连续运行,请使用服务(或UNIX中的守护进程)。

如果您只是想定期执行某项操作,请使用计划任务(或cron)。

这里的紧钳是你的短语"must be run once a week at a particular time" - 去执行计划任务。

+0

这就是我的想法。正如我一直在阅读帖子,这是我对这样做的感觉。我会试一试。 谢谢 – czuroski 2010-05-11 14:55:48