我必须创建一个应用程序,它将从数据库中读取一些信息,处理数据,将更改写回数据库,然后将包含这些更改的电子邮件发送给某些用户或组。我将在c#中编写此代码,此过程必须在特定时间每周运行一次。这将在Windows 2008 Server上运行。
过去,我总是选择使用计时器创建Windows服务的路径,并设置在app.config文件中运行它的时间/天,以便可以更改它并且只需重新启动抓住更新。
最近,我看过博客文章,建议编写一个控制台应用程序,然后使用计划任务来执行它。
我已经阅读了很多关于这个问题的帖子,但还没有看到关于哪个过程更好的明确答案。
你们有什么想法?
感谢您的任何想法。
答案 0 :(得分:14)
如果是每周一次的申请,为什么要浪费资源让它在一周的剩余时间里在后台运行。
控制台应用程序似乎更合适。
我使用的典型经验法则是沿着这些方向。首先我问几个问题。
基本上从这里开始,如果执行频率是每天或更低频率,我几乎总是倾向于计划任务。然后查看更改的频率,如果对计划更改有很高的要求,我还会尝试倾向于计划任务,以允许对计划更改进行无编码更改。最后,如果曾经想过除时间之外的触发器,那么我将倾向于Windows服务以帮助“将来证明”一个应用程序。比如说每次用户将文件放到X文件夹中时都要运行需求更改。
答案 1 :(得分:6)
我遵循的基本规则是:如果您需要连续运行,因为感兴趣的事件可能随时发生,请使用服务(或UNIX中的守护程序)。
如果您只想定期执行某项操作,请使用计划任务(或cron
)。
这里的紧要关键是你的短语"must be run once a week at a particular time"
- 去做预定的任务。
答案 2 :(得分:3)
如果你只有一个应用程序,并且你需要它每周运行一次,那么调度程序将会很好,因为不需要在系统上运行单独的服务和进程,这些服务和进程在大多数时间都是空闲的。