本文從整體架構視角重新認識 WCF,涵蓋四大核心層級(合約與描述、服務執行階段、訊息傳遞、啟動與宿主)、關鍵元素概念、訊息處理管線流程,並以最簡單 WCF 範例對應架構圖解析。適合 WCF 初學者建立整體認知框架。

| 合約類型 | 職責 | 對應屬性 | 比喻 |
|---|---|---|---|
| Data Contract | 定義資料交換格式(XSD) | [DataContract], [DataMember] |
間諜與國家約定的密碼本 |
| Message Contract | 控制 SOAP 訊息結構(Header/Body/加密簽名) | [MessageContract], [MessageHeader], [MessageBodyMember] |
電報報文格式規範 |
| Service Contract | 定義服務公開操作簽名 | [ServiceContract], [OperationContract] |
情報機關提供的聯絡管道與人員 |

控制服務運行時行為:
訊息處理管線流程:

核心概念:通道堆疊
| 通道類型 | 代表 | 功能 |
|---|---|---|
| 協定通道 | WS-Security, WS-ReliableMessaging, 事務流, 編碼器 | 訊息層級處理:安全、可靠、編碼、事務 |
| 傳輸通道 | HTTP, TCP, Named Pipes, MSMQ | 網路傳輸協定 |




CustomMessage.cs:

IMessagingHello.cs / MessageHello.svc:


web.config:



發送訊息:
<s:Envelope xmlns:s="https://schemas.xmlsoap.org/soap/envelope/">
<s:Body>
<HelloGreetingMessage xmlns="https://tempuri.org/">
<Salutations xmlns="https://jillzhang.cnblogs.com">jillzhang</Salutations>
</HelloGreetingMessage>
</s:Body>
</s:Envelope>
接收訊息:
<s:Envelope xmlns:s="https://schemas.xmlsoap.org/soap/envelope/">
<s:Header>
<h:OutOfBandData s:mustUnderstand="1" xmlns:h="https://jillzhang.cnblogs.com">Served by object 63334862.</h:OutOfBandData>
</s:Header>
<s:Body>
<HelloResponseMessage xmlns="https://tempuri.org/">
<ResponseToGreeting xmlns="https://jillzhang.cnblogs.com">Service received: jillzhang</ResponseToGreeting>
</HelloResponseMessage>
</s:Body>
</s:Envelope>

驗證結論:MessageContract 成功控制 SOAP Header/Body 結構,OutOfBandData 出現在 Header,業務資料在 Body,完全符合預期。
| 架構層 | 範例對應實作 | 關鍵技術點 |
|---|---|---|
| 合約層 | [ServiceContract], [DataContract], [MessageContract] | 定義介面、資料結構、訊息格式 |
| 執行階段 | web.config <serviceBehaviors>, [ServiceBehavior] | InstanceContextMode, ConcurrencyMode, 事務、節流 |
| 訊息傳遞 | bindingConfiguration="wsHttpBinding" | 通道堆疊:編碼(Text) + 協定(Security/RM) + 傳輸(HTTP) |
| 宿主層 | IIS (Web Site 專案) | WAS 啟動、應用程式池管理 |
WCF 架構清晰分層,各司其職:
理解四層關係,才能在架構設計、效能調優、疑難排查時游刃有餘。