Monday, February 13, 2012

Farewell WCF Web API… Welcome ASP.NET Web API

***Important remark: this is all unofficial information I have found while browsing through the WCF Web API discussion board. So feel free to leave a comment if some of the things I’ve found are not correct.***
WCF Web API will die soon. But in it’s ashes a new API is born, this time based on ASP.NET instead of WCF.
I found the following information about this:
  • Web API will be coming late February as part of the ASP.NET MVC 4 beta.
  • RTM in Q3 2012
  • Will support ASP.NET 4.0, including a HttpClient implementation
  • ASP.NET Web API is not limited to only MVC4, possible to host in WebForms for example.
  • ASP.NET Web API is a separate assembly with no dependency on system.web.mvc.dll
  • Deep integration with MVC routing to identify resources, including default values and constraints
  • Web API uses MapHttpRoute() with a routeTemplate ("api/{controller}/{id}"), very similar to the MVC .MapRoute.
    • UriTemplates not attributes on methods anymore.
    • Discovers actions based on method name (Get, Post etc), but possible to override with attributes.
  • HttpOperationHandler replaced by MVC ActionFilters.
  • Authorization filter attributes, just like MVC
  • Exception filters
  • All stack is async Task based.
  • Web API classes inherit from ApiController base class
    • Instantiated per request, stateless
  • HTTP methods are now like MVC actions
  • Official site will probably be (not working at the moment): http://asp.net/web-api
  • HttpResponseException and HttpResponseMessage/Request still there
  • MVC-like model binding to input parameters
  • Model binding validation using filters and data annotations!
  • Message body bound to types using MediaTypeFormatters
  • Content negotiation supported based on Accept header
  • No static context objects
  • HttpRequestMessage.Properties is still the way to keep request context
  • Out-of-the box IOC integration through DependencyResolver
  • OData supported simply by returning IQueryable<T> from actions, the rest is automatic.
  • Web API/MVC ships with dynamic JsonObject types
  • Supports hosting in IIS or self-hosting.
  • Only a tiny bit of WCF left in there(in the self-host client).
  • Supports JSON.NET out of the box.

No comments: