2011-06-19 41 views
1

我有在後臺運行的C#應用​​程序。此應用程序的執行可能需要1到10分鐘,並且它正在與從一開始直到執行結束時調用多個Web方法的WCF服務進行通信。在運行時重新分配客戶端端點

爲了避免創建/關閉太多的代理對象,在進程期間我有一個代理對象。我有幾個配置IIS的服務器盒,WCF服務的副本位於此處,我想用這兩個盒子分散負載。由於缺乏昂貴的負載平衡解決方案,我想要更改代理的端點地址,以便與每個方法調用的不同服務器盒進行通信。

我的第一個方法調用之前試過這樣:

client.Endpoint.Address = new EndpointAddress("http://box1.wcfserviceaddress.com/MyService.svc"); 

改變這種進一步的路線不會有任何影響,盒子連接到第一不斷接收方法調用客戶端。另外,將服務實例管理從會話更改爲每次呼叫沒有任何區別。

這樣做還是需要爲每個方法調用創建一個客戶端?

問候, F.

回答

3

代理從ClientBase它實現ICommunicationObject的。來自CommunicationObject或執行ICommunicationObject的所有類共享相同的行爲 - 它們只能在Created狀態中配置。一旦通信對象從Created狀態移動到第一次使用代理(它將狀態更改爲Opened)後,配置無法更改,並且由於該設置地址而不起任何作用。使用新地址獲取代理服務器的唯一方法是創建一個新地址。

0

一旦客戶端被創建並打開,我99%確定(沒有仔細檢查是100%),你不能更改任何它的ABCs。你將不得不爲每臺服務器完成代理。