Binding in WCF

Introduction

WCF provides a bunch of diffrent bindings which will hopefully allow you to develop your service without having to go through much code. Patterns and Commmands used over and over by developers have been brought together, which allows you to get the 'standard' services into production fast. If you have different needs, you can still develop a custom binding with minimal fuss, but you need to know what is out there to see if there is already a binding that will fit your needs.

Bindings that are prefixed with 'net' mean they were designed to take advantage of .NET and perform many performance- enhancing operations. Bindings that are prefixed with 'ws' are to be used with all systems and conform to set web standards. A brief discussion of the currently available standard bindings is available as follows,

Types of Binding

Let us see more detailed on predefined binding

BasicHttpBinding

It is suitable for communicating with ASP.NET Web services (ASMX)-based services that comfort with WS-Basic Profile conformant Web services. This binding uses HTTP as the transport and text/XML as the default message encoding. Security is disabled by default This binding does not support WS-* functionalities like WS- Addressing, WS-Security, WS-ReliableMessaging. It is fairly weak on interoperability.

WSHttpBinding

Defines a secure, reliable, interoperable binding suitable for non-duplex service contracts. It offers lot more functionality in the area of interoperability. It supports WS-* functionality and distributed transactions with reliable and secure sessions using SOAP security. It uses HTTP and HTTPS transport for communication. Reliable sessions are disabled by default.

WSDualHttpBinding

This binding is same as that of WSHttpBinding, except it supports duplex service. Duplex service is a service which uses duplex message pattern, which allows service to communicate with client via callback. In WSDualHttpBinding reliable sessions are enabled by default. It also supports communication via SOAP intermediaries.

WSFederationHttpBinding

This binding support federated security. It helps implementing federation which is the ability to flow and share identities across multiple enterprises or trust domains for authentication and authorization. It supports WS-Federation protocol. To be used for advanced WS-based web services using federated identity.

NetTcpBinding

This binding provides secure and reliable binding environment for .Net to .Net cross machine communication. By default it creates communication stack using WS-ReliableMessaging protocol for reliability, TCP for message delivery and windows security for message and authentication at run time. It uses TCP protocol and provides support for security, transaction and reliability.

NetNamedPipeBinding

This binding provides secure and reliable binding environment for on-machine cross process communication. It uses NamedPipe protocol and provides full support for SOAP security, transaction and reliability. By default it creates communication stack with WS-ReliableMessaging for reliability, transport security for transfer security, named pipes for message delivery and binary encoding. This is optimized for on machine communication.

NetMsmqBinding

This binding provides secure and reliable queued communication for cross-machine environment. Queuing is provided by using MSMQ as transport. It enables for disconnected operations, failure isolation and load leveling. Binding for asynchronous communication using MSMQ(Microsoft Message Queue)

NetPeerTcpBinding

This binding provides secure binding for peer-to-peer environment and network applications. It uses TCP protocol for communication It provides full support for SOAP security, transaction and reliability.

msmqIntegrationBinding

This binding allows WCF developers to communicate with existing systems that communicate via MSMQ.

webHttpBinding

This allows you to expose your services as Http requests as used for REST-based services to output XML or JSON.

Next Recommended Reading Address, Binding and Contract in WCF