簡體   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