预定任务或Windows服务

时间:2009-09-22 14:53:48

标签: windows-services scheduled-tasks

我的团队正在进行更好的辩论:Windows服务或预定任务。我们有一个专门用于运行作业的服务器,目前它们都是计划任务。某些作业会获取文件,重命名并将它们放在网络上的其他目录中。其他作业从SQL中提取数据,对其进行修改并将其发送到其他位置。其他工作ftp文件输出。有很多种,但总而言之,它们相当简单。

我很偏向于将这些服务作为Windows服务而不是计划任务运行,因为监视Windows服务比计划任务更容易。有些人截然相反。最后,我们都没有那么多经验来提供两种方法之间的实际事实比较。我正在寻找其他人经历过的一些反馈。

4 个答案:

答案 0 :(得分:6)

如果它经常运行 - Windows服务。

如果需要以不同的时间间隔运行 - 计划任务。

答案 1 :(得分:5)

预定任务 -

  1. 当要对某些固定/预定义的时间表执行活动时。
  2. 需要更少的内存和资源操作系统。
  3. 不需要安装。
  4. 它可以有UI(例如向违约者发送提醒邮件)

Windows服务 -
  1. 当需要继续监控时。
  2. 通过消耗更多操作系统使操作系统忙碌。
  3. 需要安装/卸载时更改版本。
  4. 根本没有用户界面(例如,邮件到达后立即处理)

明智地使用

答案 2 :(得分:4)

使用内置功能强制执行作业是完全有效的用途。您必须重新创建完整的功能才能创建良好的服务,除非您想对特定事件做出反应,否则我认为没有理由将夜间工作转移到服务中。

当你想要在文件发布到文件夹后处理文件时,它会有所不同,这就是我要创建服务的东西,那就是使用文件系统观察器来监视文件夹。

我认为它重新发明轮子

答案 3 :(得分:2)

虽然使用任务计划程序没有任何问题,但它本身就是一项服务。但是我们在工作中有相同的要求,我们有通用程序来完成其中的几项工作。我解释你的帖子说你会为每个任务运行个人服务,我会考虑编写一个数据库驱动(服务)程序来完成你的所有任务,这样,当你添加一个新任务时,它只是一个数据输入家务,而不是一个全新的编写程序。如果您实施变更控制,这种差异可能很大。如果您有多个任务,那么努力可能是可以胜任的。此方法还允许您创建最适合您的操作的日志记录机制。

这是我们的任务计划的一部分要求文件,让您了解从哪里开始:

  1. 此程序需要由数据库驱动。

  2. 它需要作为Windows服务运行。

  3. 该计划需要能够以下列方式处理“工作”:

  4. 作业需要能够检查源文件是否存在,并根据源文件的存在与否来采取行动。 (即继续处理,vs报告文件不在那里vs忽略它,因为文件不在那里并不重要。

  5. 工作需要能够将文件从源位置复制到目标位置或

  6. 将文件从源复制到分段位置,执行“处理”,然后将原始文件或“处理”结果复制到目标位置或

  7. 将文件从源复制到分段位置,执行“处理”,处理是最终结果。

  8. 作业可能复制到的来源和目的地可能完全不同:UNC,SFTP,FTP等

  9. “处理”可以是,加密/解密文件,解析数据文件的格式正确,通过终端仿真将文件提供给大型机等,通常通过调用命令行传递参数来实现到.exe

  10. 乔布斯需要能够根据需要自行清理。即删除中间或原始文件,将文件复制到存档位置等

  11. 程序需要能够确定作业的每个阶段的成功和失败,并采取适当的行动来记录,并可能通过其他通知,中止进一步的失败处理等。

  12. 需要将作业配置为在特定设定时间或某些时间间隔(可选择在特定设定时间内)激活,即从9:00 - 5:00每隔15分钟激活一次。

  13. 需要有一个用户界面来添加新职位。

  14. 需要有一个按钮来按下作业,就像定时器事件已经激活它一样。

  15. 程序的标准显示应向操作员显示正在进行的操作以及程序是否正常运行。

  16. 所有这一切都是基于这样一个前提:你可以编写自己的软件。市场上也有几种企业任务调度程序。从货架上购买可能是一个更好的解决方案。