WCF適配器各種費類型化消息協定總結
WCF框架是由微軟研發的一款基于通信等方面的跨平臺的解決方案。在實際使用中,體現了非常強大的功能。WCF適配器在接收消息時使用非類型化消息協定。#t#
通過使用非類型化消息協定,WCF 適配器可從客戶端接收任何類型的 WCF 消息。您可通過 BizTalk 管理控制臺中的“入站 BizTalk 消息正文”選項指定如何從傳入 WCF 消息創建 BizTalk 消息。
下表中的 WCF 適配器服務協定用作 WCF 接收適配器的非類型化消息協定。
ITwoWayAsync 接口
用于 WCF 請求-響應接收位置。WCF適配器異步處理通過此接口傳入的消息。
ITwoWayAsyncVoid 接口
用于不支持事務協議的 WCF 單向接收位置,WCF-NetMsmq 適配器除外。WCF適配器異步處理通過此接口傳入的消息。
ITwoWayAsyncVoidTxn 接口
用于支持事務協議的 WCF 單向接收位置,WCF-NetMsmq 適配器除外。WCF適配器異步處理通過此接口傳入的消息。
IOneWayAsync 接口
用于 WCF-NetMsmq 單向非事務性接收位置。WCF適配器異步處理通過此接口傳入的消息。
IOneWayAsyncTxn 接口
用于 WCF-NetMsmq 單向事務性接收位置。WCF適配器異步處理通過此接口傳入的消息。
BizTalkServiceInstance 類
實現WCF適配器用于接收傳入消息的服務協定。WCF 適配器為每個接收位置創建一個單獨的 ServiceHost 和此類的單個服務對象,以便在運行 WCF 接收位置的 BizTalk 主機實例的生存期內處理客戶端請求。該服務對象使用多個線程來并行處理消息,除非 WCF-NetMsmq 接收位置與所選定的“按序處理”屬性一起使用。
WCF 適配器根據 WCF 接收位置中配置的通道堆棧,來選擇某個 WCF 服務協定以接收消息。
對于標準 WCF 適配器,通道堆棧是由接收位置的 WCF 配置屬性自動配置的。為了確定使用哪個服務協定,WCF 適配器將針對 WCF 接收位置的綁定調用帶有 IReplyChannel、IReplySessionChannel 和 IDuplexSessionChannel 的 Binding.CanBuildChannelListener 方法。
如果任一方法調用返回 True,則使用以 ITwoWayAsync 開始的服務協定來確保至少一次送達。否則,將使用以 IOneWayAsync 開始的服務協定來接收消息。接著,WCF適配器將為以下情況選擇以 Txn 結尾的服務協定:
TransactionFlowBindingElement 被添加到啟用了事務流的通道堆棧。
MsmqTransportBindingElement 被添加到 ExactlyOnce 屬性設置為 True 的通道堆棧。
實現 ITransactedBindingElement 的綁定元素被添加到 TransactedReceiveEnabled 屬性設置為 True 的綁定。
如果為 WCF 請求-響應接收位置添加了 OneWayBindingElement,則通過該接收位置傳入的消息可能會丟失,因為 OneWayBindingElement 在將消息調度到WCF適配器之前即生成了一個虛擬響應。






















