2017-08-09 60 views
0

我正在研究項目,我們已決定將我們的後臺任務(網絡,CPU和IO密集型)分成三個Windows服務。Windows服務運行自己的進程與共享進程之間的差異

現在的問題是,我們是應該將所有三種服務都託管到一個進程中還是使用自己的進程創建三個獨立的服務。

Windows服務項目模板允許創建多個服務,安裝時它們將在服務控制管理器(SCM)中創建單獨的條目並且可以獨立控制。這裏的好處是更好的代碼管理和代碼重用。

但是,如果有任何性能上的缺陷,這是我們首先有多項服務的主要原因,我寧願放棄這項優勢。

請指教。

+0

您希望解決哪些性能問題(3個附加進程vs 1個附加進程vs無論您的現有設置是什麼)將會修復?增加更多IPC /線程來爭奪相同數量的CPU能力往往會降低性能,而不是提升性能。 –

+0

服務如何與對方進行溝通?那麼有沒有可能創建像網絡或IO這樣的單一服務的多個實例? –

+0

@Damien_The_Unbeliever,是真的,但不適用於這種情況下,在從網絡下載文件時使用了多少CPU?它在那段時間當然可以處理CPU密集型任務。也就是說,這裏的問題是理解共享單個進程p.exe vs svc1,svc2和svc3與自己進程svc1 - > p1.exe,svc2 - > p2.exe,svc3 - > p3之間的區別。可執行程序。無論在哪種情況下,我們都決定要有三項服務。 –

回答

0

我的建議是去使用topshelf或其他技術創建的Seperarte窗口服務,因此它們是獨立paltform的

可擴展性伊斯利可擴展的按照需求,如果一個服務被越來越那麼其他的,那可以通過運行同一個服務的多個實例來擴展一個服務。

並行處理由於服務是獨立的,它們可以平行工作,因此性能得到改善。

相關問題