2011-04-20 53 views
3

我正在嘗試創建一個WCF服務,該服務託管在一個Windows服務中。這個Windows服務將被部署在多臺機器上(根據負載情況,可變數量的機器)。將有一個業務層將排隊「工作」,並將每個工作傳遞給這些窗口服務之一,具體取決於哪一個是免費的。C#Windows服務在多臺機器上運行?

我對如何實現這一點感到困惑。我可以編寫WCF並託管Windows服務,將它們安裝到我需要的任何機器上。然後,從將發送作業到這些服務的層,我以某種方式告訴它要發送到哪臺機器(通過WCF服務接口)。這是我對如何去做最困惑的一點。

回答

4

我已經完成了這個確切的事情。你所描述的是正確的(儘管在分佈式環境中保持節點同步並且不允許它們相互踩在一起可能很粗糙)。爲了查找端點,我建議使用WS-Discovery,如http://msdn.microsoft.com/en-us/library/ee354381.aspx所述。如果你不使用.NET4,你仍然可以使用服務或端點行爲來實現發現。

+0

感謝您的回覆,並且所有人都會照辦。我用DCOM和C++做了很多這類事情,但這是我第一次嘗試.NET和WCF。從閱讀中,我可以看到您創建了一個WCF服務,然後爲它創建一個主機。但似乎主機不必駐留在同一臺機器上。這是真的?我一直在想,我創建了一個WCF服務和一個主機,並且它是駐留在每臺機器上的主機和WCF服務,然後我的客戶機通過在其servicehost構造函數中指定機器(或任何沒有我返回的機器)到我的筆記)。 – Jonnster 2011-04-21 08:09:34

+0

不,主機和WCF服務必須在同一臺機器上運行。將主機想象成main()方法,將WCF服務看作是在主方法中運行的一組對象。 – NateTheGreat 2011-04-21 12:17:16

+0

謝謝。這是我的想法,但我在網上閱讀了一些不同的建議。這對我來說沒有任何意義,所以感謝您澄清這一點。 – Jonnster 2011-04-21 15:06:44

1

您正在談論一個NLB解決方案。

+0

+1。這是動態NLB羣集的典型問題。只需在中央節點上安裝NLB軟件(有幾個選項可供選擇)。每次添加或刪除節點時,您的「業務層」都必須重新配置NLB羣集。 – 2011-04-21 02:55:16

2

與其他WCF服務一樣,您的服務將公開端點。客戶只需像往常一樣發送到這些終端。

也許你不熟悉代理構造函數的重載?有一些接受端點地址,允許客戶端選擇使用哪個服務端點。

相關問題