【问题标题】:Is a Windows Service application the right approachWindows 服务应用程序是正确的方法吗
【发布时间】:2009-06-24 11:41:41
【问题描述】:

我目前有一个自动运行且每天运行的 Windows 应用程序。 目的是访问网络服务以下载数据集,插入到 sql 2005 数据库中。

是不是适合这种情况的windows服务应用,会不会更灵活,性能会更好。

【问题讨论】:

    标签: .net sql web-services automation


    【解决方案1】:

    您绝对可以将它作为一种服务来使用,但我认为您不会从中获得任何好处。由于服务始终在运行,它们通常用于必须运行的应用程序,因为它们不断检查条件(等待远程处理,每 n 分钟检查一次数据库中的信息等)。

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

    【讨论】:

    • 和我想的差不多,所以答案可能是,如果我希望更新频繁,定期更新,是的,每天几次坚持使用 windows 应用
    • 我对 Windows 服务的一般经验法则是,如果我必须做一些需要它每分钟运行的事情,程序必须不断运行以检查条件,我创建一个服务。如果不是,我尝试将其保留为常规应用程序。
    【解决方案2】:

    即使没有用户主动登录,Windows 服务也允许您运行任务。我想说,对于这样的任务,Windows 服务更合适。但是,我怀疑是否会有任何性能改进。

    【讨论】:

    • 仅供参考 - 如果没有用户登录,常规计划任务也可以正常运行。
    • @Thorsten & Eric - 没错,当前运行的 Windows 应用程序是自主的
    • @Thorsten - 是的,根本没有用户界面。
    【解决方案3】:

    如果它只需要每天(或只是定期)运行一次,那么在我看来,将其作为服务是一种浪费。大多数时候它只是什么都不做。

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

    【讨论】:

      【解决方案4】:

      如果您将数据插入到 SQL Server 中,那么无论如何您显然都依赖于它。我将使用 SQL 代理调查调度。

      根据您的处理要求,您可能会发现您可以使用 SQL Server Integration Services (SSIS) 完成所有工作,该服务已详细记录了如何使用 SQL Server 进行调度。

      我知道你提到你已经写了这个。但是使用 SSIS / SQL 代理,您可以“免费”获得一定程度的监控,并且您可能会发现复制当前代码并不费力。此外,DBA 可以非常轻松地维护您的代码,而无需访问源代码等。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-03-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-03-20
        相关资源
        最近更新 更多