why do you need rest
DESCRIPTION
TRANSCRIPT
© 2012 MPS Partners.. All rights
reserved.
Why do you need REST
June 27, 2013
Brown Bag presentation by: Mayank Srivastavawww.MayankSrivastava.com
Agenda
o Understanding REST
o REST Vs. SOAP
o Web API Vs. WCF
o Web API features.
3
Interaction over HTTP
4
Interaction over HTTP
5
What is SOAP?
• An XML info set based on messaging protocol.
• SOAP messages have an envelope, headers and a body
• Transport neutral “interoperable” model.
• RPC based development approach.
6
What is REST
• REST = Representational State Transfer –
As introduced by Roy Fielding in 2000
• REST is the architectural style for the Web, to building services hosted and
consumed over HTTP.
Uniform interface, HTTP Data formats & Content types, client-server, stateless, cacheable, scalable.
General Use of terms:
RESTful Service
HTTP Service
No SOAP
WEB API == HTTP Service == RESTful Service.
7
REST Vs. SOAP
• SOAP focuses on verbs (methods) while REST focuses on noun (resource)
SOAP:
.GetProduct()
.UpdateLocations()
.DeleteUser()
REST: (Uniform Interface HTTP verbs)
Product { }
Location { }
User { }
With SOAP you define custom operation that tunnel thru POST
SOAP is a message protocol where REST is an architectural design for the web
8
Why REST?
• Do you need transport neutrality?
• Do you need WS* features?
• Benefits of already developed Web features like caching and scalability.
• Basic SOAP is just like REST but without the benefits.
• Fewer code transition layers
• It is the standard for communication in the “cloud”.
• Universal interface that everyone understands.
9
Why REST?
What about security?
All the your Web application supports
• Token based
• Active directory
• OAuth 2.0
Client Server
Resource request
Redirect to credential challenge
Credentials
Links and tokens to access resource & access token
10
Universal interface that everyone understands.
Your RESTful Service
11
Example SOAP message over HTTP
POST http://wcftest.azurewebsites.net/Service1.svc HTTP/1.1
Content-Type: application/soap+xml; charset=utf-8; action="http://tempuri.org/IStockTicker/GetQuote"
Host: wcftest.azurewebsites.net
Content-Length: 168
<s:Envelope xmlns:s="http://www.w3.org/2003/05/soap-envelope">
<s:Body>
<GetQuote xmlns="http://tempuri.org/">
<stockTicker>MSFT</stockTicker>
</GetQuote>
</s:Body>
</s:Envelope>
</s:Envelope>
______________________________________________________________________________________________________________________
HTTP/1.0 200 OK
Content-Length: 187
Content-Type: application/soap+xml; charset=utf-8
<s:Envelope xmlns:s="http://www.w3.org/2003/05/soap-envelope">
<s:Body>
<GetQuoteResponse xmlns="http://tempuri.org/">
<GetQuoteResult>28.33</GetQuoteResult>
</GetQuoteResponse>
</s:Body>
</s:Envelope>
12
Example “RESTful” request/response
GET http://webapitest.azurewebsites.net/stocks?symbol=msft HTTP/1.1
Host: webapitest.azurewebsites.net
______________________________________________________________________________________________________________________
HTTP/1.0 200 OK
Content-Length: 5
Content-Type: application/json; charset=utf-8
33.12
13
Why SOAP
• SOAP interoperability is a requirement
• Non HTTP transports - TCP, UDP, Named Pipes, MSMQ, custom bindings
• WS-* based security.
14
Implementation Options
WCF
• WCF classic
• WCF Data Services
• WCF RIA Services
• WCF Web HTTP (aka WCF REST)
ASP.NET
• ASP.NET Web Services
• ASP.NET MVC
• ASP.NET Web API
• ASP.NET Web API OData
• ASP.NET SignalR
15
Recommendation:
WCF
• WCF classic
• WCF Data Services
• WCF RIA Services
• WCF Web HTTP (aka WCF REST)
ASP.NET
• ASP.NET Web Services
• ASP.NET MVC
• ASP.NET Web API
• ASP.NET Web API OData
• ASP.NET SignalR
For SOAP ------ WCF classic
For REST ------ ASP.NET WEB API
16
ASP.NET Web API (Code Demos)
• Simplicity
• Self Hosting
• Consuming from Server Side.
• Attribute routing - http://attributerouting.net/
• OData (emerging functionalities)
17
ASP.NET SignalR (Code Demos)
• Web socket based communication.
• Falls back to poll approach in the browser doesn’t support Web socket.
• http://signalr.net/
18
Questions?