2009年2月13日 星期五

Binding(3): wsDualHttpBinding

<wsDualHttpBinding>

 

<wsDualHttpBinding>
        <binding name="string"
        closeTimeout="TimeSpan"
        openTimeout="TimeSpan" 
        receiveTimeout="TimeSpan"
        sendTimeout="TimeSpan"
        bypassProxyOnLocal="Boolean"
        clientBaseAddress="URI"
        transactionFlow="Boolean" 
        hostNameComparisonMode="StrongWildCard/Exact/WeakWildcard"
        maxBufferPoolSize="integer"
        maxReceivedMessageSize="Integer"
        messageEncoding="Text/Mtom" 
        proxyAddress="URI"
                
textEncoding="Unicode/BigEndianUnicode/UTF8"
        useDefaultWebProxy="Boolean">
        <reliableSession ordered="Boolean"
            inactivityTimeout="TimeSpan" />
        <security mode="None/Message">
           <message clientCredentialType="None/Windows/UserName/Certificate/CardSpace"
                negotiateServiceCredential="Boolean"
                    algorithmSuite="Basic128/Basic192/Basic256/Basic128Rsa15/Basic256Rsa15/TripleDes/TripleDesRsa15/Basic128Sha256/Basic192Sha256/TripleDesSha256/Basic128Sha256Rsa15/Basic192Sha256Rsa15/Basic256Sha256Rsa15/TripleDesSha256Rsa15" />
                </security>
        <readerQuotas maxDepth="integer" 
           maxStringContentLength="integer"
           maxByteArrayContentLength="integer"
           maxBytesPerRead="integer"
           maxNameTableCharCount="integer" />
    </binding>
</wsDualHttpBinding>

 

  1. WSDualHttpBinding 除了使用了原來在 BasicHttpBinding 所使用的 TextMessageEncodingBindingElementHttpTransportBindingElement 這兩個 binding element,也使用了 TransactionFlowBindingElement
  2. 使用 CompositeDuplexBindingElement, 讓 Client 可以 callback (回呼)。為了讓 Client 可以回呼, WSDualHttpBinding 是一個雙通道的 Binding,除了一般由 Client 傳送訊息給 Service 的通道(Channel)外,另外建立一個讓Service傳送訊息給Client 的通道。
  3. 一個 Service 通常有多個 Client 會使用該Service。WSDualHttpBinding 為了回呼Client,必須保持每個 Client 的資訊,因此需要維護 Session。此時引入了ReliableSessionBindingElement

沒有留言:

Share with Facebook