第 3 章核心主題:訊息交換模式 (MEP)、拓撲與編排。MEP 是描述兩參與者間訊息交換最常用的細節層級。業界公認三種基本 MEP:資料報、請求/回應、雙工。
<wsdl:operation name="SomeOperation">
<wsdl:input wsa10:Action="urn:SomeActionInput" />
</wsdl:operation>
[ServiceContract]
public interface ISomeContract {
[OperationContract(IsOneWay = true, Action = "urn:SomeActionInput")]
void SomeOperation(Message message);
}
兩大關鍵:void 回傳型別 + IsOneWay = true。缺少後者,WCF 仍會產生空回應訊息造成額外開銷。
資料報無內建回覆通道,傳送者需在 <FaultTo> 標頭指定錯誤接收端點。
HTTP 內建請求/回應機制,WCF 傳送資料報時回覆 HTTP 202 (Accepted),不等待處理完成,接近單向語意。
Internet 基石模式。WSDL 含 input 與 output,順序暗示請求先於回應。WCF 契約預設即此模式,任何可序列化型別可為回傳值。
UDP、MSMQ 本質單向,需額外連接或自訂通道支援請求/回應。TCP/HTTP/Named Pipe 可使用反向通道,WS-Addressing <ReplyTo> 指向 anonymous 位址。
雙方可獨立發送訊息。WSDL 定義兩個操作:服務操作(輸入)與回呼操作(輸出)。
WCF 需雙介面:服務介面標註 CallbackContract,回呼介面無需 ServiceContract 屬性。務必將雙方操作標記 IsOneWay = true,否則退化為請求/回應產生雙重開銷。
基礎三種加上「帶工作階段」變體:
資料報 / 請求-回應 / 雙工 / 帶工作階段的資料報 / 請求-回應 / 雙工。
參考:MSDN MEP 文件