系統提供的繫結
在與端點對話時,繫結會指定要使用的通訊機制,並指出如何連接至端點。 繫結包含下列項目:
對於傳送至端點的訊息來說,通訊協定堆疊決定了要使用的安全性、可靠性,與內容流量設定。
傳輸則決定了在傳送訊息給端點時要使用的基礎傳輸通訊協定,例如 TCP 或 HTTP。
編碼會決定用來傳送到端點之訊息的 Wire 編碼。 例如,文字/XML、二進位或訊息傳輸最佳化機制 (MTOM)。
本文提供所有系統提供的 Windows Communication Foundation (WCF) 繫結。 如果這些繫結都無法完全符合您的應用程式準則,您可以建立自訂繫結。 如需建立自訂繫結的詳細資訊,請參閱自訂繫結。
一個安全、互通,且可支援 WS-Federation 通訊協定的繫結,此繫結可讓聯合組織有效率地驗證並授權使用者。
重要
請務必選取包含安全性的繫結。 根據預設,除了 <basicHttpBinding> 元素之外,所有繫結都會啟用安全性。 如果您沒有選取安全繫結或是停用了安全性,請記得透過某種方式來保護您的資料,例如儲存在安全的資料中心或是另外放在隔離的網路上。
重要
請勿使用不支援或已停用安全性的繫結來搭配雙工合約一起使用,除非您能夠以其他方式來保護資料的安全。
下列繫結會隨附於 WCF:
繫結 | 組態元素 | 描述 |
---|---|---|
BasicHttpBinding | <basicHttpBinding> | 適合用來與 WS-Basic Profile 相容之 Web 服務通訊的繫結;例如,以 ASP.NET Web 服務 (ASMX) 為基礎的服務。 此繫結使用 HTTP 做為傳輸,並使用文字/XML 做為預設的訊息編碼。 |
WSHttpBinding | <wsHttpBinding> | 適用在非雙工服務合約上的安全且互通的繫結。 |
WSDualHttpBinding | <wsDualHttpBinding> | 安全且互通的繫結,適用於雙工服務合約或透過 SOAP 媒介的通訊。 |
WSFederationHttpBinding | <wsFederationHttpBinding> | 安全、互通且支援 WS-Federation 通訊協定的繫結,此繫結可讓聯合組織有效率地驗證並授權使用者。 |
NetHttpBinding | <netHttpBinding> | 為了使用 HTTP 或 WebSocket 服務而設計的繫結,其預設會使用二進位編碼。 |
NetHttpsBinding | <netHttpsBinding> | 為了使用 HTTP 或 WebSocket 服務而設計的安全繫結,其預設會採用二進位編碼。 |
NetTcpBinding | <netTcpBinding> | 安全且最佳化的繫結,適用於 WCF 應用程式之間的跨電腦通訊。 |
NetNamedPipeBinding | <netNamedPipeBinding> | 安全、可靠且最佳化的繫結,適用於 WCF 應用程式之間的電腦通訊。 |
NetMsmqBinding | <netMsmqBinding> | 佇列繫結,適用於 WCF 應用程式之間的跨電腦通訊。 |
NetPeerTcpBinding | <netPeerTcpBinding> | 可啟用安全、多電腦通訊的繫結。 |
MsmqIntegrationBinding | <msmqIntegrationBinding> | 一種適用於 WCF 應用程式與現有訊息佇列應用程式之間的跨電腦通訊之繫結。 |
BasicHttpContextBinding | <basicHttpContextBinding> | 一種適合用來與 WS-Basic Profile 相容的 Web 服務進行通訊之繫結,能夠啟用用於交換內容的 HTTP Cookie。 |
NetTcpContextBinding | <netTcpContextBinding> | 安全且最佳化的繫結,適用於在 WCF 應用程式之間進行跨電腦的通訊,可以啟用用於交換內容的 SOAP 標頭。 |
WebHttpBinding | <webHttpBinding> | 用於設定 WCF Web 服務端點的繫結,這些服務的公開會透過 HTTP 要求,而非 SOAP 訊息。 |
WSHttpContextBinding | <wsHttpContextBinding> | 適用在非雙工服務合約上的安全且互通的繫結,可以啟用用於交換內容的 SOAP 標頭。 |
UdpBinding | <udpBinding> | 要在同時傳送一批突發之簡單訊息給大量用戶端時使用的繫結。 |
下表說明每一個系統提供繫結的個別功能。 您將於表格欄位中找到繫結;各項功能則列於各資料列,並於另一個表格中加以描述。 下表將說明使用的繫結縮寫。 若要選取繫結,請決定哪一欄可滿足所有您需要的資料列功能。
繫結 | 互通性 | 安全性 (預設值) | 工作階段 (預設值) |
交易 | 雙工 | 編碼 (預設值) | 串流 (預設值) |
---|---|---|---|---|---|---|---|
BasicHttpBinding | Basic Profile 1.1 | (無)、傳輸、訊息、混合 | (無) | (無) | n/a | 文字、(MTOM) | 是 (緩衝) |
WSHttpBinding | WS | 傳輸、(訊息)、混合 | (無)、可靠工作階段、安全性工作階段 | (無)、是 | n/a | (文字)、MTOM | 否 |
WSDualHttpBinding | WS | (訊息)、無 | (可靠工作階段)、安全性工作階段 | (無)、是 | 是 | (文字)、MTOM | 否 |
WSFederationHttpBinding | WS-同盟 | (訊息)、混合、無 | (無)、可靠工作階段、安全性工作階段 | (無)、是 | 否 | (文字)、MTOM | 否 |
NetHttpBinding | .NET | (無)、傳輸、訊息、TransportWithMessageCredential、TransportCredentialOnly | 請參閱下列注意事項 | 無 | 請參閱下列注意事項 | (二進位)、文字、MTOM | 是 (緩衝) |
NetHttpsBinding | .NET | (傳輸)、TransportWithMessageCredential | 請參閱下列注意事項 | 無 | 請參閱下列注意事項 | (二進位)、文字、MTOM | 是 (緩衝) |
NetTcpBinding | .NET | (傳輸)、訊息、無、混合 | (傳輸)、可靠工作階段、安全性工作階段 | (無)、是 | 是 | Binary | 是 (緩衝) |
NetNamedPipeBinding | .NET | (傳輸)、無 | 無、(傳輸) | (無)、是 | 是 | Binary | 是 (緩衝) |
NetMsmqBinding | .NET | 訊息、(傳輸)、無 | (無)、傳輸 | 無、(是) | 否 | Binary | 否 |
NetPeerTcpBinding | 對等 | (傳輸) | (無) | (無) | 是 | 否 | |
MsmqIntegrationBinding | MSMQ | (傳輸) | (無) | 無、(是) | n/a | n/a | 否 |
BasicHttpContextBinding | Basic Profile 1.1 | (無)、傳輸、訊息、混合 | (無) | (無) | n/a | 文字、(MTOM) | 是 (緩衝) |
NetTcpContextBinding | .NET | (傳輸)、訊息、無、混合 | (傳輸)、可靠工作階段、安全性工作階段 | (無)、是 | 是 | Binary | 是 (緩衝) |
WSHttpContextBinding | WS | 傳輸、(訊息)、混合 | (無)、可靠工作階段、安全性工作階段 | (無)、是 | n/a | 文字、(MTOM) | 否 |
UdpBinding 注意:互通性可以透過實作這個繫結所實作的標準 SOAP-over-UDP 規格來達成。 |
.NET | (無) | (無) | (無) | n/a | (文字) | 否 |
重要
NetHttpBinding 是為了使用 HTTP 或 WebSocket 服務而設計的繫結,其預設會使用二進位編碼。 NetHttpBinding 會偵測其所搭配使用的是要求-回覆合約還是雙工合約,並改變行為來配合,也就是會針對要求-回覆合約使用 HTTP,並針對雙工合約使用 WebSockets。 您可以覆寫這個行為,方法是使用 WebSocketTransportUsage 繫結設定:WhenDuplex - 這是預設值,行為方式如上所述。 Never-這會避免使用 WebSockets。 嘗試將這個設定用於雙工合約會導致例外狀況。 Always-這會強制使用 WebSockets,甚至用於要求-回覆合約。 NetHttpBinding 在 HTTP 模式和 WebSocket 模式下都會支援可靠工作階段。 在 WebSocket 模式中,工作階段是由傳輸提供。
下表說明上一個表格中列出的各項功能。
功能 | 描述 |
---|---|
互通性類型 | 表示繫結一定可與其互通的通訊協定或技術。 |
安全性 | 指定保護通道的方式: - 無:SOAP 訊息未受保護,且用戶端也未經過驗證。 - 傳輸:已滿足傳輸層的安全性需求。 - 訊息:已滿足訊息層的安全性需求。 - 混合:訊息已包含宣告,傳輸層級的完整性與機密性需求已滿足。 |
工作階段 | 指定此繫結是否支援工作階段合約。 |
交易 | 指定是否已啟用異動。 |
雙工 | 指定是否支援雙工合約。 請注意,此功能需要繫結對工作階段的支援。 |
編碼 | 請指定訊息的 Wire 格式。 允許的值包括: - 文字:例如 UTF-8。 - 二進位 - 訊息傳輸最佳化機制 (MTOM):一種有效的編碼方式,可在 SOAP 封套內容中編碼二進位的 XML 項目。 |
串流 | 指定傳入與傳出的訊息是否支援資料流。 請使用繫結上的 TransferMode 屬性來設定該值。 允許的值包括:- Buffered:要求訊息和回應訊息已同時緩衝處理。 - Streamed:要求訊息和回應訊息已同時進行資料流處理。 - StreamedRequest:資料流處理要求訊息,緩衝處理回應訊息。 - StreamedResponse:緩衝處理要求訊息,資料流處理回應訊息。 |