2013-03-15 226 views
1

我有一個WCF服務託管在負載均衡的情況下。該服務使用IIS進行託管。有兩臺服務器負載均衡。客戶端如何使用負載均衡的WCF服務

以下是服務器中的end pointshttps://labA.myCompany.com:44330/MyService/InternalService.svc https://labB.myCompany.com:44330/MyService/InternalService.svc

我把host base address作爲

baseAddress=" https://test-LoadBalanced.myCompany.com/MyService". 

該主機基址是從負載均衡的地址。

當我輸入https://test-LoadBalanced.myCompany.com/MyService/InternalService.svc我可以得到服務頁面。裏面有時我得到了ServerA框的端點地址和某個時間服務器B框的端點地址的wsdl鏈接。

參考

的問題的答案WCF Service Endpoints vs Host Base address

當主辦IIS WCF服務,基地址只能是URL到.svc文件。

以下是WCF Addressing In Depth

客戶沒有服務的基址的認識,有沒有必要來支持他們對導線的側面類似的東西。因此,在客戶端對象模型或配置部分中找不到與基址相關的任何內容。客戶只需選擇一個特定的端點,該端點始終配置有絕對地址,並且該絕對地址決定了在傳輸過程中將使用的地址。

Load Balancing

默認情況下,在basicHttpBinding的與保持活動的價值,能夠幫助客戶建立支持他們的服務的持續連接信息發送連接HTTP標頭。這種配置提供了增強的吞吐量,因爲之前建立的連接可以被重複使用,以發送後續消息到同一臺服務器但是,連接重用可能會導致客戶端與負載平衡服務器場中的特定服務器強關聯,從而降低輪詢負載平衡的有效性。如果此行爲不受歡迎,則可以在服務器上使用具有CustomBinding或用戶定義的綁定的KeepAliveEnabled屬性禁用HTTP Keep-Alive。

客戶

我使用了負載均衡的地址創建一個客戶端。但是,在客戶端配置中,端點地址是服務器A盒的地址;不是負載均衡地址。

問題

那麼,如何在客戶端可以使用的負載均衡的性能優勢?它會一直打到服務器A以獲得服務操作,不是嗎?

回答

1

將客戶端的代碼/配置更改爲指向該服務的負載平衡端點。

基地址是服務器唯一的問題。它爲您提供了一種指定所有其他相對URI所基於的基本URI的方式。

如果您的客戶端發送HTTP消息到您的負載均衡器,它們將被轉發到服務器。要做到這一點,只需使用該服務的負載平衡器配置客戶端即可。

這也可能是明智的禁用HTTPkeep-alive服務器也以阻止客戶端形成與LB的後面的服務器粘性關係

1

WSDL僅在客戶端應用程序的設計時使用。一旦該向導創建了所有客戶端類,就可以將客戶端應用程序指向負載平衡器。