WCF vs Web API: Top 10 Differences Between WCF and Web API

In this article, I’ll discuss the differences from a practical standpoint, which should help you in deciding between WCF and Web API.

WCF VS WEB API
WCF VS WEB API

What is WCF (Windows Communication Foundation)?

The Windows Communication Foundation (WCF) is a framework introduced in .Net 3.0 to create distributed and interoperable applications. It provides a framework for developing service-oriented applications that allow data to be transmitted asynchronously from one service endpoint to another.
It allows developers to build secure, reliable and transacted solutions that work across platforms and with existing investments.

WCF is a SOAP-based framework that returns XML-formatted data. It may be hosted in different scenarios, including WAS, IIS, Managed Windows, and others.

Example of WCF

The code below shows how to create a WCF service:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.ServiceModel.Web;
// IService1.cs file
namespace WcfService1
{
       [ServiceContract]
    public interface IService1
    {
        [OperationContract]
        string GetData(int value);
    }
}

// Service1.cs file

 public class Service1 : IService1
    {
        public string GetData(int value)
        {
            return string.Format("You entered: {0}", value);
        }
    }

WCF Architecture

The Windows Communication Foundation (WCF) architecture is demonstrated in the diagram below.

WCF Architecture
WCF Architecture

What is Web API (Web Application Programming Interface)?

The ASP.NET Web API is a framework for creating HTTP-based services that can be used in a wide range of applications on different platforms such as the web, Windows, mobile devices, and so on.

API clients communicate with the server using HTTP and a data format like JSON or XML to share information. APIs are frequently used in single-page applications (SPAs), which handle most of the user interface logic in a web browser and communicate with the web server mainly using web APIs.

The ASP.NET Web API is an excellent framework for creating RESTful (Representational State Transfer) applications. REST requests are made over HTTP using the same HTTP verbs (GET, POST, PUT, PATCH, DELETE) that are used by web browsers to receive and transmit data to servers. These HTTP verbs are used to perform CRUD (create, read, update, and delete) activities.

HTTP Methods (verbs) for RESTful Services

The following are the most commonly used HTTP verbs in Web API:

HTTP VerbCrudDescription
POSTCreateThe POST verb is used to create a new item of data on the web service. Return HTTP status 201 on successful creation.
GETRead The GET verb is used to retrieve data from the web service. It returns XML or JSON format data as well as a 200 HTTP response code (OK). In an error case, it most often returns a 404 (NOT FOUND) or 400 (BAD REQUEST).
PUTUpdate/ReplaceThe PUT method is most often utilized for updating an item of data on the web service.
PATCHUpdate/ModifyThe PATCH method is used to make a partial update to a resource. This resembles PUT, but the body contains a set of instructions that describes the modification of data already present on the server to produce a new version of the data and it is not considered as the complete resource.

In an error case, it most often returns 405 Method Not Allowed, this HTTP response status code indicates that the server recognized the request method but that the target resource does not support it.
DELETEDelete/RemoveThe DELETE method is used to delete resources (identified by the Request-URI).
A successful response of DELETE requests should be an HTTP response code 200 (OK) if the response includes an entity describing the status, 202 (Accepted) if the action has been queued, or 204 (No Content) if the action has been performed but the response does not include an entity. However, calling DELETE on a resource a second time would result in a 404 (NOT FOUND) error since it was already removed.
HTTP Methods used in (web API) restful services

Example of a Web API

The code below shows how to create a WCF service:

[ApiController]
public class PeopleApiController : ControllerBase
{
    // Some code removed for the clarity

    [HttpGet("people/{id}")]
    public ActionResult<Person> Get(int id)
    {
        var person = db.People.Find(id);

        if (person == null)
        {
            return NotFound();
        }

        return person;
    }

    [HttpPost("people/create")]
    public IActionResult Create(Person person)
    {
        db.Add(person);
        db.SaveChanges();
        return Accepted();
    }
}

Architecture of Web API

The Web API architecture is demonstrated in the diagram below.

Architecture of Web API
The architecture of Web API

WCF VS WEB API

WCFWEB API
1. WCF comes with the.NET Framework and is not available as open-source software.Web API is an open-source platform for creating RESTful services using the.NET Framework. It is also available as an independent download.
2. WCF allows you to create services that support a number of transport protocols (HTTP, TCP, UDP, MSMQ, and custom transports) and switch between them.Web API supports HTTP protocol only. More suitable for access from various browsers, mobile devices, and other devices, allowing for a larger audience.
3. WCF does not support MVC features such as controllers, routing, filters, action results, model binding, and so on.Web API supports MVC features such as controllers, routing, filters, action results, IOC containers, model binding, and dependency injection.
4. WCF allows developers to create services that support different message encodings (Text, MTOM, and Binary) and switch between them.The UTF-8 encoding format is supported by default in the Web API. XML and JSON are two media types that are supported by web APIs respectively.
5. You must import  System.ServiceModel.Web  namespace and enable webHttpBindings in order to use WCF as a WCF Rest service. The [WebGet] and [WebInvoke] attributes are used support HTTP GET and POST verbs respectively. It Uses attributed based programming model.Web API makes use of all of HTTP’s features, including HTTP verbs ( GET, PUT, POST, and DELETE), caching, URLs, request/response headers, versioning, and a wide range of content formats.
6. WCF Supports Request-Reply, message queues, One Way, and Duplex message exchange patterns.In Web API Only request-reply is enabled by default. Web sockets integration, on the other hand, can allow various message patterns.
7. IIS hosting, Self-hosting & works activation services (or within the application.).Only self-hosting and IIS hosting are supported by the Web API.
8. WFC is a SOAP-based application that employs a standard XML format, which makes it a little slower.Web API, on the other hand, can use any text format, including XML, making it the fastest and most popular option for lightweight services.
9. If you’re using the.NET Framework 3.5, you can use WCF. The Web API does not compatible with.NET 3.5 or lower versions.You can use Web API if you’re using.NET Framework 4.0 or higher.
10. WCF allows you to initialize a client proxy per call, single call, or per session, depending on your needs.Web API doesn’t support client proxy initialization.
Difference between WCF and Web API

FAQs

Q: What WCF stands for?

Ans: WCF stands for Windows Communication Foundation. It was introduced in .Net 3.0 to allow developers to create distributed and interoperable applications. WCF is a framework for developing service-oriented applications that allow data to be transmitted asynchronously from one service endpoint to another.

Q: Does WCF use SOAP?

Ans: WCF services by default use SOAP binding, although the messages can be in any format and send over any transport protocol, such as HTTP, HTTPS, WS- HTTP, TCP, Named Pipes, MSMQ, P2P(Point to Point), and so on.

Q: What is Web API 2.0?

Ans: ASP.NET Web API allows you to create HTTP Services on top of the .NET Framework.
The Web API framework has been improved in version 2.0 to include the following features:
1. A new routing attribute has been introduced.
2. Secure ASP.NET Web API using OAuth 2.0
3. Support for Cross-Origin requests using CORS
4. IHttpActionResult return type

Q: What is the purpose of media type formatters in the web API?

Ans: Media type formatters are classes in the web API that are responsible for data serialization.
The following are the media type formatters available in Web API:
1. XmlMediaTypeFormatter
2. JsonMediaTypeFormatter
3. FormUrlEncodedMediaTypeFormatter
4. JQueryMvcFormUrlEncodedFormatter

Q: When to prefer ASP.NET Web API over WCF?

Ans: It is entirely dependent on the situation. If you only want HTTP-based services, use ASP.NET Web API, which has a lightweight architecture and is suitable for devices with limited bandwidth. WCF can also be used to establish REST services, but it takes a lot of configuration. WCF is the preferable option if you require a service that supports several transport protocols such as HTTP, UDP, TCP, MSMQ and so forth.

Q: What are the various types of WCF contracts?

Ans: WCF has five types of contracts:
1. service contract,
2. operation contract,
3. data contract,
4. message contract,
5. fault contract.

Thank you for reading the blog; if you enjoyed it, please like, comment, and share it with others. Thanks.

References MSDN: WCF and ASP.NET Web API

Articles to Check Out

Leave a Comment