首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> 關於.NET

《WCF 技術內幕》譯文 14:訊息交換模式 (MEP) 深度解析

     編輯:關於.NET

第 3 章核心主題:訊息交換模式 (MEP)、拓撲與編排。MEP 是描述兩參與者間訊息交換最常用的細節層級。業界公認三種基本 MEP:資料報、請求/回應、雙工。

現實類比理解 MEP

  • 資料報:語音信箱留言,發送後不等待回覆,回覆需建立新連接;
  • 請求/回應:電話通話,發送請求等待回應,同一連雙向;
  • 雙工:雙向無線電,雙方可同時收發,無嚴格順序。

資料報 MEP

WSDL 表示

<wsdl:operation name="SomeOperation">
  <wsdl:input wsa10:Action="urn:SomeActionInput" />
</wsdl:operation>

WCF 契約實作

[ServiceContract]
public interface ISomeContract {
    [OperationContract(IsOneWay = true, Action = "urn:SomeActionInput")]
    void SomeOperation(Message message);
}

兩大關鍵:void 回傳型別 + IsOneWay = true。缺少後者,WCF 仍會產生空回應訊息造成額外開銷。

錯誤處理

資料報無內建回覆通道,傳送者需在 <FaultTo> 標頭指定錯誤接收端點。

HTTP 傳輸優化

HTTP 內建請求/回應機制,WCF 傳送資料報時回覆 HTTP 202 (Accepted),不等待處理完成,接近單向語意。

請求/回應 MEP

Internet 基石模式。WSDL 含 input 與 output,順序暗示請求先於回應。WCF 契約預設即此模式,任何可序列化型別可為回傳值。

傳輸考量

UDP、MSMQ 本質單向,需額外連接或自訂通道支援請求/回應。TCP/HTTP/Named Pipe 可使用反向通道,WS-Addressing <ReplyTo> 指向 anonymous 位址。

雙工 MEP

雙方可獨立發送訊息。WSDL 定義兩個操作:服務操作(輸入)與回呼操作(輸出)。
WCF 需雙介面:服務介面標註 CallbackContract,回呼介面無需 ServiceContract 屬性。務必將雙方操作標記 IsOneWay = true,否則退化為請求/回應產生雙重開銷。

WCF 6 種 MEP 擴展

基礎三種加上「帶工作階段」變體:
資料報 / 請求-回應 / 雙工 / 帶工作階段的資料報 / 請求-回應 / 雙工。
參考:MSDN MEP 文件

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved