2012-01-22 61 views
12

任何人都可以告訴我是否有任何其他Windows服務?我的問題的原因是,我發現Windows服務很難測試,因爲它需要先安裝。C#Windows服務替代

謝謝。

+1

您的聲明:「我的問題的原因是我發現windows服務很難測試,因爲它需要先安裝。」我想就此說,您可以通過首先編寫它的整體來測試窗口服務代碼按鈕在表單中單擊。當您對錶單的代碼感到滿意後,可以將該代碼複製並粘貼到Service.cs文件中。 –

+0

我必須同意這一點上的OP,服務很難排除故障,特別是在生產環境中。但是,是的,有辦法來緩解這個問題,通過編寫代碼首先作爲控制檯/贏取窗體運行。對於安裝問題和特權,儘管 –

回答

5

這只是要求正確組織和分解代碼,所以它不需要需要從服務方法中調用。 IE,你有一個函數調用來運行一切 - 可以從服務中調用,或者通過Main方法調用 - 或者由NUnit等調用。

否則,如果你仍然想要一個替代方案, Main方法,然後運行您的程序作爲Windows計劃任務的一部分。

+3

是最好的選擇,但它不是那麼簡單。您將會遇到特定於Windows服務的時間錯誤,如安裝問題,日誌記錄,訪問衝突等,這些都很難測試。您可以將調試程序附加到進程中,但仍然不是查找錯誤的理想方法。 –

0

您可以考慮使用Windows Azure Worker角色。您將獲得一個正在運行的服務,例如也託管在雲中的環境。

3

您最佳的Windows服務替代方案是Windows Server AppFabric。關於使用它,這裏有很好的blog entry

但是,我認爲這不一定更容易測試。測試的最佳選擇是從控制檯運行Windows服務。這可以通過實例化服務對象並公開一個方法來啓動它來完成。

13

查看Topshelf project。簡單的控制檯應用程序,但可以安裝爲Windows服務。