2009年2月12日 星期四

Binding (2): netTcpBinding

netTcpBinding
<netTcpBinding>
   <binding 
      closeTimeout="TimeSpan"
     hostNameComparisonMode="StrongWildCard/Exact/WeakWildcard"
      listenBacklog="Integer"
      maxBufferPoolSize="integer"
      maxBufferSize="Integer"
      maxConnections="Integer" 
      maxReceivedMessageSize="Integer"
            name="string"
      openTimeout="TimeSpan"
      portSharingEnabled="Boolean"
      receiveTimeout="TimeSpan"
      sendTimeout="TimeSpan"
      transactionFlow="Boolean" 
      transactionProtocol="OleTransactions/WSAtomicTransactionOctober2004" 
            transferMode="Buffered/Streamed/StreamedRequest/StreamedResponse"

      <reliableSession ordered="Boolean"
            inactivityTimeout="TimeSpan"
            enabled="Boolean" />
      <security mode="None/Transport/Message/Both">
            <message clientCredentialType="None/Windows/UserName/Certificate/CardSpace"
                defaultProtectionLevel="None/Sign/EncryptAndSign" 
                     algorithmSuite="Basic128/Basic192/Basic256/Basic128Rsa15/Basic256Rsa15/TripleDes/TripleDesRsa15/Basic128Sha256/Basic192Sha256/TripleDesSha256/Basic128Sha256Rsa15/Basic192Sha256Rsa15/Basic256Sha256Rsa15/TripleDesSha256Rsa15" />
                        <transport clientCredentialType="None/Windows/Certificate"
                protectionLevel="None/Sign/EncryptAndSign" />
      </security>
       <readerQuotas maxDepth="integer" 
            maxStringContentLength="integer"
            maxByteArrayContentLength="integer"
            maxBytesPerRead="integer"
            maxNameTableCharCount="integer" />
   </binding>
</netTcpBinding>
  1. 當Client 是在 intranet 環境時,使用 netTcpBinding 是一個對效能最好的選擇,而且可以host 在 Windows Service 上。IIS5 或 IIS6 只能使用 HttpBinding。IIS7 則可以使用 WAS 方式來支援 netTcpBinding。
  2. netTcpBinding 使用 TCP protocol 並且完全支援 SOAP security, transactions, 與 reliability。
  3. 由於此 netTcpBinding 支援 .net 平台,因此並不適合跨平台如.NET + JAVA。我認為此將取代原本的 .net Remoting.
  4. 使用三個 binding elements. 第一個是 BinaryMessageEncodingBindingElement ,負責將訊息轉換成將來傳輸用的二進位格式。
  5. 第二個是TransactionFlowBindingElement ,只有一個 TransactionProtocol 屬性,定義交易(transactions) 如何從 clinet 流向 service。預設值是 TransactionProtocol.OleTransactions, 意思就是不支援 WS-AtomicTransaction。如果要支援 WS-AtomicTransaction,就設成 TransactionProtocol.WSAtomicTransaction11TransactionProtocol.WSAtomicTransactionOctober2004。注意到需要使用 WS-AtomicTransaction 組態公用程式 (wsatConfig.exe) 來設定該台伺服器。
  6. 第三個是 TcpTransportBindingElement, 負責傳輸的工作。

沒有留言:

Share with Facebook