2009-06-24 54 views
0

我目前有一个Windows应用程序,它是自动的,每天运行。 的目的是访问一个web服务来下载一个数据集,插入到sql 2005数据库中。是一个Windows服务应用程序的正确方法

在这种情况下,Windows服务应用程序是否合适,它是否更灵活,性能会更好。

回答

5

您绝对可以将其作为服务,但我认为您不会从中受益。由于服务始终在运行,因此它们通常用于需要运行的应用程序,因为它们会不断检查条件(等待远程处理,每n分钟检查一次数据库中的信息等)。

由于您的每天运行一次,如果您更改它,您将不会有任何优势。如果您的自动化任务设置正确,它应该在机器开启时运行,就像服务一样。在服务上安装Windows应用程序(特定于控制台)的好处是,如果出现问题,您可以再次启动应用程序并运行它。这对服务来说不会那么容易,因为额外的代码必须在程序中确保它每天只运行很多次(在你的情况下)。您可能无法在启动时执行您的进程,因为您必须考虑重新启动的服务器。这意味着如果你的服务器在程序运行的时候出现故障,你将不得不知道如何“欺骗”程序,使其认为它只应该在那段时间运行这个程序。 Window的应用程序不会因此而受到影响,因为它们会在进程完成后终止,因此可能没有额外的代码来阻止其再次运行该进程。

2

即使没有用户正在主动登录,Windows服务将允许您运行您的任务。我会说,对于这样的任务,Windows服务更适合。不过,我怀疑会有什么表现改善。

+2

仅供参考 - 如果没有用户登录,常规计划任务也可以运行得很好。 – 2009-06-24 11:46:43

+0

它必须是非GUI控制台应用程序,然后, 对? – 2009-06-24 11:51:06

1

如果只需要每天运行一次(或者只是定期运行),那么在我看来,将它作为服务是有点浪费的。大多数时候它只会无所事事。

没有什么特别的服务可以提高性能,所以我建议将它作为一个普通的应用程序使用,并使用调度程序每天运行一次。

0

如果您要将数据插入到SQL Server中,那么您显然对此有依赖性。我将研究使用SQL代理的计划。

根据您的处理要求,您可能会发现使用SQL Server Integration Services(SSIS)可以完成大量工作,这些服务详细记录了如何使用SQL Server进行计划。

我知道你提到你已经写了这个。但是通过SSIS/SQL代理,您可以免费获得一定程度的监控,您可能会发现复制当前代码的工作量很小。同样,DBA可以很容易地维护你的代码,而不需要访问源代码等。

相关问题