位置:首頁 > 其他技術 > 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服務(WS)綁定

這是通過WSHttpBinding類提供,此綁定相似於基礎約束,並使用相同的協議進行傳輸,但提供了幾個WS- *規範,比如WS- 可靠消息,WS- 事務,WS- 安全,還有更多。簡而言之,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綁定

這種結合使得使用命名管道,由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 Binding - 由NetTcpBinding類結合TCP協議的通信在同一網絡內,並且不會以二進製格式信息編碼。這種結合被認為是最可靠的對比。

  • WS Dual Binding - 這種結合便於雙向通信,即消息可以被發送和接收的客戶端和服務的唯一例外的是wsHttpBinding。這是由WSDualHttpBinding類提供的。

  • Web binding - 這種結合被設計為表示WCF服務中的HTTP請求的形式,通過使用HTTP的GET和HTTP的POST等方式,這是可用的WebHttpBinding類,並與社會網絡常用。

  • MSMQ Binding - 這個綁定由NetMsmqBinding類,還提供用於提供在情況下,服務於一個不同於客戶端發送的處理消息時間的解決方案。這種結合使得使用MSMQ傳輸,並提供支持的消息隊列。 MSMQ是微軟提供的隊列消息實現。

  • Federated WS Binding - 這種結合是由WSFederationHttpBinding類提供。這是WS結合的一種具體形式,並提供支持,以聯合安全。

  • Peer Network Binding - 由NetPeerTCPBinding類提供,該結合主要是用在文件共享係統,例如種子和TCP協議中使用。它使用TCP協議等網絡運輸。在這個網絡中每個機器(節點)充當客戶端和一個服務器到另一個節點。這是用在像奔流的文件共享係統。

  • MSMQ Integration binding - 這種結合是由MsmqIntegrationBinding類提供的。這種結合提供支持MSMQ(微軟消息隊列),使現有通信係統進行通信。

除了這些,還可以創建自定義綁定。然而,由於它能夠調整每個WCF配置屬性綁定,需要創建自定義綁定的產生極少。