繁体   English   中英

Windows服务与Winforms / WPF桌面应用程序

[英]Windows Service Versus Winforms / WPF desktop app

我目前正在编写一个Windows服务,该服务的唯一目的是轮询数据库,并根据生成的信息更新一些其他数据。 我将其写为Windows服务是因为它似乎是理想的平台。 我不需要任何用户交互。

但是,在开发它时,我注意到一个或两个问题使开发Windows服务比开发简单的Windows应用程序更加耗时。 有没有人有这种选择的经验? 这种应用的最佳做法是什么? 是否有任何理由使Windows服务更可取?

服务提供的功能远远无法解决开发imoho的问题。 远程轮询,无需用户登录,内置故障恢复和监视功能。

我也刚刚进行了第一项服务,并且发现它们不太容易调试或测试。 您可以安装并启动服务,然后将调试器附加到该进程。 或者,您可以将服务作为控制台应用程序运行,以测试功能。 像这样的东西http://tech.einaregilsson.com/2007/08/15/run-windows-service-as-a-console-program/

服务是否可取是您的电话。 重新列出服务的充分理由。 根据您的描述,听起来像某些SQL的计划任务可以完成您想要的。

要直接在Visual Studio下调试Windows服务,请将此代码段添加到Main()下的服务设计器类中。

Shared Sub Main()
    #If DEBUG Then
        Dim service As New YourServiceClass
        service.Execute()
        System.Threading.Thread.Sleep(System.Threading.Timeout.Infinite)
    #Else
        Dim ServicesToRun() As System.ServiceProcess.ServiceBase

        'More than one NT Service may run within the same process. To add
        'another service to this process, change the following line to
        'create a second service object. For example,

        ServicesToRun = New System.ServiceProcess.ServiceBase() {New YourServiceClass}

        System.ServiceProcess.ServiceBase.Run(ServicesToRun)

    #End If
End Sub

这是vb.net代码,但C#应该做同样的事情。 我已经管理了几个类似的Windows服务,没有任何问题。 如果调试,则应在哈希之前。

您应该意识到的一件事是, 服务将无法使用视频硬件加速 如果您不执行任何图形工作,则可以放心地忽略该限制,但是如果您进行图形密集型操作(例如与WPF相关的操作),则必须牢记这一点。

我承认这不是一个常见的情况,但是我已经在一个项目中使用服务来提供WPF控件。

这样做的原因是Session0隔离 ,描述在这里

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM