Windows Communication Foundation (WCF):
Windows Communication Foundation (WCF) is used to create a distributed and interoperable applications. It provides a framework for building service-oriented-connected applications for the transmission of the data as an asynchronous, from one service-point to another service-point. It is previously known as Indigo and is a framework for building, configuring, and deploying network-distributed services.
WCF is built for developing SOAP-based services and bindings and thus utilizes standard XML schema over HTTP. This platform is ideal for message queues, end-to-end message security, duplex communication, distributed transaction, and one-way messaging. WCF allows sending data asynchronously from one end to the next.
Web Application Programming Interface (Web API):
A Web API is an open-source platform to build RESTful services over the .NET Framework. It is a type of interface for creating HTTP services that can be consumed by a wide range of clients, like mobile devices, browsers, tablets, and iPhones. As the name suggests, a Web API is an over the internet API accessible through HTTP protocol. Initially, Web APIs were known as Web services, but today, the latter’s use indicates that the API is RESTful, instead of following the SOAP standard.
Web API supports the MVC features such as controllers, routing, filter, action results, IOC container, model binders, and dependency injection, among others. It also utilizes HTTP’s full features, such as caching, URLs, request/response headers, versioning, and various content formats.
Why use WCF?
- It is ideal if you are using .NET Framework 3.5.
- WCF support multiple protocols like HTTP, TCP, Named pipe.
- WCF service is also useful if you want to build service with standards such as Transactions Messaging security and Reliable Message Security.
- You can also use Request-Reply, One Way, and Duplex message exchange patterns with the WCF.
Why use Web API?
- Web API provides supports for the convention-based CRUD Actions since it works with the HTTP verbs ( GET, POST, PUT, and DELETE)
- It is easy to define, expose, consume in the REST-ful way.
- ASP.Net Web API allows to showcase your data and services to various devices.
- It is open-source, so it is ideal for creating RESTful services over the .NET platform.
- It allows you scalable, decoupled development of a Web Service that other developers can share and access web services.
- It is also helpful for building simple, non-SOAP-based HTTP Services.
Characteristics of WCF:
- It supports service-oriented architecture.
- It supports multiple transport and encoding.
- Multiple message patterns.
- Data contracts.
- Service Metadata.
- Durable messages.
- Reliable and Queued messages.
- Ajax and Rest Support.
Characteristics of Web API:
- ASP.NET Web API is an ideal platform to build RESTful services.
- It is built on the top of the ASP.NET and supports ASP.NET request/response pipeline.
- It also maps HTTP verbs to method names.
- It also supports different formats of response data. Built-in support for JSON, XML, BSON format.
- It can also be hosted in IIS, Self-hosted, or other web servers that support .NET 4.0+.
- ASP.NET Web API framework includes a new HttpClient to communicate with the Web API server. HttpClient can also be used in the ASP.MVC server side, Windows Form application, Console application, or any other apps.
WCF Vs Web Service:
|Ships with .NET framework.||It is open source and ships with the .NET framework.|
|It supports HTTP, TCP, UDP, and custom transport protocol.||It supports only the HTTP protocol.|
|It uses attributes based programming model.||Maps HTTP verbs to methods.|
|It uses Service, Operation, and Data contracts.||It uses a routing and controller concept similar to ASP.NET MVC.|
|It supports Reliable Messaging and Transactions.||It does not support Reliable Messaging and transactions.|
|It uses the web.config and attributes to configure a service.||Web API can be configured using the HttpConfiguration class but not in web.config.|
|It supports RESTful services but with limitations.||Ideal for building RESTful services.|
|Request reply, one-way, or duplex.||By default, request-reply only. However, another message pattern can be supported with web sockets integration.|
|IIS hosting, Self-hosting & works activation services.||Self-hosting & IIS hosting.|
|It is not open-source software.||It is shipped with the .Net framework and is also available as an independent download.|
|WCF does not support MVC features like controllers, routing, filter, auction results, etc.||ASP.NET Web API supports MVC features such as routing, controllers, results, filter, action, etc.|
|Text, MTOM, and Binary.||Default support for UTF-8 encoding format.|
When to choose WCF?
- You can choose WCF if you use .NET Framework 3.5. Web API does not support .NET 3.5 or below.
- You can choose WCF if your service needs to support multiple protocols such as HTTP, TCP, Named pipe.
- You can choose WCF if you want to build a service with WS-* standards like Reliable Messaging, Transactions, Message Security.
- You can choose WCF if you want to use Request-Reply, One Way, and Duplex message exchange patterns.
When to choose ASP.NET Web API?
- You can choose Web API if you are using .NET Framework 4.0 or above.
- You can choose Web API if you want to build a service that supports only HTTP protocol.
- You can choose Web API to build RESTful HTTP based services.
- You can choose Web API if you are familiar with ASP.NET MVC.