2012-09-08 46 views
5

我創建了一個windows服務項目。如果你創建一個新的項目,你得到的東西是這樣的:我應該只使用一項新服務()還是更多?

ServiceBase[] ServicesToRun; 
ServicesToRun = new ServiceBase[] 
{ 
    new Service1() 
}; 
ServiceBase.Run(ServicesToRun); 

現在我有一些功能和計時器添加到我的Service1()類,然後一切都很好。

現在,讓我們說,我的部門應該做的一些東西,如:閱讀一些文件,刪除某些文件夾,檢查連接...

和他們都應該運行異步。現在什麼更好?複製所有的服務1()的functiont,而不是其他任何變動或創建的每一個「東西」的新類(服務1(),服務2(),...),並添加他們像

ServicesToRun = new ServiceBase[] 
{ 
    new Service1(), 
    new Service2() //not sure this will compile 
}; 

剛問。也許我不明白100%服務是如何工作的...

+0

有趣的問題。我想知道,但從來沒有嘗試過。哦,它肯定會*編譯* - 問題真的是:它*工作*。鑑於API接受一個數組,我的默認假設是「是的,這可以正常工作」。但是......沒有嘗試過。當然,由於服務需要啓動一個新的線程,您可以使用一個服務實例來啓動3組操作, –

+0

您是否看到了這個? http://stackoverflow.com/questions/1688275/can-i-have-multiple-services-hosted-in-a-single-windows-executable - 它討論瞭如何但不是爲什麼。這真的是一個設計問題,取決於你在做什麼。 – ongle

回答

0

這可能對於這個問題來說有點過於籠統,但Windows服務應該執行單個或一組相關功能。一般來說,服務越少越好,但一旦服務開始做多件事情,考慮將它們分開:

  1. 它們需要不同級別的安全性。例如,如果某些功能需要管理員訪問權限,有些功能不需要,請考慮將其分爲不同的服務。
  2. 用戶可能或想要運行一個功能(即服務),而不是其他功能。例如,某些功能可能取決於可選組件或可能未安裝的組件。
相關問題