【发布时间】:2009-06-24 11:41:41
【问题描述】:
我目前有一个自动运行且每天运行的 Windows 应用程序。 目的是访问网络服务以下载数据集,插入到 sql 2005 数据库中。
是不是适合这种情况的windows服务应用,会不会更灵活,性能会更好。
【问题讨论】:
标签: .net sql web-services automation
我目前有一个自动运行且每天运行的 Windows 应用程序。 目的是访问网络服务以下载数据集,插入到 sql 2005 数据库中。
是不是适合这种情况的windows服务应用,会不会更灵活,性能会更好。
【问题讨论】:
标签: .net sql web-services automation
您绝对可以将它作为一种服务来使用,但我认为您不会从中获得任何好处。由于服务始终在运行,它们通常用于必须运行的应用程序,因为它们不断检查条件(等待远程处理,每 n 分钟检查一次数据库中的信息等)。
由于您的每天运行一次,因此如果您更改它,您将不会有任何优势。如果您的自动化任务设置正确,它应该在机器开启时运行,就像服务一样。拥有 Windows 应用程序(特别是控制台)优于服务的优点是,如果出现故障,您可以再次启动应用程序并运行它。对于服务来说,这不会那么容易,因为程序中必须有额外的代码,以确保它每天只运行这么多次(在你的情况下是一次)。您可能无法让它在启动时执行您的进程,因为您必须考虑正在重新启动的服务器。这意味着如果您的服务器在进程应该运行时出现故障,您将不得不知道如何“欺骗”程序认为它应该只在该时间运行该进程。 Window 的应用程序不会受此影响,因为它们会在进程完成后终止,因此可能没有额外的代码来阻止它再次运行进程。
【讨论】:
即使没有用户主动登录,Windows 服务也允许您运行任务。我想说,对于这样的任务,Windows 服务更合适。但是,我怀疑是否会有任何性能改进。
【讨论】:
如果它只需要每天(或只是定期)运行一次,那么在我看来,将其作为服务是一种浪费。大多数时候它只是什么都不做。
没有什么特别的服务可以提高性能,所以我建议把它作为一个普通的旧应用程序,并使用调度程序每天运行一次。
【讨论】:
如果您将数据插入到 SQL Server 中,那么无论如何您显然都依赖于它。我将使用 SQL 代理调查调度。
根据您的处理要求,您可能会发现您可以使用 SQL Server Integration Services (SSIS) 完成所有工作,该服务已详细记录了如何使用 SQL Server 进行调度。
我知道你提到你已经写了这个。但是使用 SSIS / SQL 代理,您可以“免费”获得一定程度的监控,并且您可能会发现复制当前代码并不费力。此外,DBA 可以非常轻松地维护您的代码,而无需访问源代码等。
【讨论】: