Dan Rigsby - Coding Up Style

.Net, C#, & Wcf Development

Wcf Binding Comparision List and Supported Features (Reference)

Posted by Dan Rigsby on January 19th, 2008

I have been working pretty heavily with Wcf over the last couple of weeks and really dived into understanding the ABC’s (Addressing, Binding and Contracts) of Wcf. If you dont already know, Addressing and Contracts are very straight forward. An Address is the uri string and the contract is the name of the interface that the endpoint implements. Binding is a quite a bit more difficult to understand and get right. There are a number of different binding, configuration settings, and behaviors to wrap your arms around. I put together a little “Cheatsheet” reference to help me understand each binding and when to use each. This data is primarily taken from http://msdn2.microsoft.com/en-us/library/ms731092.aspx with quite a bit of additions.

Name (Config Name) [Schemas] Transport Message Encoding Message Version Interop Security Session Tx Flow Duplex
BasicHttpBinding
(basicHttpBinding)
[http, https]
HTTP/HTTPS

Text

SOAP 1.1

Basic Profile 1.1 None, Transport, Message, Mixed N
A binding that is suitable for communicating with WS-Basic Profile conformant Web services like ASP.NET Web services (ASMX)-based services.
WSHttpBinding
(wsHttpBinding,
webHttpBinding)
[http, https]
HTTP/HTTPS Text, MTOM

SOAP 1.2, WS-A 1.0

WS None, Transport, Message, Mixed None, Transport, Reliable Session No, Yes (WS-AT) N
A secure and interoperable binding that is suitable for non-duplex service contracts.
WS2007HttpBinding
(ws2007HttpBinding)
[http, https]
HTTP/HTTPS Text, MTOM SOAP 1.2, WS-A 1.0 WS-Security, WS-Trust, WS-SC, WS-SP None, Transport, Message, Mixed None, Transport, Reliable Session No, Yes (WS-AT) N
WSDualHttpBinding
(wsDualHttpBinding)
[http]
HTTP Text, MTOM

SOAP 1.2, WS-A 1.0

WS None, Message Reliable Session No, Yes (WS-AT) Y
A secure and interoperable binding that is suitable for duplex service contracts or communication through SOAP intermediaries.
WSFederationHttpBinding
(wsFederationHttpBinding)
[http, https]
HTTP/HTTPS Text, MTOM

SOAP 1.2, WS-A 1.0

WS-Federation None, Message, Mixed None, Reliable Session No, Yes (WS-AT) N
A secure and interoperable binding that supports the WS-Federation protocol, enabling organizations that are in a federation to efficiently authenticate and authorize users.
WS2007FederationHttpBinding
(ws2007FederationHttpBinding)
[http, https]
HTTP/HTTPS Text, MTOM

SOAP 1.2, WS-A 1.0

WS-Federation None, Message, Mixed None, Reliable Session No, Yes (WS-AT) N
A secure and interoperable binding that derives from WS2007HttpBinding and supports federated security.
NetTcpBinding
(netTcpBinding)
[net.tcp]
TCP Binary

SOAP 1.2

.Net None, Transport, Message, Mixed Transport, Reliable Session No, Yes (OleTx) Y
A secure and optimized binding suitable for cross-machine communication between WCF applications.
NetPeerTcpBinding
(netPeerTcpBinding)
[net.p2p]
P2P Binary

SOAP 1.2

Peer None, Transport, Message, Mixed Y
A binding that enables secure, multi-machine communication.
NetNamedPipeBinding
(netNamedPipeBinding)
[net.pipe]
Named Pipe (IPC) Binary

SOAP 1.2

.Net None, Transport None, Transport No, Yes (OleTx) Y
A secure, reliable, optimized binding that is suitable for on-machine communication between WCF applications.
NetMsmqBinding
(netMsmqBinding)
[net.msmq]
MSMQ Binary

SOAP 1.2

.Net None, Transport, Message, Both No, Yes (OleTx) N
A queued binding that is suitable for cross-machine communication between WCF applications.
MsmqIntegrationBinding
(msmqIntegrationBinding)
MSMQ * MSMQ None, Transport No, Yes N
A binding that is suitable for cross-machine communication between a WCF application and existing MSMQ applications.

*Doesn’t use a WCF message encoding – instead it lets you choose a pre-WCF serialization format
Notes: Items in bold are the defaults for features that have multiple values. “–“ = No Support
Abbreviations: WS-SC = WS-SecureConversation, WS-SP = WS-SecurityPolicy, WS-A = WS-Addressing, WS-AT = WS-AtomicTransaction, OleTx = OleTransactions

Feature Description
Name The name of the binding.
Config Name The name of the binding used in configuration such as app.config or web.config.
Scheme The supported Uri schemes.
Transport The supported types of message transport (similar to Providers in Remoting).
Message Encoding The supported types of message encoding.
Message Version The supported message versions.
Interop Names the protocol or technology with which the binding ensures interoperation.
Security Specifies how the channel is secured:

  • None: The SOAP message is not secured and the client is not authenticated.
  • Transport: Security requirements are satisfied at the transport layer.
  • Message: Security requirements are satisfied at the message layer.
  • Mixed: This security mode is known as TransportWithMessageCredentials. It handles credentials at the message level, and integrity and confidentiality requirements are satisfied by the transport layer.
  • Both: Both message level and transport level security are used. This ability is unique to the NetMsmqBinding.
Session Specifies whether this binding supports session contracts.
Transaction Flow Specifies whether transactions are enabled and the transaction flow type in ().
Duplex Specifies whether duplex contracts are supported. Note this feature requires support for Sessions in the binding.

One Response to “Wcf Binding Comparision List and Supported Features (Reference)”

  1. Dan Rigsby » Understanding InstanceContext in WCF Says:

    [...] using a binding that allows sessions, then the behavior will be like that of PerCall. (See here for a list of bindings that support or don’t support [...]

Leave a Reply

XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>