Colorado Software Summit: October 19 – 24, 2008   © Copyright 2008, Yahoo! Inc.




               RESTful Web Apps
      ...
Colorado Software Summit: October 19 – 24, 2008   © Copyright 2008, Yahoo! Inc.




                About
   Tech Yahoo!
...
Colorado Software Summit: October 19 – 24, 2008   © Copyright 2008, Yahoo! Inc.




                Disclaimer


   All th...
Colorado Software Summit: October 19 – 24, 2008   © Copyright 2008, Yahoo! Inc.




                A Confession
   Not a...
Colorado Software Summit: October 19 – 24, 2008    © Copyright 2008, Yahoo! Inc.




                Agenda


            ...
Colorado Software Summit: October 19 – 24, 2008   © Copyright 2008, Yahoo! Inc.




                Some History
 1945 - V...
Colorado Software Summit: October 19 – 24, 2008                © Copyright 2008, Yahoo! Inc.




                Two Sides...
Colorado Software Summit: October 19 – 24, 2008   © Copyright 2008, Yahoo! Inc.




       WEB IS MOSTLY RESTFUL




Subbu...
Colorado Software Summit: October 19 – 24, 2008   © Copyright 2008, Yahoo! Inc.




                Being RESTful
 Resourc...
Colorado Software Summit: October 19 – 24, 2008        © Copyright 2008, Yahoo! Inc.




                Resources and URI...
Colorado Software Summit: October 19 – 24, 2008   © Copyright 2008, Yahoo! Inc.




                Cost of Personalized U...
Colorado Software Summit: October 19 – 24, 2008                   © Copyright 2008, Yahoo! Inc.




                Repres...
Colorado Software Summit: October 19 – 24, 2008       © Copyright 2008, Yahoo! Inc.




                Hypermedia and HAT...
Colorado Software Summit: October 19 – 24, 2008        © Copyright 2008, Yahoo! Inc.




                Uniform Interface...
Colorado Software Summit: October 19 – 24, 2008   © Copyright 2008, Yahoo! Inc.




                Back Button
 Cache-Con...
Colorado Software Summit: October 19 – 24, 2008           © Copyright 2008, Yahoo! Inc.




                Caching
   We...
Colorado Software Summit: October 19 – 24, 2008   © Copyright 2008, Yahoo! Inc.




                Caching Choices
   Ba...
Colorado Software Summit: October 19 – 24, 2008   © Copyright 2008, Yahoo! Inc.




                Ajax Apps
   More opp...
Colorado Software Summit: October 19 – 24, 2008   © Copyright 2008, Yahoo! Inc.




                Cross-Domain Hacks
  ...
Colorado Software Summit: October 19 – 24, 2008   © Copyright 2008, Yahoo! Inc.




                Web is Mostly RESTful
...
Colorado Software Summit: October 19 – 24, 2008   © Copyright 2008, Yahoo! Inc.




       WEB FRAMEWORKS




Subbu Allama...
Colorado Software Summit: October 19 – 24, 2008   © Copyright 2008, Yahoo! Inc.




                State of Affairs

    ...
Colorado Software Summit: October 19 – 24, 2008   © Copyright 2008, Yahoo! Inc.




                Circa 1997-
   There ...
Colorado Software Summit: October 19 – 24, 2008                     © Copyright 2008, Yahoo! Inc.




                Circ...
Colorado Software Summit: October 19 – 24, 2008   © Copyright 2008, Yahoo! Inc.




                Circa 2004-
   Enter ...
Colorado Software Summit: October 19 – 24, 2008   © Copyright 2008, Yahoo! Inc.




                Design Choice




Subb...
Colorado Software Summit: October 19 – 24, 2008   © Copyright 2008, Yahoo! Inc.




                Where to keep this stu...
Colorado Software Summit: October 19 – 24, 2008              © Copyright 2008, Yahoo! Inc.




                Consequence...
Colorado Software Summit: October 19 – 24, 2008                          © Copyright 2008, Yahoo! Inc.




               ...
Colorado Software Summit: October 19 – 24, 2008   © Copyright 2008, Yahoo! Inc.




                URI Overloading
   On...
Colorado Software Summit: October 19 – 24, 2008   © Copyright 2008, Yahoo! Inc.




                Content Negotiation

 ...
Colorado Software Summit: October 19 – 24, 2008   © Copyright 2008, Yahoo! Inc.




                Some Options
   Vary ...
Colorado Software Summit: October 19 – 24, 2008   © Copyright 2008, Yahoo! Inc.




                JSF Compromise

 <cont...
Colorado Software Summit: October 19 – 24, 2008                       © Copyright 2008, Yahoo! Inc.




                Im...
Colorado Software Summit: October 19 – 24, 2008   © Copyright 2008, Yahoo! Inc.




                Consequence



       ...
Colorado Software Summit: October 19 – 24, 2008   © Copyright 2008, Yahoo! Inc.




                JSF vs REST
   Caught...
Colorado Software Summit: October 19 – 24, 2008   © Copyright 2008, Yahoo! Inc.




                JSF – Takeaway
   Foc...
Colorado Software Summit: October 19 – 24, 2008   © Copyright 2008, Yahoo! Inc.




       WEB 2.0 MOTIVATED




Subbu All...
Colorado Software Summit: October 19 – 24, 2008   © Copyright 2008, Yahoo! Inc.




                GWT
   A cross-compil...
Colorado Software Summit: October 19 – 24, 2008   © Copyright 2008, Yahoo! Inc.




                GWT-RPC


 Object resu...
Colorado Software Summit: October 19 – 24, 2008   © Copyright 2008, Yahoo! Inc.




                GWT-RPC over HTTP




...
Colorado Software Summit: October 19 – 24, 2008   © Copyright 2008, Yahoo! Inc.




                GWT-RPC over HTTP
   ...
Colorado Software Summit: October 19 – 24, 2008   © Copyright 2008, Yahoo! Inc.




                GWT – Request Builder
...
Colorado Software Summit: October 19 – 24, 2008   © Copyright 2008, Yahoo! Inc.




                RequestBuilder over HT...
Colorado Software Summit: October 19 – 24, 2008   © Copyright 2008, Yahoo! Inc.




                GWT Takeway
   Focuse...
Colorado Software Summit: October 19 – 24, 2008   © Copyright 2008, Yahoo! Inc.




                Fixing GWT?

 Object r...
Colorado Software Summit: October 19 – 24, 2008   © Copyright 2008, Yahoo! Inc.




                SOFEA
   Central prem...
Colorado Software Summit: October 19 – 24, 2008                     © Copyright 2008, Yahoo! Inc.




                HATE...
Colorado Software Summit: October 19 – 24, 2008   © Copyright 2008, Yahoo! Inc.




                Appcelerator
   A SOF...
Colorado Software Summit: October 19 – 24, 2008   © Copyright 2008, Yahoo! Inc.




                XML over POST




Subb...
Colorado Software Summit: October 19 – 24, 2008   © Copyright 2008, Yahoo! Inc.




                Interesting … but
   ...
Colorado Software Summit: October 19 – 24, 2008   © Copyright 2008, Yahoo! Inc.




                Thanks
   Don’t fight...
Upcoming SlideShare
Loading in...5
×

RESTful Web Apps - Facts vs Fiction

3,372

Published on

A session at the Colorado Software Summit on the RESTfulness of the web architecture and some comments on some existing web frameworks

Published in: Technology
0 Comments
6 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
3,372
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
112
Comments
0
Likes
6
Embeds 0
No embeds

No notes for slide

Transcript of "RESTful Web Apps - Facts vs Fiction"

  1. 1. Colorado Software Summit: October 19 – 24, 2008 © Copyright 2008, Yahoo! Inc. RESTful Web Apps Facts vs Fiction Subbu Allamaraju Yahoo! Inc || http://subbu.org Subbu Allamaraju - RESTful Web Applications
  2. 2. Colorado Software Summit: October 19 – 24, 2008 © Copyright 2008, Yahoo! Inc. About   Tech Yahoo!  Developing standards, patterns and practices for HTTP web APIs   Past  Developer – web services and Java  Standards contributor at BEA  Wrote books on JEE web tier (so long ago)   Current Passion  HTTP and REST Subbu Allamaraju – RESTful Web Apps Slide 2
  3. 3. Colorado Software Summit: October 19 – 24, 2008 © Copyright 2008, Yahoo! Inc. Disclaimer All the opinions I express here are mine and do not necessarily represent those of my present or past employers. Subbu Allamaraju – RESTful Web Apps 3
  4. 4. Colorado Software Summit: October 19 – 24, 2008 © Copyright 2008, Yahoo! Inc. A Confession   Not a web developer   Not directly interested in the internals of web frameworks   Only interested in the visible aspects of web apps Subbu Allamaraju – RESTful Web Apps 4
  5. 5. Colorado Software Summit: October 19 – 24, 2008 © Copyright 2008, Yahoo! Inc. Agenda REST – The Architecture About RESTfulness of Web Apps Subbu Allamaraju – RESTful Web Apps 5
  6. 6. Colorado Software Summit: October 19 – 24, 2008 © Copyright 2008, Yahoo! Inc. Some History 1945 - Vannevar Bush arbitrary linking between pieces of information 1965 – Ted Nelson (Xanadu fame) hypertext and hypermedia 1990s – Tim Berners-Lee, Roy Fielding et. al. WWW, HTML, HTTP and URI HTTP 1.1 - RFC 2616 URI - RFC 2396 (superceded by 3986) 2000 – Roy Fielding Representational State Transfer Subbu Allamaraju – RESTful Web Apps 6
  7. 7. Colorado Software Summit: October 19 – 24, 2008 © Copyright 2008, Yahoo! Inc. Two Sides RPC HTTP, URI, WWW REST Web frameworks SOAP MVC “Pragmatic This WS-* REST” session Web 2.0 REST + REST URIs (?) Machine Facing Human Facing Subbu Allamaraju – RESTful Web Apps 7
  8. 8. Colorado Software Summit: October 19 – 24, 2008 © Copyright 2008, Yahoo! Inc. WEB IS MOSTLY RESTFUL Subbu Allamaraju – RESTful Web Apps 8
  9. 9. Colorado Software Summit: October 19 – 24, 2008 © Copyright 2008, Yahoo! Inc. Being RESTful Resources Named via URIs Uniquely identify resources Have representations Mostly one/resource Reflect the state of the app HATEOAS Contain contextual links Uniform interface Generic, Client-Server Idempotent, safe, cacheable … Subbu Allamaraju – RESTful Web Apps 9
  10. 10. Colorado Software Summit: October 19 – 24, 2008 © Copyright 2008, Yahoo! Inc. Resources and URIs   Resources and URIs  A blog post, an image, a catalog, a shopping cart   Some personalized, but most are not   Some depend on sessions, but most do not Subbu Allamaraju – RESTful Web Apps 10
  11. 11. Colorado Software Summit: October 19 – 24, 2008 © Copyright 2008, Yahoo! Inc. Cost of Personalized UI http://my.example.org vs http://www.example.org/subbu Subbu Allamaraju – RESTful Web Apps 11
  12. 12. Colorado Software Summit: October 19 – 24, 2008 © Copyright 2008, Yahoo! Inc. Representations   Rich of representations  HTML, XML, JS, PDF, CSS, Flash, …   Poor content negotiation   Agent-driven negotiation + Poor negotiation headers   Media types on responses ignored sometimes Constrained by HTML   <a href=“mydoc.pdf”>Click</a> <a href=“myfeed.rss”>RSS Feed</a> <a href=“myfeed.atom”>Atom Feed</a> Subbu Allamaraju – RESTful Web Apps 12
  13. 13. Colorado Software Summit: October 19 – 24, 2008 © Copyright 2008, Yahoo! Inc. Hypermedia and HATEOAS   Rich Hypermedia  Links and forms  Contextual   Auto-discoverable  <link/>, microformats   Except some new breed of Web Too Oh + REST goo Subbu Allamaraju – RESTful Web Apps 13
  14. 14. Colorado Software Summit: October 19 – 24, 2008 © Copyright 2008, Yahoo! Inc. Uniform Interface   Links and Forms  GET and POST   Still some misconceptions (e.g. POST is secure)   Idempotency? Safety?   GET URIs not always refreshable   Still fighting the back button Subbu Allamaraju – RESTful Web Apps 14
  15. 15. Colorado Software Summit: October 19 – 24, 2008 © Copyright 2008, Yahoo! Inc. Back Button Cache-Control: no-cache,no-store Redirect after POST a.k.a. PRG (POST/redirect/GET) Subbu Allamaraju – RESTful Web Apps 15
  16. 16. Colorado Software Summit: October 19 – 24, 2008 © Copyright 2008, Yahoo! Inc. Caching   Web is read-most   Cacheable   Widely discussed   Yet moderately ignored   Cache busting   Cache-ignorant frameworks   Frameworks that prefer backend caching over HTTP caching Subbu Allamaraju – RESTful Web Apps 16
  17. 17. Colorado Software Summit: October 19 – 24, 2008 © Copyright 2008, Yahoo! Inc. Caching Choices   Back-end caching  Non-uniform interface  Need to explicitly program to it   HTTP caching  Uniform interface  Pluggable Subbu Allamaraju – RESTful Web Apps 17
  18. 18. Colorado Software Summit: October 19 – 24, 2008 © Copyright 2008, Yahoo! Inc. Ajax Apps   More opportunities to be RESTful  Full support for the uniform interface  Content negotiation, optimistic concurrency, caching  HATEOAS • Can loosen this constraint as long as the client code is downloaded from the same server/app Subbu Allamaraju – RESTful Web Apps 18
  19. 19. Colorado Software Summit: October 19 – 24, 2008 © Copyright 2008, Yahoo! Inc. Cross-Domain Hacks   script, iframe   Tunnel requests over GET Subbu Allamaraju – RESTful Web Apps 19
  20. 20. Colorado Software Summit: October 19 – 24, 2008 © Copyright 2008, Yahoo! Inc. Web is Mostly RESTful Take advantage of the web arch Breaking is EXPENSIVE Breaking is CONFUSING Breaking LOWERS expectations Subbu Allamaraju – RESTful Web Apps 20
  21. 21. Colorado Software Summit: October 19 – 24, 2008 © Copyright 2008, Yahoo! Inc. WEB FRAMEWORKS Subbu Allamaraju – RESTful Web Apps 21
  22. 22. Colorado Software Summit: October 19 – 24, 2008 © Copyright 2008, Yahoo! Inc. State of Affairs Ease of programming Fragmentation and confusion Innovation vs Correctness Subbu Allamaraju – RESTful Web Apps 22
  23. 23. Colorado Software Summit: October 19 – 24, 2008 © Copyright 2008, Yahoo! Inc. Circa 1997-   There were servlets   Basic plumbing, closely reflecting HTTP 1.1   A poor programming model   But allowed a lot of frameworks to be built on top Subbu Allamaraju – RESTful Web Apps 23
  24. 24. Colorado Software Summit: October 19 – 24, 2008 © Copyright 2008, Yahoo! Inc. Circa 2001- Action Oriented Subbu Allamaraju – RESTful Web Apps 24
  25. 25. Colorado Software Summit: October 19 – 24, 2008 © Copyright 2008, Yahoo! Inc. Circa 2004-   Enter JSF & Co.  A component based UI framework   With known limitations  Complex  Slow  Uses POST for almost everything  And so on…   Third-party patches Subbu Allamaraju – RESTful Web Apps 25
  26. 26. Colorado Software Summit: October 19 – 24, 2008 © Copyright 2008, Yahoo! Inc. Design Choice Subbu Allamaraju – RESTful Web Apps 26
  27. 27. Colorado Software Summit: October 19 – 24, 2008 © Copyright 2008, Yahoo! Inc. Where to keep this stuff? Subbu Allamaraju – RESTful Web Apps 27
  28. 28. Colorado Software Summit: October 19 – 24, 2008 © Copyright 2008, Yahoo! Inc. Consequence We know. So what? Subbu Allamaraju – RESTful Web Apps 28
  29. 29. Colorado Software Summit: October 19 – 24, 2008 © Copyright 2008, Yahoo! Inc. URI Overloading Resource Client 1 (URI) Representation Resource Client 2 (URI) Different Representation How was this chosen? Subbu Allamaraju – RESTful Web Apps 29
  30. 30. Colorado Software Summit: October 19 – 24, 2008 © Copyright 2008, Yahoo! Inc. URI Overloading   One URI – multiple representations  No way to tell how a representation was chosen  Can get wrong content from a cache   HTTP does allow URI overloading  Content negotiation aka “conneg” Subbu Allamaraju – RESTful Web Apps 30
  31. 31. Colorado Software Summit: October 19 – 24, 2008 © Copyright 2008, Yahoo! Inc. Content Negotiation Accept: application/atom+xml;q=1.0,text/html;q=0.1 Accept-Charset: UTF-8 Accept-Language: fr;q=1.0,en=0.8 Accept-Encoding: gzip,deflate Content-Type: application/atom+xml;charset=UTF-8 Content-Encoding: deflate Vary: Accept,Accept-Encoding Subbu Allamaraju – RESTful Web Apps 31
  32. 32. Colorado Software Summit: October 19 – 24, 2008 © Copyright 2008, Yahoo! Inc. Some Options   Vary by cookie  Not always recognized by caches  Complex given the parameters in a cookie • Domain, path, life time etc   URLEncode  Encode session ID into URIs • ;jsessionid=d8sdasg7312   Cache-control: no-cache,no-store Subbu Allamaraju – RESTful Web Apps 32
  33. 33. Colorado Software Summit: October 19 – 24, 2008 © Copyright 2008, Yahoo! Inc. JSF Compromise <context-param> <param-name> javax.faces.STATE_SAVING_METHOD </param-name> <param-value> client </param-value> </context-param> Subbu Allamaraju – RESTful Web Apps 33
  34. 34. Colorado Software Summit: October 19 – 24, 2008 © Copyright 2008, Yahoo! Inc. Implementation Every request must be a POST <form method=quot;POSTquot; action=quot;…quot; enctype=quot;…quot;> <input type=quot;hiddenquot; name=quot;javax.faces.ViewState” value=quot;H4s…zogsAAA==quot; /> … State stuffed into forms as a </form> hidden field Subbu Allamaraju – RESTful Web Apps 34
  35. 35. Colorado Software Summit: October 19 – 24, 2008 © Copyright 2008, Yahoo! Inc. Consequence Breaks the uniform interface Subbu Allamaraju – RESTful Web Apps 35
  36. 36. Colorado Software Summit: October 19 – 24, 2008 © Copyright 2008, Yahoo! Inc. JSF vs REST   Caught between two extremes  URIs no longer sufficient to identify a resource  Interactions assume existence of session state – i.e. no longer stateless  Uniform interface limited to POST  Interactions not idempotent  Representations not cacheable Subbu Allamaraju – RESTful Web Apps 36
  37. 37. Colorado Software Summit: October 19 – 24, 2008 © Copyright 2008, Yahoo! Inc. JSF – Takeaway   Focused heavily on a UI component model (AWT for the Web)   Misinterpreted the web architecture   Made some fundamental questionable choices   You can patch, but can not fix  15+ Ajax patches! Subbu Allamaraju – RESTful Web Apps 37
  38. 38. Colorado Software Summit: October 19 – 24, 2008 © Copyright 2008, Yahoo! Inc. WEB 2.0 MOTIVATED Subbu Allamaraju – RESTful Web Apps 38
  39. 39. Colorado Software Summit: October 19 – 24, 2008 © Copyright 2008, Yahoo! Inc. GWT   A cross-compilation based framework  Write Java – generate JavaScript  Mashes up client and server code into single source  These layers communicate using GWT-RPC   Typical RPC concern does not apply  Coupling due to code generation  Client downloaded from the same app Subbu Allamaraju – RESTful Web Apps 39
  40. 40. Colorado Software Summit: October 19 – 24, 2008 © Copyright 2008, Yahoo! Inc. GWT-RPC Object result = someServ.doIt(new MyCallback()); public class MyCallback extends AsyncCallback() { public void onsuccess(Object result) { ... } } Subbu Allamaraju – RESTful Web Apps 40
  41. 41. Colorado Software Summit: October 19 – 24, 2008 © Copyright 2008, Yahoo! Inc. GWT-RPC over HTTP Subbu Allamaraju – RESTful Web Apps 41
  42. 42. Colorado Software Summit: October 19 – 24, 2008 © Copyright 2008, Yahoo! Inc. GWT-RPC over HTTP   Method calls POSTed to the server  Transport object graphs  Uses HTTP like a transport layer   Non uniform interface Subbu Allamaraju – RESTful Web Apps 42
  43. 43. Colorado Software Summit: October 19 – 24, 2008 © Copyright 2008, Yahoo! Inc. GWT – Request Builder String url = quot;...quot;; RequestBuilder builder = new RequestBuilder(RequestBuilder.GET, URL.encode(url)); builder.sendRequest(data, callback); Subbu Allamaraju – RESTful Web Apps 43
  44. 44. Colorado Software Summit: October 19 – 24, 2008 © Copyright 2008, Yahoo! Inc. RequestBuilder over HTTP   More control over HTTP requests   Supports GET and POST   Allows so-called RESTful layers  GWT-REST  GWT-Restlet Subbu Allamaraju – RESTful Web Apps 44
  45. 45. Colorado Software Summit: October 19 – 24, 2008 © Copyright 2008, Yahoo! Inc. GWT Takeway   Focused heavily on ease of use  Javascript agnostic   Modeled after RPC  Breaks uniform interface  Backend caching over HTTP caching   Fixable Subbu Allamaraju – RESTful Web Apps 45
  46. 46. Colorado Software Summit: October 19 – 24, 2008 © Copyright 2008, Yahoo! Inc. Fixing GWT? Object result = someServ.doGet(new MyCallback()); Object result = someServ.doPost(new MyCallback()); Object result = someServ.doPut(new MyCallback()); Object result = someServ.doDelete(new MyCallback()); Object result = someServ.doHead(new MyCallback()); Subbu Allamaraju – RESTful Web Apps 46
  47. 47. Colorado Software Summit: October 19 – 24, 2008 © Copyright 2008, Yahoo! Inc. SOFEA   Central premise – SOA  Business logic as reusable services • Change less often  Presentation app calling those services • Change more often  Separation of concerns and Loose coupling   Misinterprets HATEOAS Subbu Allamaraju – RESTful Web Apps 47
  48. 48. Colorado Software Summit: October 19 – 24, 2008 © Copyright 2008, Yahoo! Inc. HATEOAS vs SOFEA Download server App download App flow Data interchange Business logic server App container Subbu Allamaraju – RESTful Web Apps 48
  49. 49. Colorado Software Summit: October 19 – 24, 2008 © Copyright 2008, Yahoo! Inc. Appcelerator   A SOFEA style framework with RoR like usability  Attend Matt Riable’s session on “Building Rich Internet Applications with Appcelerator”   SOAP/HTTP style  Message passing  POST to a single URI Subbu Allamaraju – RESTful Web Apps 49
  50. 50. Colorado Software Summit: October 19 – 24, 2008 © Copyright 2008, Yahoo! Inc. XML over POST Subbu Allamaraju – RESTful Web Apps 50
  51. 51. Colorado Software Summit: October 19 – 24, 2008 © Copyright 2008, Yahoo! Inc. Interesting … but   Loosens HATEOAS  Hypermedia to Code + Data   Introduces a different kind of coupling  Clients deal with POX and not links  Breaks URI opacity   Examples  Appcelerator – SOAP like  http://www.applebox.com.au - uses SOAP/POST  http://www.contactoffice.com - uses XML/POST Subbu Allamaraju – RESTful Web Apps 51
  52. 52. Colorado Software Summit: October 19 – 24, 2008 © Copyright 2008, Yahoo! Inc. Thanks   Don’t fight the architecture  Innovate, enhance  Don’t break  Or break judiciously Subbu Allamaraju – RESTful Web Apps 52
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×