我目前有一个自动化的Windows应用程序,每天运行。 目的是访问webservice以下载数据集,插入到sql 2005数据库中。
Windows服务应用程序是否适用于这种情况,它是否会更灵活,并且性能会更好。
答案 0 :(得分:5)
你绝对可以将它作为一项服务,但我认为你不会从中获得任何好处。由于服务始终在运行,因此它们通常用于必须运行的应用程序,因为它们不断检查条件(等待远程处理,每隔n分钟检查一次数据库中的信息等)。
由于您每天运行一次,如果您将其更改,则不会有任何优势。如果您的自动化任务设置正确,则应该在机器开启时运行,就像服务一样。在服务上使用Windows应用程序(特定于控制台)的好处是,如果出现故障,您可以再次启动应用程序并运行它。这对于服务来说并不是那么容易,因为额外的代码必须在程序中,以确保它每天只运行这么多次(在你的情况下一次)。您可能无法让它在启动时执行您的进程,因为您必须考虑重新启动的服务器。这意味着如果您的服务器在进程运行时出现故障,您将不得不知道如何“欺骗”程序,使其认为它应该只运行该进程。 Window的应用程序不会受此影响,因为它们在进程完成后终止,因此可能没有其他代码可以阻止它再次运行该进程。
答案 1 :(得分:2)
即使没有用户主动登录,Windows服务也允许您运行任务。我想说,对于像这样的任务,Windows服务更合适。但是,我怀疑会有任何性能提升。
答案 2 :(得分:1)
如果它只需要每天运行一次(或者只是定期运行),那么在我看来,将其作为服务是一种浪费。大部分时间它都不会做任何事情。
特别是服务没有提高性能,因此我建议将其保留为普通应用程序并使用调度程序每天运行一次。
答案 3 :(得分:0)
如果要将数据插入SQL Server,那么无论如何你都明显依赖于它。我会调查使用SQL代理进行调度。
根据您的处理要求,您可能会发现可以使用SQL Server Integration Services(SSIS)完成所有操作,这些服务在如何安排SQL Server方面有详细记录。
我知道你提到你已经写过了。但是使用SSIS / SQL Agent,您可以“免费”获得一定程度的监控,您可能会发现复制当前代码的工作量很小。同时,DBA可以非常轻松地维护您的代码,而无需访问源代码等。