2009-09-22 171 views
10

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

我不太愿意让它们中的每一个都作为Windows服务运行而不是计划任务,因为它比监视任务更容易监视Windows服务。有些人完全相反。最后,我们都没有太多的经验来提供这两种方法之间的实际比较。我正在寻找一些其他人经历过的反馈。

回答

6

如果它不断运行 - windows服务。

如果需要以各种间隔运行 - 计划任务。

4

具有内置功能的Sceduling作业是完全有效的用途。您必须重新创建全部功能才能创建出色的服务,除非您想对特定事件做出反应,否则我认为没有理由将夜间工作转换为服务。

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

我认为它重新发明轮子

2

虽然没有什么错误使用任务计划程序,它本身就是,一个服务。但是,在我工作的地方我们有相同的要求,而且我们有通用的计划来完成其中的几项工作。我解释你的帖子,说你会为每个任务运行单独的服务,我会考虑编写一个单一的数据库驱动(服务)程序来完成你所有的任务,这样,当你添加一个新的任务时,它只是一个简单的数据录入杂事,而不是一个全新的编程程序。如果您练习变更控制,这种差异可能会很大。如果你有更多的任务,这些努力可能是可以接受的。这种方法还可以让您制定出最适合您业务的记录机制。

这是我们的质量要求为我们的任务计划文件的一部分,给你从哪里开始的想法:

  1. 这个程序需要将数据库驱动。

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

  3. 程序需要能够通过以下方式来处理“工作”:

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

  5. 乔布斯需要能够将文件从源复制到目标位置或

  6. 复制源中的文件,到分段位置,进行“处理”,然后复制任何原始文件或“处理”到目标位置的结果或

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

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

  9. 的“处理”,就可以了,加密/解密文件,解析数据文件格式正确,通过终端仿真等将文件送入大型机,通常通过调用命令行将参数传递给.exe来执行.exe需要根据需要自行清理。即删除中间或原始文件,将文件复制到归档位置等。

  10. 该程序需要能够确定作业的每个阶段的成功和失败,并采取适当的操作,这将是日志记录,并可能其他通知时,中止失败进一步处理,等等

  11. 作业需要被配置在特定的设定的时间,可以激活,或者在一定的时间间隔(任选地在特定组小时)即,从9:00每15分钟 - 5: 00。

  12. 需要有一个UI才能添加新的作业。

  13. 需要有一个按钮来触发一个工作,就好像一个计时器事件已经激活它一样。

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

所有这一切的前提是它是给定您编写自己的软件的前提。市场上还有几种企业任务调度程序。现成购买可能是更好的解决方案。

+0

感谢所有的建议。很多好主意。 – user177213 2009-09-24 12:03:22

+0

听起来对我来说,SQL Server Integration Services可能非常适合您提到的需求,并且有一些自定义ScriptTasks用于未开箱即用的操作。如果您已经为这些任务实施了.exe(如您所述),那么您可以在SSIS框架内使用它们。可以按需或按计划使用SQL Server作业管理部署。 – 2013-09-23 14:05:52

+0

当然,这是基于您已经使用SQL Server的假设 - 我不知道其他供应商提供了哪些替代方案... – 2013-09-23 14:06:30

5

计划任务 -

  1. 当在某些固定/预定义计划上执行活动时。
  2. 它占用更少的内存和OS资源。
  3. 不需要安装。
  4. 它可以有UI(例如发送提醒邮件欠款。)

Windows服务 -
  1. 当需要继续监测。
  2. 它使操作系统繁忙,消耗更多。
  3. 需要在更改版本时进行安装/卸载。
  4. 根本没有用户界面(例如,一旦它到达处理邮件)

使用它们明智地