我們目前有一個WCF服務,它開始達到它的極限性能明智。WCF服務設計
我們決定添加另一臺服務器,它將託管WCF服務的另一個實例。我們有網絡應用程序,它們必須根據上下文...與特定的服務器進行通信。如果Web應用程序正在處理來自ServiceInstance1的對象,則請求必須定向到ServiceInstance1的EndPoint。如果Web應用程序正在處理ServiceInstance2中的對象,則請求必須定向到ServiceInstance2的EndPoint。
我最初認爲可以創建「中間服務」或「服務管理器」,Web應用程序的服務參考將從單個服務實例更新到「中間服務」或「服務管理器」,並且所述服務將會充當各種服務實例的「經紀人」。
這是如何完成的?
我目前在Manager中添加了一個ServiceReference給每個服務,但是看起來一旦服務被「引用」,它的類型就變得特定於ServiceReference的類型,例如
ServiceInstance1的類型都是{ServiceInstance1}。 ServiceInstance2的類型都是{ServiceInstance2}。
我需要類型在Web應用程序端是相同的,所以這顯然是錯誤的方式來做到這一點。
我也希望在引用「中間服務」或「服務管理器」生成的客戶端上調用正確的服務實例時調用方法,例如,
IServiceManager.GetProjectById({GUID}) ->
回來的ServiceManager - > 決定哪臺主機有該項目,並從正確的服務實例返回ProjectObject。
其中ProjectObject是一個類型定義在ServiceInstance1和ServiceInstance2中。
我認爲原始服務需要將一些DLL拉出來,以便它們可以從Web應用程序端和ServiceManager中引用,並且可以創建GenericWCF客戶端。
如果我是對的hooray對我如果有人能指出我在正確的方向,我將不勝感激。如果我錯了,有人可以責罵我,告訴我這是如何正確完成的!
使用路由策略,你只會將你的擴展限制從後端服務器轉移到路由服務器。它還增加了一個你必須購買,維護,安全的服務器。一個穩定的負載平衡策略會讓你更快,更快。 – Mark 2010-08-27 16:24:34