2009-11-10 132 views
1

有誰知道一個框架可以讓我在Windows服務中輕鬆託管和配置WCF服務嗎?在Windows服務中託管WCF服務的框架

本來我已經開發,其中一臺主機的應用程序包含每個服務宿主一個Windows服務,以使管理員可以在服務小程序單獨管理這些服務的系統。

然而,其他系統上線來與越來越多的WCF服務,將需要舉辦這樣的,人們越來越擔心,這會變得過於複雜通過服務小應用程序來管理。

來自上方的要求,我們需要配置Windows服務中託管了哪些服務,啓動和停止他們的要求,並允許易於部署的能力。

我相信在服務範圍內,我們可以託管一個管理WCF服務,這將允許我們控制其他服務的行爲,但是如果有人已經爲此創建了框架,我非常樂意使用該輪子已經發明瞭。

+0

我一直在忙,而且給了一個額外的一天還有希望有人提供了一個更合適的解決辦法,但是,現在,它似乎沒有人已經解決了,我一直在給定的問題我將不得不實現我自己的框架 – 2009-11-11 22:34:05

回答

2

好,託管在Windows NT服務的WCF服務是不是真的那麼難 - 所以我不認爲有一個大大的「框架」適用於該...

基本上,你需要

  • 聲明一個變量ServiceHost每個WCF服務要主持
  • 在NT服務的OnStart()方法覆蓋,實例化,並在OnStop()實現方法具打開服務主機
  • d服務主機再次關閉服務主機

這就是所有的問題 - 那麼在這種情況下,您希望將哪個方面委託給框架?您還有哪些其他方面或問題需要處理?

如果您想影響單個NT服務中的單獨服務實例,則必須檢查NT Service類的OnCustomCommand方法重寫。

從外面看,你可以創建一個ServiceController,然後調用ExecuteCommand該控制器上。不幸的是,你只能發送一個int作爲參數。

所以我想在這種情況下,你必須定義如每個服務的「服務常數」,例如const int MyService1 = 10; const int MyServive2 = 20;,然後使用該基本服務常量來啓動WCF服務,該基本常量+ 1來停止它,或沿着這些行。

+0

這就是我目前所擁有的,但我們希望從單個Windows服務託管多個服務,但動態管理在該服務中運行的是哪個WCF服務 – 2009-11-10 14:04:15

+0

啊好吧,所以您希望能夠向NT服務發信號以關閉或重新啓動託管的WCF服務?聽起來好像是個好主意,但我認爲沒有任何框架(還沒有) - 由您來創建並與WCF世界分享! – 2009-11-10 14:20:43

+0

創建在具有關閉其他主機的功能的相同服務中運行的「管理」或「管理員」主機。這應該是訣竅... – Kwal 2009-11-10 14:45:53

0

這歸結爲個人意見。我發現通過標準MMC管理單元控制一百種不同的服務沒有問題。它還允許網絡管理員使用WMI,PowerShell,商業工具等爲整個域集中管理它們。如果您推出自己的管理系統,則放棄這種簡單的集中控制。

至於部署,只需創建一個自定義動作一氣呵成安裝所有的服務。

相關問題