共用方式為


路由合約

路由合約會定義路由服務可以處理的訊息模式。 每一個合約都是無型別合約,可讓服務在不知道訊息結構描述或動作的情況下接收訊息。 如此可讓路由服務以一般方式路由傳送訊息,而不需要額外設定所路由傳送之基礎訊息的細節。

路由合約

由於路由服務接受泛型 WCF 訊息物件,因此選取合約時最重要的考量會是通道的組織結構,此通道將在與用戶端和服務進行通訊時使用。 處理訊息時,路由服務會使用對稱的訊息幫浦,因此一般來說,傳入合約的組織結構必須符合傳出合約的組織結構。 不過,在某些情況下,服務模型的發送器可以修改組織結構;例如,當發送器傳送雙面通道至要求-回覆通道時,或是在不需要且未使用工作階段支援時從通道中移除 (也就是當 SessionMode.Allowed 時,將 IInputSessionChannel 轉換為 IInputChannel)。

為了支援這些訊息幫浦,路由服務會在 System.ServiceModel.Routing 命名空間中提供合約,這些合約必須在定義路由服務使用的服務端點時使用。 這些都是無型別合約,允許接收任何訊息型別或動作,並且可讓路由服務在不知道特定訊息結構描述的情況下處理訊息。 如需路由服務所使用合約的詳細資訊,請參閱路由合約

路由服務提供的合約位於 System.ServiceModel.Routing 命名空間中,並且將於下表中說明。

合約 形狀 通道類型
ISimplexDatagramRouter SessionMode = SessionMode.Allowed

AsyncPattern = true

IsOneWay = true
IInputChannel -> IOutputChannel
ISimplexSessionRouter SessionMode = SessionMode.Required

AsyncPattern = true

IsOneWay = true
IInputSessionChannel -> IOutputSessionChannel
IRequestReplyRouter SessionMode = SessionMode.Allowed

AsyncPattern = true
IReplyChannel -> IRequestChannel
IDuplexSessionRouter SessionMode=SessionMode.Required

CallbackContract=typeof(ISimplexSession)

AsyncPattern = true

IsOneWay = true

TransactionFlow(TransactionFlowOption.Allowed)
IDuplexSessionChannel -> IDuplexSessionChannel

另請參閱