Introducing WCF
Windows Communication Foundation (WCF) was introduced with the release of .NET Framework 3.0. This release of the .NET framework was in essence Version 2.0 along with four additional components:
- Windows Presentation Foundation (UI graphical platform)
- Windows CardSpace (identity management platform)
- Windows Workflow Foundation (workflow platform)
- Windows Communication Foundation (communication platform)
Existing technologies
WCF is meant to provide a unified programming model to build, configure, and deploy services on distributed networks. It combines well-known technologies that have been around for some time, such as .NET remoting, Web Services Enhancements (WSE), MSMQ, ASMX, and message-oriented programming.
Note
The preceding diagram is provided courtesy of wcftutorial.net. If our introduction to WCF makes you curious about WCF and its technologies, this website does a great job of explaining it in detail.
The ABC of WCF
An elaborate explanation of all of the features that WCF has to offer is not in the scope of this book because it would take us too long to cover them all. However, one of the important concepts to review is the ABC of WCF. Each service has endpoints through which communication is possible, and an endpoint has the following properties:
- Address: The endpoint address can be used to tell consumers where the service can be found. It consists of a Unified Resource Identifier (URI).
- Binding: The binding actually defines how communication is done. It defines the protocol, security, and encoding required for services and clients to be able to communicate with each other.
- Contract: Contracts are used to define what can be communicated. The following are the three types of contracts:
- Service contracts: These describe the service functionality that is exposed to external systems
- Operation contracts: These define the actual operations that will be available on the service
- Data contracts: These are used to shape the data that will be exchanged by the operations of the service
The following diagram sums it up. On one side, you have the client, and on the other, a service. This service has one or more endpoints that each consist of an address, a binding, and a contract. After adding a reference to the endpoint on the client side, the client becomes aware of the ABC, and messages can be exchanged.