[英]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.