2012-10-16 29 views
2

在我們的系統中有多個「站點」通過WCF相互通信。每個站點通過NetTCP綁定公開〜20個接口。WCF頻道太多

當一個站點使用對等站點的接口時,它將爲每個通道打開一個單獨的TCP套接字。這意味着如果我想要定期使用所有的接口,〜20個TCP套接字將爲每個對等站點保持打開狀態。

每個網站擁有的同行數目目前相對較少(10-15),但在不久的將來這將增加到約100個。我擔心的是,這將需要每個站點有大約2000個傳入的套接字,這看起來過多。我不能把手指放在一個特定的問題上,但它只是感覺不對。例如,這大大超過WCF的默認MaxConcurrentConnections(默認值爲10)。

這是一個很好的系統設計?我應該考慮將所有這些接口整合到一個單一的接口中嗎?我能夠在單個通道上同時發送消息嗎(我想不是)?也許我應該考慮一個消息隊列系統?

任何意見或想法都會受到歡迎。

+0

@Fabske它似乎是過時的.NET 4.5 :(請參閱http://msdn.microsoft.com/en-us/library/system.servicemodel.netpeertcpbinding.aspx – telewin

回答

0

您是否嘗試啓用PortSharing?即http://msdn.microsoft.com/en-us/library/ms734772.aspx

+0

也許我正在閱讀它錯誤的,但我認爲它不會幫助我,我擔心的是單個客戶端必須打開20個不同的套接字才能使用所有服務,即使使用PortSharing,情況也不會如此嗎?客戶端仍然會必須爲每個接口調用例如'ChannelFactory.CreateChannel'。 – telewin