Until now, building components that were required to communicate a message from one point to another was not always the simplest of tasks. This was because Microsoft provided more than one technology that you could have used for such an action.
For instance, you could have used ASP.NET Web Services, Web Service Enhancements 3.0 (WSE), MSMQ, Enterprise Services, .NET Remoting, and even the
System.Messaging namespace. Each one of these technologies has pros and cons associated with it. ASP.NET Web Services (also known as ASMX Web Services) provided the capability to easily build interoperable Web services. The WSE enabled you to easily build services that took advantage of some of the WS-* message protocols. MSMQ enabled the queuing of messages, making it easy to work with solutions that were only intermittently connected. Enterprise Services, provided as a successor to COM+, offered an easy means to build distributed applications. .NET Remoting provided a fast way to move messages from one .NET application to another. Moreover, this is only the Microsoft world — it does not include all the options available in other environments, such as the Java world.
With these options for a Microsoft developer alone, it can be tough to decide what path to take with the applications you are trying to build. With this problem in mind, Microsoft has brought forth the Windows Communication Foundation (WCF).
WCF is a framework for building service-oriented ...