6

我有一些代码需要放在 Windows Server 2003 机器上并每分钟运行一次。

推荐的处理方法是什么?是否可以将其设计为控制台服务并让任务调度程序每分钟都命中它?(这甚至可能吗?)我应该把它吸起来,然后把它写成一个 Windows 服务吗?

4

8 回答 8

12

由于它需要每分钟运行一次,我建议编写一个 Windows 服务。它不是很复杂,如果您以前从未这样做过,那么您最好了解它是如何完成的。

我不建议每分钟调用一次计划任务。

于 2009-04-06T18:51:01.690 回答
5

我会说把它吸起来,把它写成一个 Windows 服务。我还没有发现计划任务非常可靠,当它不运行时,我还没有找到一种简单的方法来找出它为什么不运行。

于 2009-04-06T18:50:13.110 回答
3

Windows 计划任务对于我们的目的来说相当可靠,由于它们易于安装和高级恢复功能,我们几乎在所有情况下都喜欢它们而不是 Windows 服务。如果编写的代码的一部分最终被锁定或循环在一段不应包含的代码中,则 Windows 服务的始终在线性质最终可能会成为问题。我们通常将代码编写在类似这样的时尚

Init();
Run();
CleanUp();

然后,作为计划任务的一部分,我们对进程可以运行多长时间设置了时间限制,如果进程运行时间更长,则让它终止进程。如果我们确实有一段代码有问题,计划任务将杀死它,该进程将在下一分钟启动。

于 2009-10-14T06:29:17.420 回答
2

如果您需要让它每分钟运行一次,我会将其构建为 Windows 服务。我不会将调度程序用于日常任务之外的任何事情。

于 2009-04-06T18:51:29.893 回答
2

我会说这取决于它在做什么,但总的来说,我总是赞成使用最少的层。如果您将其编写为控制台服务并使用任务调度程序,那么您有两个地方需要维护。

如果您将其编写为 Windows 服务,那么您只有少一个地方可以检查以防出现问题。

于 2009-04-06T18:53:12.837 回答
2

在寻找定期服务帮助时,我看到了Jon Galloway 的一篇非常好的文章

如果将 Windows 服务用于计划任务,则会有各种缺点。我同意了。我建议使用任务计划,实现简单。请参考实现任务调度器的详细信息。希望此信息有助于最终确定实施方法。

于 2010-03-09T07:42:24.427 回答
1

唯一要考虑的另一点是,如果您的工作涉及某种数据库交互,请考虑查看数据库提供的集成/调度服务。

例如,为您的 SQL Server 相关服务创建一个 SSIS 包可能看起来有点矫枉过正,但它可以很好地与环境集成,并且已经有了自己的日志记录/错误检查机制。

于 2009-04-06T19:01:25.737 回答
0

我同意,即使是创建控制台可执行文件并将其安排为每分钟运行一次,也是一种浪费。我建议探索类似Quartz.Net的东西。这样,您可以创建一个简单的作业并安排它每分钟运行一次。

于 2009-04-06T18:56:57.477 回答