User Tools

Site Tools


at-m42:lecture11

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
at-m42:lecture11 [2009/04/17 08:56] eechrisat-m42:lecture11 [2011/01/14 12:45] (current) – external edit 127.0.0.1
Line 379: Line 379:
  
 ===== Resources with multiple representations ===== ===== Resources with multiple representations =====
 +
 +  * An HTTP client is expected to be able to handle multiple resources types and to make use of //content negotiation// to request a particular format:
 +
 +  GET /players/1234 HTTP/1.1
 +  Host: game.com 
 +  Accept: text/html
 +
 +  GET /players/1234 HTTP/1.1
 +  Host: game.com 
 +  Accept: application/atom+xml
 +
 +----
 +
 +There is a significant benefit of having multiple representations of a resource in practice: If you provide both an HTML and an XML representation of your resources, they are consumable not only by your application, but also by every standard Web browser — in other words, information in your application becomes available to everyone who knows how to use the Web.
 +
 ===== Communicate statelessly ===== ===== Communicate statelessly =====
-     +  * HTTP is a //stateless// protocol: every request is a //new request//.  
-    +  * Therefore state must be stored in the client or in the resources. 
 + 
 +===== Impact of REST ===== 
 + 
 +  * World-wide web is built on a RESTful architecture, so you could argue that it's already proved its worth. 
 +  * Becoming more popular for distributed computing: key feature of application frameworks like Rails and Grails. 
 +  * Needs a rethink: away from traditional OO design based around a few nouns and a rich vocabulary of verbs to few verbs and many nouns. 
 ===== Distributed Computing APIs ===== ===== Distributed Computing APIs =====
  
Line 423: Line 445:
   * If some part of the application uses legacy code or is not written in Java then use CORBA   * If some part of the application uses legacy code or is not written in Java then use CORBA
   * SOAP is a recent attempt to simplify distributed computing by use of XML and standard internet technologies like HTTP.   * SOAP is a recent attempt to simplify distributed computing by use of XML and standard internet technologies like HTTP.
-  * RESTful services recognizes that HTTP itself can provide many of the benefits of CORBA or SOAP much lest cost.+  * RESTful services recognizes that HTTP itself can provide many of the benefits of CORBA or SOAP at much lest cost.
   * JINI is a networking technology that allows small applications or networked devices to communicate with other and dynamically configure themselves to create distributed applications.   * JINI is a networking technology that allows small applications or networked devices to communicate with other and dynamically configure themselves to create distributed applications.
 +
 +===== What Should You Remember? =====
 +
 +Apart from some special cases, current trend (as we'll see) is away from distributed computing using RMI, CORBA and SOAP towards a Web-Based architecture constructed from user-facing HTML clients consuming RESTful services over HTTP and with machine-to-machine communications exploiting XML resource exchange over HTTP. JINI is a niche technology that was in the doldrums for a long time. JNDI, RMI, and SOAP are still important in Enterprise Application Development, but over time, I would expect them to become relegated to very specialized "back office" applications. 
 +
  
 ---- ----
  
-[[Home]] | [[lecture10|Previous Lecture]] | [[Lectures]] | [[lecture11|Next Lecture]] +[[Home]] | [[lecture10|Previous Lecture]] | [[Lectures]] | [[part3|Next Lecture]] 
at-m42/lecture11.1239958560.txt.gz · Last modified: 2011/01/14 12:21 (external edit)