Welcome to MSDN Blogs Sign in | Join | Help

Inside the Standard Bindings: WSDualHttp

After a few days break, the series on standard bindings continues. This week will take care of the remainder of the HTTP bindings, leaving only the MSMQ and PeerChannel bindings to talk about. WSDualHttp features the same support for Web Service protocols as the WSHttp binding, but is designed for use with duplex contracts.

Standard disclaimer:

I've cut down on the number of properties presented by eliminating duplicates between the binding settings and binding element settings. For instance, the XML reader quotas can be set on either the binding or the message encoder binding element, but I'm only going to show them on the message encoder. I've also omitted most of the security credential settings because they're very messy and you hopefully won't need to change them much.

Unlike WSHttp, WSDualHttp only supports SOAP security. I'll start off with the settings when no security is being used. The other two big differences you'll see between WSHttp and WSDualHttp is that the dual variety makes Reliable Messaging mandatory and adds a CompositeDuplex binding element to provide the duplex shape.

  1. System.ServiceModel.Channels.TransactionFlowBindingElement
    TransactionProtocol: WSAtomicTransactions
  2. System.ServiceModel.Channels.ReliableSessionBindingElement
    AcknowledgementInterval: 00:00:00.2000000
    EnableFlowControl: True
    InactivityTimeout: 00:10:00
    MaxPendingChannels: 128
    MaxRetryCount: 8
    MaxTransferWindowSize: 32
    Ordered: True
  3. System.ServiceModel.Channels.CompositeDuplexBindingElement
    ClientBaseAddress: 
    
  4. System.ServiceModel.Channels.TextMessageEncodingBindingElement
    AddressingVersion: Addressing10 (http://www.w3.org/2005/08/addressing)
    MaxReadPoolSize: 64
    MaxWritePoolSize: 16
    ReaderQuotas:
    MaxArrayLength: 16384
    MaxBytesPerRead: 4096
    MaxDepth: 32
    MaxNameTableCharCount: 16384
    MaxStringContentLength: 8192
  5. System.ServiceModel.Channels.HttpTransportBindingElement
    AllowCookies: False
    AuthenticationScheme: Anonymous
    BypassProxyOnLocal: False
    HostNameComparisonMode: StrongWildcard
    ManualAddressing: False
    MappingMode: SoapWithWSAddressing
    MaxBufferPoolSize: 524288
    MaxBufferSize: 65536
    MaxReceivedMessageSize: 65536
    ProxyAddress: ProxyAuthenticationScheme: Anonymous Realm: Scheme: http TransferMode: Buffered UnsafeConnectionNtlmAuthentication: False UseDefaultWebProxy: True

The CompositeDuplex element creates the back channel from the server to the client using the base address setting. Most configuration settings are unchanged from the ones used with the WSHttp binding except that there is no longer a switch to disable reliable sessions.

CloseTimeout: 00:01:00
EnvelopeVersion: Soap12 (http://www.w3.org/2003/05/soap-envelope)
Namespace: http://tempuri.org/
OpenTimeout: 00:01:00
ReceiveTimeout: 00:01:00
SendTimeout: 00:01:00
TextEncoding: System.Text.UTF8Encoding
TransactionFlow: False

Setting the Security.Mode to Message makes exactly the same transformation as we've seen with the other standard bindings.

  1. System.ServiceModel.Channels.TransactionFlowBindingElement
  2. System.ServiceModel.Channels.ReliableSessionBindingElement
  3. System.ServiceModel.Channels.SymmetricSecurityBindingElement
  4. System.ServiceModel.Channels.CompositeDuplexBindingElement
  5. System.ServiceModel.Channels.TextMessageEncodingBindingElement
  6. System.ServiceModel.Channels.HttpTransportBindingElement

The same holds true for changing the message encoding to use MTOM.

  1. System.ServiceModel.Channels.TransactionFlowBindingElement
  2. System.ServiceModel.Channels.ReliableSessionBindingElement
  3. System.ServiceModel.Channels.CompositeDuplexBindingElement
  4. System.ServiceModel.Channels.MtomMessageEncodingBindingElement
  5. System.ServiceModel.Channels.HttpTransportBindingElement

Next time: Inside the Standard Bindings: WSFederationHttp

Published Thursday, June 22, 2006 5:00 AM by Nicholas Allen

Comments

Thursday, June 22, 2006 11:48 AM by Nicholas Allen's Indigo Blog

# Mapping Channels to Shapes

When you build a channel factory or listener, you have to specify a TChannel parameter that describes...
Saturday, July 29, 2006 4:59 PM by Nicholas Allen's Indigo Blog

# BindingInspector Source Code

I thought I'd share the binding inspector program I wrote a few months ago to explore the different settings...
Wednesday, August 30, 2006 12:12 PM by Nicholas Allen's Indigo Blog

# Using Composite Duplex

The CompositeDuplex channel is one of the two shape-changing channels that we’ve included in the product...
New Comments to this post are disabled
 
Page view tracker