2010-10-22 52 views
1

我目前正在編寫一個windows服務,它的唯一目的是輪詢一個數據庫,並基於結果信息更新一些其他數據。我把它寫成Windows服務,因爲它似乎是一個理想的平臺。我不需要任何用戶交互。Windows服務與Winforms/WPF桌面應用程序

但是,在開發它時,我注意到一個或兩個問題使開發Windows服務更加耗時,開發一個簡單的Windows應用程序。有沒有人有這種選擇的經驗?這種應用程序的最佳做法是什麼?是否有任何理由使用Windows服務更可取?

回答

5

發展imoho的問題遠遠超出了服務提供的功能。遠程輪詢,無需用戶登錄,內置故障恢復和監控功能。

+2

同意,一旦設置正確,服務就可以完成工作,而無需擔心其他任何事情。 – alex 2010-10-22 12:13:21

1

我剛剛做了我的第一個服務,並注意到它們不太容易調試或測試。您可以安裝並啓動該服務,然後將調試器附加到該進程。或者,您可以將該服務作爲控制檯應用運行,以測試功能。像這樣http://tech.einaregilsson.com/2007/08/15/run-windows-service-as-a-console-program/

服務是否可取與否是您的電話。重新列出服務的良好理由。根據你的描述,這聽起來像是一些SQL的計劃任務會完成你想要的。

1

要直接在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服務,沒有任何問題。如果調試應該以散列開頭。

+0

謝謝ChrisF。當我將代碼粘貼到答案窗口時,哈希從代碼片段中消失。這就是爲什麼我不得不添加一個評論,如果調試應該在一個哈希之前 – PradeepGB 2010-10-23 18:32:45

0

你應該知道的一件事是服務將無法使用視頻硬件加速。如果你沒有做任何圖形化的工作,那麼你可以放心地忽略這個限制,但是如果你有圖形密集型操作(例如WPF相關的),你必須牢記這一點。

我承認這不是一種常見的情況,但我曾參與一個項目,其中一個服務提供了WPF控件。

原因是Session0隔離,描述here

相關問題