
- WCF 教程
- WCF - 首頁
- WCF - 概述
- WCF - 與Web服務的比較
- WCF - 開發人員工具
- WCF - 架構
- WCF - 建立WCF服務
- WCF - 託管WCF服務
- WCS - IIS託管
- WCF - 自託管
- WCF - WAS託管
- WCF - Windows服務託管
- WCF - 使用WCF服務
- WCF - 服務繫結
- WCF - 例項管理
- WCF - 事務
- WCF - RIA服務
- WCF - 安全性
- WCF - 異常處理
- WCF 資源
- WCF - 快速指南
- WCF - 有用資源
- WCF - 討論
WCF - 服務繫結
WCF服務繫結是一組多個元素,每個元素定義服務與客戶端通訊的方式。傳輸元素和訊息編碼元素是每個繫結的兩個最重要的組成部分。本章將討論一些常用的WCF服務繫結。
基本繫結
基本繫結由BasicHttpBinding類提供。它使用HTTP協議傳輸並將WCF服務表示為ASP.NET Web服務(ASMX Web服務),以便使用ASMX Web服務的舊客戶端可以方便地使用新服務。
基本繫結在Silverlight啟用的WCF Web服務中被設定為預設繫結,是Web服務樣式通訊的標準繫結。它不支援可靠訊息傳遞。
以下是顯示基本繫結預設設定的程式碼片段。
<basicHttpBinding> <binding name = "basicHttpBindingDefaults" allowCookies = "false" bypassProxyOnLocal = "false" hostNameComparisonMode = "StrongWildcard" maxBufferPoolSize = "524288" maxBufferSize = "65536" maxReceivedMessageSize = "65536" messageEncoding = "Text" proxyAddress = "" textEncoding = "utf-8" transferMode = "Buffer" useDefaultWebProxy = "true" closeTimeout = "00:01:00" openTimeout = "00:01:00" receiveTimeout = "00:10:00" sendTimeout = "00:01:00"> <readerQuotas maxArrayLength = "16384" maxBytesPerRead = "4096" maxDepth = "32" maxNameTableCharCount = "16384" maxStringContentLength = "8192"/> <security mode = "None"> <transport clientCredentialType = "None" proxyCredentialType = "None" realm = ""/> <message algorithmSuite = "Basic256" clientCredentialType = "UserName" /> </security> </binding> </basicHttpBinding>
上述預設設定有其明顯的侷限性,例如訊息大小有限制且沒有安全模式。但是,自定義基本繫結可以解決這個問題,如下所示。
<basicHttpBinding> <binding name = "basicHttpSecure" maxBufferSize = "100000" maxReceivedMessageSize = "100000"> <readerQuotas maxArrayLength = "100000" maxStringContentLength = "100000"/> <security mode = "TransportWithMessageCredential" /> </binding> </basicHttpBinding>
Web服務繫結
Web服務(WS)繫結由WSHttpBinding類提供。它與基本繫結非常相似,並使用相同的協議進行傳輸,但提供了幾個WS-*規範,例如WS-Reliable Messaging、WS-Transactions、WS-Security等等。簡而言之,WSHttpBinding等於basicHttpBinding和WS-*規範的總和。以下是顯示WS繫結的預設設定的程式碼片段:
<wsHttpBinding> <binding name = "wsHttpBindingDefaults" allowCookies = "false" bypassProxyOnLocal = "false" closeTimeout = "00:01:00" hostNameComparisonMode = "StrongWildcard" maxBufferPoolSize = "524288" maxReceivedMessageSize = "65536" messageEncoding = "Text" openTimeout = "00:01:00" receiveTimeout = "00:10:00" proxyAddress = "" sendTimeout = "00:01:00" textEncoding = "utf-8" transactionFlow = "false" useDefaultWebProxy = "true" > <readerQuotas maxArrayLength = "16384" maxBytesPerRead = ."4096" maxDepth = "32" maxNameTableCharCount = "16384" maxStringContentLength = "8192"/> <reliableSession enabled = "false" ordered = "true" inactivityTimeout = "oo:10:00" /> <security mode = "Message"> <message algorithmSuite = "Basic256" clientCredentialType = "Windows" esatalishSecurityContext = "true" negotiateServiceCredential = "true" /> <transport clientCredentialType = "Windows" proxyCredentialType = "None" realm = ""/> </security> </binding> </wsHttpBinding>
IPC繫結
IPC繫結使用命名管道,由netNamedPipeBinding類提供。這是所有可用繫結中最快、最安全的繫結。雖然這裡不支援訊息級安全性,但由於強大的傳輸安全性,訊息預設是安全的。以下是顯示IPC繫結預設設定的程式碼片段:
<netNamedPipeBinding> <binding name = "netPipeDefaults" closeTimeout = "00:01:00" hostNameComparisonMode = "StrongWildcard" maxBufferPoolSize = "524288" maxBufferSize = "65536" maxConnections = "10" maxReceivedMessageSize = "65536" openTimeout = "00:01:00" receiveTimeout = "00:10:00" sendTimeout = "00:01:00" transactionFlow = "false" transactionProtocol = "OleTransactions" transferMode = "Buffered"> <readerQuotas maxArrayLength = "16384" maxBytesPerRead = "4096" maxDepth = "32" maxNameTableCharCount = "16384" maxStringContentLength = "8192"/> <security mode = "Transport"> </security> </binding> </netNamedPipeBinding>
其他型別的服務繫結
TCP繫結 - 由NetTCPBinding類提供,此繫結使用TCP協議在同一網路內進行通訊,並以二進位制格式進行訊息編碼。與其他繫結相比,此繫結被認為是最可靠的。
WS雙向繫結 - 此型別的繫結類似於WSHttpBinding,唯一的例外是它支援雙向通訊,即客戶端和服務都可以傳送和接收訊息。它由WSDualHttpBinding類提供。
Web繫結 - Web繫結旨在透過使用HTTP-GET、HTTP-POST等將WCF服務表示為HTTP請求的形式。它由WebHttpBinding類提供,通常與社交網路一起使用。
MSMQ繫結 - 它由NetMsmqBinding類提供,用於在服務在不同於客戶端傳送訊息的時間處理訊息的情況下提供解決方案。MSMQ繫結使用MSMQ進行傳輸,並支援離線訊息佇列。MSMQ是Microsoft提供的訊息佇列的實現。
聯合WS繫結 - 它是WS繫結的特定形式,並支援聯合安全性。它由WSFederationHttpBinding類提供。
對等網路繫結 - 由NetPeerTCPBinding類提供,主要用於檔案共享系統。它使用TCP協議,但使用對等網路作為傳輸。在此網路中,每臺機器(節點)都充當其他節點的客戶端和伺服器。對等網路繫結用於諸如torrent之類的檔案共享系統。
MSMQ整合繫結 - 由MsmqIntegrationBinding類提供,它有助於與透過MSMQ(Microsoft訊息佇列)進行通訊的現有系統進行通訊。
除此之外,還可以建立自定義繫結。但是,由於可以調整每個WCF繫結的配置屬性,因此很少需要建立自定義繫結。