WCF has introduced lot of bindings and protocols. This article will concentrate on two important protocols BasicHttpBinding
and WsHttpBinding
which look similar but have some huge fundamental differences. So we will first start with the difference and then we will create a small project and see how the differences look practically.
Now a days, I am distributing my 400 questions and answers ebook which covers major .NET related topics like WCF, WPF, WWF, Ajax, Core .NET, SQL Server, Architecture and a lot more. I am sure you will enjoy this ebook.
In case you are new to WCF, please do read the basics from the below given links. Basics of WCF are not in the scope of this article:
If we want to summarize in one sentence, the difference between WsHttpBinding
and BasicHttpBinding
is that WsHttpBinding
supports WS-* specification. WS-* specifications are nothing but standards to extend web service capabilities.
Below is a detailed comparison table between both the entities from security, compatibility, reliability and SOAP version perspective.
Criteria | BasicHttpBinding | WsHttpBinding |
Security support | This supports the old ASMX style, i.e. WS-BasicProfile 1.1. | This exposes web services using WS-* specifications. |
Compatibility | This is aimed for clients who do not have .NET 3.0 installed and it supports wider ranges of clients. Many of the clients like Windows 2000 still do not run .NET 3.0. So older version of .NET can consume this service. | As its built using WS-* specifications, it does not support wider ranges of client and it cannot be consumed by older .NET version less than 3 version. |
Soap version | SOAP 1.1 | SOAP 1.2 and WS-Addressing specification. |
Reliable messaging | Not supported. In other words, if a client fires two or three calls you really do not know if they will return back in the same order. | Supported as it supports WS-* specifications. |
Default security options | By default, there is no security provided for messages when the client calls happen. In other words, data is sent as plain text. | As WsHttBinding supports WS-*, it has WS-Security enabled by default. So the data is not sent in plain text. |
Security options |
|
|
One of the biggest differences you must have noticed is the security aspect. By default, BasicHttpBinding
sends data in plain text while WsHttpBinding
sends it in encrypted and secured manner. To demonstrate the same, lets make two services, one using BasicHttpBinding
and the other using WsHttpBinding
and then lets see the security aspect in a more detailed manner.
We will create a small sample to see how BasicHttpBinding
sends data in plain text format and how WsHttpBinding
encrypts data.
Note: By default, security is not enabled on BasicHttpBinding
for interoperability purposes. In other words, it is like our old webservice, i.e. ASMX. But that does not mean we cannot enable security in BasicHttpBinding
. Sometime back, we had a written an article on how to enable security on BasicHttpBinding
.