Microsoft defines ASP.NET Web APIs as
a framework that makes it easy to build HTTP services that reach a broad range of clients, including browsers and mobile devices.
ASP.NET Web API is an ideal platform for building Restful applications on the .NET Framework.
But wait… We do have WCF as part of .NET. So what is this Web API all about? When should I use this?
I was looking for some guidance to use during the solution process, but couldn’t find much help. After a bit of struggle, landed up in this web page which talks about features and when to use in detail.
From Microsoft Site
|WCF||ASP.NET Web API|
|Enables building services that support multiple transport protocols (HTTP, TCP, UDP, and custom transports) and allows switching between them.||HTTP only. First-class programming model for HTTP. More suitable for access from various browsers, mobile devices etc. enabling wide reach.|
|Enables building services that support multiple encodings (Text, MTOM, and Binary) of the same message type and allows switching between them.||Enables building Web APIs that support wide variety of media types including XML, JSON etc.|
|Supports building services with WS-* standards like Reliable Messaging, Transactions, Message Security.||Uses basic protocol and formats such as HTTP, WebSockets, SSL, JQuery, JSON, and XML. There is no support for higher level protocols such as Reliable Messaging or Transactions.|
|Supports Request-Reply, One Way, and Duplex message exchange patterns.||HTTP is request/response but additional patterns can be supported through SignalR and WebSockets integration.|
|WCF SOAP services can be described in WSDL allowing automated tools to generate client proxies even for services with complex schemas.||There is a variety of ways to describe a Web API ranging from auto-generated HTML help page describing snippets to structured metadata for OData integrated APIs.|
|Ships with the .NET framework.||Ships with .NET framework but is open-source and is also available out-of-band as independent download.|
- Use WCF to create reliable, secure web services that accessible over a variety of transports. If you have an existing WCF service and you want to expose additional REST endpoints, use WCF and the WebHttpBinding.
- Use ASP.NET Web API to create HTTP-based services that are accessible from a wide variety of clients. Use ASP.NET Web API if you are creating and designing new REST-style services. Although WCF provides some support for writing REST-style services, the support for REST in ASP.NET Web API is more complete and all future REST feature improvements will be made in ASP.NET Web API.
Couple of Must Read blog entries on this topic