Temperatur på unges motivation Oplæg på CeFu -konference 29.01.2014
REST på Microsoft- stacken
description
Transcript of REST på Microsoft- stacken
REST på Microsoft-stackenRobert FolkessonActive Solution
WHO AM I?
REST?• Dissertation by Roy Fielding 2000• “Architectural Styles and the Design
of Network-based Software Architectures”
• ReST = Representational State Transfer
Architectural constraints• Client–server• Stateless• Cacheable• Layered system• Uniform Interface
Scalability
GET http://fabrikam.com/API/User/42
Guiding principles of REST-interfaces• Identification of resources• Manipulation of resources through
representations of these resources• Self-descriptive messages• Hypermedia as the engine of
application state
HATEOASHypermedia as the engine of application state
Example of hypermedia representation (Netflix)
Richardsons maturity model
Level 0: The swamp of POX
Level 1: Resources
Level 2: HTPP Verbs
Level 3: Hypermedia Controls
Glory of REST
REST on Microsoft – some history• WCF pre-3.5: painful…• WCF 3.5: WebHttpBinding. • WCF REST Starter Kit (no longer
supported)• WCF Data Services (OData)• WCF Web API - Preview 1 - 6
WCF ASP.NET Web API
http://www.asp.net/web-api• Goal: One HTTP/ REST / Hypermedia API Fx• Integrated in ASP.NET: Best of both world
WCF to ASP.NET Web APIWCF Web APIASP.NET Web API
Service => Web API controllerOperation => ActionService contract => n/aEndpoint=> n/aURI templates => ASP.NET RoutingMessage handlers => SameFormatters => SameOperation handlers => Filters, model binders
DEMO – FILE NEW
Media types & Media Formatters
HTTP/1.1 200 OK Content-Length: 95267 Content-Type: image/png
Accept: text/html,application/xhtml+xml,application/xml
Media types & Media Formatters • Built in support for: – XML– JSON– form-urlencoded data
• Can be extended with custom Media Formatters
DEMO – MEDIA TYPE FORMATTER
Web API on NuGet• Web API hosted in ASP.NET:
– AspNetWebApi• Self-hosted Web API:
– AspNetWebApi.Selfhost• HttpClient including XML and JSON formatters:
– System.Net.Http.Formatting• JsonValue for navigating and manipulating JSON:
– System.Json
Node-style Web API?LiteWebServer server = new LiteWebServer("http://localhost"); server.Get("/Hello", (r) => new HttpResponseMessage() { Content = new StringContent("Hello World!") }); server.Post("/Echo", (r) => new HttpResponseMessage() { Content = new StringContent( r.Content.ReadAsStringAsync().Result) }); server.Open();
http://blogs.msdn.com/b/youssefm/archive/2012/02/24/writing-a-lightweight-web-service-using-webapi-building-blocks.aspx
DEMO – SELF HOSTING
Web API can be used for all levels
Level 0: The swamp of POX
Level 1: Resources
Level 2: HTPP Verbs
Level 3: Hypermedia Controls
Glory of REST
ASP.
NET
Web
API
Some good reading
Nextperience for a connected world with ASP.NET Web API