本文深入剖析 WCF Binding 核心組成、三大 Binding Element 分類、描述的六大層面資訊,並提供 11 種內建 Binding 特性對比表與選型決策圖,助您精準選擇最適合的繫結。適合 WCF 初學者與架構師。

| 元素 | 解決問題 | 關鍵字 |
|---|---|---|
| Address (A) | 服務在哪裡? | Where |
| Binding (B) | 如何通訊? | How |
| Contract (C) | 提供什麼功能? | What |
Binding 封裝通訊底層細節:傳輸協定 (TCP/HTTP)、安全模式 (SSL/Message)、訊息編碼 (Text/Binary/MTOM)。


| 類型 | 必要性 | 功能 | 範例 |
|---|---|---|---|
| Encoding Binding Element | 每個 Binding 必須包含一個 | 訊息編碼方式 | Text, Binary, MTOM, Custom |
| Transport Binding Element | 每個 Binding 必須包含一個 | 網路傳輸協定 | TCP, HTTP, HTTPS, Named Pipes, MSMQ |
| Protocol Binding Element | 可選,零或多個 | 安全性、可靠會話、事務流、上下文流 | SecurityBindingElement, ReliableSessionBindingElement, TransactionFlowBindingElement |
堆疊順序:應用層 → 協定通道 → 編碼器 → 傳輸通道 → 網路

| 層面 | 對應 BindingElement | 說明 |
|---|---|---|
| Transactions (事務) | TransactionFlowBindingElement | 啟用 WS-AtomicTransaction 事務流 |
| Reliability (可靠性) | ReliableSessionBindingElement | WS-ReliableMessaging 訊息送達保證 |
| Security (安全性) | SecurityBindingElement | 傳輸/訊息/混合安全模式 |
| Encoding (編碼) | Encoding Binding Element | Text/XML, Binary, MTOM, Custom |
| Transport (傳輸) | Transport Binding Element | TCP, HTTP, HTTPS, Named Pipes, MSMQ |
| Binding 名稱 | 配置元素 | 描述 | 互操作性 | 安全性 | 會話 | 事務 | 雙工 |
|---|---|---|---|---|---|---|---|
| BasicHttpBinding | basicHttpBinding | 基本 Web Service 相容 (BP 1.1) | Basic Profile 1.1 | (None), Transport, Message | None | (None) | n/a |
| WSHttpBinding | wsHttpBinding | 安全、可靠、互操作通用 | WS-* | Transport, (Message), Mixed | (None), Transport, Reliable Session | (None), Yes | n/a |
| WSDualHttpBinding | wsDualHttpBinding | 支援雙工的 WSHttpBinding | WS-* | (Message) | (Reliable Session) | (None), Yes | Yes |
| WSFederationHttpBinding | wsFederationHttpBinding | 支援 WS-Federation 聯合身分 | WS-Federation | (Message) | (None), Reliable Session | (None), Yes | No |
| NetTcpBinding | netTcpBinding | 跨機器 .NET 間最高效能 | .NET | (Transport), Message | Reliable Session, (Transport) | (None), Yes | Yes |
| NetNamedPipeBinding | netNamedPipeBinding | 同機器進程間最高效能 | .NET | (Transport) | None, (Transport) | (None), Yes | Yes |
| NetMsmqBinding | netMsmqBinding | 佇列、離線、跨機器 | .NET | Message, (Transport), Both | (None) | (None), Yes | No |
| NetPeerTcpBinding | netPeerTcpBinding | P2P 多方通訊 | Peer | (Transport) | (None) | (None) | Yes |
| MsmqIntegrationBinding | msmqIntegrationBinding | 與舊版 MSMQ 應用整合 | MSMQ | (Transport) | (None) | (None), Yes | n/a |
決策流程:

快速選型表:
| 場景 | 首選 Binding | 備選 | 關鍵理由 |
|---|---|---|---|
| 跨平台/互操作 (Java, PHP 等) | BasicHttpBinding | WSHttpBinding | 最大相容性 / 進階 WS-* 支援 |
| .NET 內網高效能 | NetTcpBinding | NetNamedPipeBinding (同機) | Binary 編碼 + TCP,效能最佳 |
| 雙工/即時推送 | NetTcpBinding | WSDualHttpBinding | TCP 原生雙工 / HTTP 雙工需開埠 |
| 離線/佇列/持久 | NetMsmqBinding | MsmqIntegrationBinding | MSMQ 佇列機制 |
| P2P/多方協作 | NetPeerTcpBinding | - | Peer Channel 架構 |
| 聯邦身分/STS | WSFederationHttpBinding | - | WS-Trust/WS-Federation |
| 舊版 ASMX 相容 | BasicHttpBinding | - | BP 1.1 相容 |

圖中直觀展示各 Binding 在安全性、互操作性、效能、功能豐富度上的權衡。