2011-09-18 59 views
6

我很快就參加了70-513考試。轉儲中有一個問題,我不明白。WCF - IDuplexSessionRouter VS IRequestReplyRouter

WCF服務實現與單向和請求 - 應答操作的合同。該服務通過TCP傳輸暴露。客戶端使用路由器與服務進行通信。

答案表示使用IDuplexSessionRouter而不是IRequestReplyRouter。我可以知道爲什麼不能使用IRequestReplyRouter?

回答

3

這個問題覆蓋MSDN文章中:Building a router(尋找「路由器和傳輸會話」節還有)

1

路由服務使用的是定義用於接收和發送消息的通道的形狀合同,因此輸入通道的形狀必須與輸出通道的形狀相匹配。

因此,如果您對使用請求 - 回覆通道形狀的端點執行路由,則必須在入站端點(例如IRequestReplyRouter)上使用兼容合約。

這意味着如果您的目標終端使用具有多種通信模式的合約(如混合單向和雙向操作),則無法創建可接收消息並將消息路由到所有消息的單個服務端點。解決方法是在路由服務中使用雙工協定,例如IDuplexSessionRouter。

參考文獻:

http://msdn.microsoft.com/en-us/magazine/cc546553.aspx

http://msdn.microsoft.com/en-us/library/ee517422.aspx

+2

發佈的複製和粘貼樣板/逐字回答多個問題時一定要小心,這些往往會被標記爲在社區「垃圾」。如果你這樣做,那麼它通常意味着問題是重複的,所以標記它們。 http://stackoverflow.com/questions/10911344 – Kev