Microsoft created the WCF (Windows Communication Foundation) framework to create service-oriented applications. It enables the transmission of data as asynchronous messages between service endpoints. IIS, Windows services, or even self-hosted apps can host these endpoints. Using a variety of protocols, such as HTTP, TCP, Named Pipes, or MSMQ, developers can create secure, dependable, and transactional services with WCF.

Important WCF Features

  • Interoperability: Uses JSON, REST, or SOAP to easily interface with other platforms.
  • Multiple Message Patterns: Facilitates duplex, one-way, and request-reply communication.
  • Security: Integrated authorization, authentication, and encryption.
  • Transaction Support: Guarantees dependable rollback and message delivery.
  • Flexible Hosting: Use a console application, Windows Service, or IIS to host.
  • Extensibility: It is simple to implement custom behaviors, bindings, and contracts.

Overview of the WCF Architecture
A WCF service is built around four key concepts:

LayerDescription
Service Contract Defines the interface for the service (methods exposed).
Data Contract Defines the data structure used for communication.
Binding Defines how the service communicates (protocol, encoding).
Endpoint Specifies the address and communication details of the service.

Example: Simple WCF Service

Let’s create a simple “Calculator Service” using WCF.

Step 1. Define the Service Contract

using System.ServiceModel;

[ServiceContract]
public interface ICalculatorService
{
    [OperationContract]
    int Add(int a, int b);

    [OperationContract]
    int Subtract(int a, int b);
}


Step 2. Implement the Service
public class CalculatorService : ICalculatorService
{
    public int Add(int a, int b) => a + b;
    public int Subtract(int a, int b) => a - b;
}


Step 3. Configure Service in App.config
<system.serviceModel>
  <services>
    <service name="WCFDemo.CalculatorService">
      <endpoint address="" binding="basicHttpBinding" contract="WCFDemo.ICalculatorService" />
      <host>
        <baseAddresses>
          <add baseAddress="http://localhost:8080/CalculatorService"/>
        </baseAddresses>
      </host>
    </service>
  </services>
  <behaviors>
    <serviceBehaviors>
      <behavior>
        <serviceMetadata httpGetEnabled="true"/>
        <serviceDebug includeExceptionDetailInFaults="true"/>
      </behavior>
    </serviceBehaviors>
  </behaviors>
</system.serviceModel>


Step 4. Host the Service (Console Example)
using System;
using System.ServiceModel;

class Program
{
    static void Main()
    {
        using (ServiceHost host = new ServiceHost(typeof(CalculatorService)))
        {
            host.Open();
            Console.WriteLine("WCF Calculator Service is running...");
            Console.WriteLine("Press any key to stop.");
            Console.ReadKey();
        }
    }
}


Step 5. Consume the Service (Client Side)
Add a Service Reference in your client project → Enter the service URL (e.g., http://localhost:8080/CalculatorService?wsdl).

Then, you can use:
var client = new CalculatorServiceClient();
Console.WriteLine(client.Add(10, 20));  // Output: 30

Benefits of Using WCF

BenefitDescription
Interoperability Communicates with any platform that supports SOAP or REST.
Scalability Easily scale your services with multiple bindings and endpoints.
Security Integrated support for authentication, encryption, and authorization.
Reliable Messaging Ensures delivery even under network failure.
Extensible and Flexible Add custom behaviors and message inspectors.
Multiple Hosting Options Host in IIS, Windows Service, or Self-Hosted app.

Common WCF Bindings

BindingProtocolUse Case
basicHttpBinding HTTP Interoperable web services (SOAP 1.1).
wsHttpBinding HTTP Secure and reliable SOAP services.
netTcpBinding TCP High performance within intranet.
netNamedPipeBinding Named Pipes On-machine communication.
netMsmqBinding MSMQ Message queuing for disconnected apps.
webHttpBinding HTTP RESTful services (with JSON/XML).

Conclusion

WCF remains a powerful framework for building service-oriented, secure, and scalable communication systems.
While modern APIs often use ASP.NET Core Web APIs or gRPC, WCF continues to be a great choice for enterprise-grade distributed applications that require SOAP, WS-Security, and transactional messaging.