2. A brief history of The Web API
March 2012
ASP.NET is
Open Source
6 Preview Versions
Fab 2012
ASP.NET Web
API (Beta)
October 2010
WCF Web API
on Code Plex
3.
4. State of the web
• Today the web faces new challenges:
– Internet scale applications
– Cloud operating systems
5. State of the web
• Today the web faces new challenges:
– Even more complex integrations
6. State of the web
• Today the web faces new challenges:
– Broader reach of clients
7. Agenda
• Basic terminology
• REST via the ASP.NET Web API
– Richardson maturity model
– Hypermedia Patterns
– Media types
• Caching
8. SOAP
• Promise to add “object access”-like semantics to the
web
– Operation centric
– Uses a large message format
• Extensible
– Over the years a large amount of extending standards
were created (AKA WS-*)
– By extension, adds stateful semantics over the web
• Promotes the use of the proxy pattern
• Not web natural
• Supported by major development environments
10. HTTP
• Promise to transfer hypertext
• The primal and most native protocol of the
web
• Stateless
• Supported by almost any device on the face of
the earth
12. SOA
• SOA is an architectural approach for
distributed systems
• SOA defines four tenets focusing on service
autonomy and boundaries
• SOA is a fully mature architecture with well-
known patterns and solutions for complex
communication and integration scenarios
13. REST
• The term Representational State Transfer
(REST) was coined by Roy Fielding in his Ph.D.
thesis in 2000
• An architectural style that embraces HTTP and
the World Wide Web
• Web friendly
14. Richardson maturity model
• Leonard Richardson’s maturity model
describes four levels of service maturity
Hypermedia
Http
Resources
15. RMM – Level zero services
• Level zero services do not use HTTP as an application
protocol.
• Use HTTP as a transport for other remote interaction
mechanism
Hypermedia
Http
Resources
16. RMM – Level one services
• Level one services acknowledge resources
• Resources are accessed via a unique address (formatted as a
Universal Resource Identifier)
• When accessed, a resource returns a representation
http://myfooty.com/players/henrique
http://myfooty.com/players/neymar
Hypermedia
Http
Resources
18. Web neutrality
• In his famous 2001 bath-tub talk Don Box
drew the line between web pages and web
services by defining their consuming life
forms:
Carbon based Silicon based
Web Pages Web Services
19. RMM – Level two services
• Level two services use HTTP mechanisms
properly:
– Verbs
– Status codes
– Headers
Hypermedia
Http
Resources
20. HTTP verbs
• HTTP defines different methods (sometimes
called verbs) to indicate a desired action to be
performed on a resource
• These verbs define a common terminology
that is accepted by users, developers and the
infrastructure of the World Wide Web
22. HTTP status codes
• In addition to a response message, HTTP uses
status codes to communicate to the clients the
resultant status of the operation
• The first digit of the status code specifies one of
five classes of response:
– 1xx Informational
– 2xx Success
– 3xx Redirection
– 4xx Client Error
– 5xx Server Error
23. HTTP headers
• HTTP uses headers to transfer metadata
regarding the message’s content and transport
• HTTP headers are one of HTTP’s main
extensibility points
25. RMM – Level three services
• Level one and two services deal with
resources which represent entities
• Level three services introduce flow
management via hypermedia controls (For
example: links)
Hypermedia
Http
Resources
26. RMM – Level three services
• Hypermedia is used as a logical extension of
the term hypertext in which graphics, audio,
video, plain text and hyperlinks intertwine to
create a generally non-linear medium of
information.
http://en.wikipedia.org/wiki/Hypermedia
Hypermedia
Http
Resources
28. Hypermedia Patterns
• Hypermedia can be used to express different
behaviors in an application:
– Control flow management (State machine)
– Discoverability and versioning
– Properties management
– Aspect management
– Paging
30. Media types (MIME)
• HTTP media types are used to describe the
format of the message body
• In REST media types are used describe
representations, hypermedia controls, and
processing rules
• By creating a media type we can define the
application’s domain
32. Cache the REST
• HTTP caches can store copies of the responses
along the request response path to reduce
network traffic
• HTTP caches reduces call latency
• Caches are a main factor for scalability on the
web
33. Types of Cache
• Browser Cache
Stores representations locally on the computer’s hard drive
• Proxy Cache
Corporates and ISPs provide shared proxies providing shared cache
on their network
• Gateway (Reverse Proxy) Cache
Stores representations on behalf of the server. Content Delivery
Networks (CDNs) use gateway cache distributed around the web
34. Controlling Cache
• HTTP headers can be used to control cache
behaviors
• HTTP provides method the avoid staleness of
cached data
– Expiration
– Validation
36. Summary
• HTTP is a powerful application level protocol
• Built to serve the worlds largest information
system
• REST provides an architecture that enables
better use of the inherent scaling capabilities of
the web
• Hypermedia enables us to scale and grow our
application
37.
38. My Blog ASP.NET Web APIs
http://bit.ly/roadan http://www.asp.net/web-api/
(best viewed from multiple ip addresses)
Architectural Styles and the Design of HTTP/1.1 Specifications
http://www.w3.org/Protocols/
Network-based Software Architectures
Roy Fielding
http://www.ics.uci.edu/~fielding/pubs/dissertation/top.htm
REST in practice (Book)
http://restinpractice.com/default.aspx
Debugging the web with Fiddler
Ido Flatow
http://scc.sela.co.il/SCC/Pages/ShowLecture/ShowLecture.aspx?lectureId=642
Editor's Notes
Focuses on improving web communication by using mechanizes like caching, ETags, the TRACE verb etc.
Focuses on improving web communication by using mechanizes like caching, ETags, the TRACE verb etc.
This model allows a resource to manage its own state while the client manages the application stateRepresentations can also be cached
The “web” uses resources and their representations for caching and scalability.Resources prevent the need to dibranchiate web pages and services
This model allows a resource to manage its own state while the client manages the application state
This model allows a resource to manage its own state while the client manages the application state