REpresentational State Transfer Alexandros Marinos [email_address]
I read way too much…
Social Resource Consumption I consume content by a lot of sources, in many formats. (Web, Feeds, YouTube, Amazon, Flickr, etc.) I share things I find interesting by exposing a Feed, through Google Reader, Facebook, and FriendFeed.  The people who read my feed may share the content with their contacts as well.
http://friendfeed.com/alexandros
Disambiguating SOA
Disambiguating SOA We have two competing styles, arising from different areas of practice.  To make an oversimplification: WS-* started as enterprise technologies and attempts to scale to the web  (Previously: CORBA) REST started as web technologies and claims to be able to satisfy enterprise requirements
Disambiguating SOA Other Contrasts: Top-Down vs. Bottom-Up Resource-orientation vs. Endpoint-Orientation Again, Enterprise vs. web origins.
What is REST Not? REST is agnostic to the underlying network architecture (P2P or Client-Server). It is only concerned with the interface that services expose and are accessed through.
What is REST? An Architectural Style (Such as RPC), Essentially a set of principles. A way to decompose an application into smaller parts, so that the whole works better in a distributed setting. A proven design pattern for building loosely-coupled, highly-scalable applications.
A Little REST Magic Enter this in your browser: http://www.youtube.com/user/openmicman
A Little REST Magic Now, try this: http://gdata.youtube.com/feeds/users/openmicman
Key REST Principles Give every “thing” an ID Link things together Use standard methods Communicate statelessly
Give every “thing” an ID http://gdata.youtube.com/feeds/users/openmicman http://gdata.youtube.com/feeds/users/openmicman/favorites http://www.youtube.com/watch?v=6aKe5baPJCQ
Link things together <order self='http://example.com/customers/1234' >  <amount>23</amount>  <product ref='http://example.com/products/4554' />  <customer ref='http://example.com/customers/1234' />  </order>
Use standard methods GET Properties: Safe, Idempotent Usage: Retrieving a resource PUT Properties: Idempotent Usage: Creating or updating a resource at a known URI DELETE Properties: Idempotent Usage: Deleting a resource POST Properties: UNSAFE Creating a resource within a collection (URI set by server)
Example: WS-Style
Example: REST-Style
Communicate statelessly REST mandates that state be either turned into resource state, or kept on the client. Reduces burden on the server Reduces coupling with a specific machine
Suitability for Mobile  Devices By using REST over HTTP instead of SOAP, we can drastically reduce the overhead of message processing An HTTP server implementation is feasible for a mobile device http://opensource.nokia.com/projects/mobile-web-server/
Who is using REST? Google GData, OpenSocial Standards Atom, WebDAV Amazon S3, SimpleDB Microsoft (!) Project Astoria, Web3S Um… the Web.
REST Resources RESTful Web Services (2007) – Leonard Richardson and Sam Ruby – O’Reilly Roy T. Fielding‘s PhD Thesis: “Architectural Styles and the Design of Network-Based Software Architectures” A Brief Introduction to REST by Stefan Tilkov http://www.infoq.com/articles/rest-introduction
An Idea Many of us use web applications (Feed Readers, Photo Sharing, Social Bookmaring, Lifestreaming) Therefore we are sharing feeds of various things (Articles, Photos, Favourites, Status Updates) That is a lot of data on a bottom-up knowledge space that is forming.
An Idea It would be interesting to learn what these feeds are Resources will reoccur or propagate from feed to feed this may form patterns which may be interesting from a practical or theoretical point of view
Questions?
Atom Atom Syndication Format A Feed specification based on RSS 2.0 Atom Publishing Protocol a simple HTTP-based protocol for creating and updating web resources.
Google OpenSocial Open Competitor to Facebook’s Application Platform Exposes Three RESTful APIs: People and Friends data API Activities data API Persistence data API
SOA? If this sounds like SOA, where are the WSDL, SOAP, UDDI in all this? This scenario is actually based on HTTP, RSS, Atom, XML and URI. There is more than one way to do SOA
Disambiguating SOA Business Architecture? SOA! Technical Architectural Style? SOA! And what do we implement it with? Web Services!
Disambiguating SOA Business Architecture? SOA Technical Architectural Style? RPC Implementation? WS-* Stack  (SOAP, WSDL, UDDI, WS-…) http://en.wikipedia.org/wiki/WS-*
Disambiguating SOA Business Architecture? SOA. Technical Architectural Style? REST Implementation? HTTP, URI, XML
REST Constraints REST has four architectural constraints: separation of resource from representation,  uniform interface,  self-descriptive messages, and  hypermedia as the engine of application state.  ( http://www.stucharlton.com/blog/archives/000141.html  )
Resource Oriented Architecture? ROA is the term for REST on HTTP/URI A Service consists of all the resources available within a certain domain of control Since REST is a type of SOA, ROA is an implementation of SOA as well.
REST Important ‘things’ (nouns) are Resources Addressed through a URI Uniform interface (verbs) In HTTP: GET, PUT, POST, DELETE Verb-noun seperation makes integration easier GET /customer/45  Instead of getCustomer(45) OR viewCustomer(45) OR showCustomer(45)
HTTP Verbs GET Properties: Safe, Idempotent Usage: Retrieving a resource POST Properties: UNSAFE Creating a resource within a collection (resource URI unknown) PUT Properties: Idempotent Usage: Creating or updating a resource at a known URI DELETE Properties: Idempotent Usage: Deleting a resource
Give every “thing” an ID Resources are not only represented as XML XML formats (HTML, XHTML, RSS, etc.) JPG, GIF, PNG MP3, WAV, OGG Anything else that can be on the web. Thomas: maybe Resources = Knowledge Services?

Modified REST Presentation

  • 1.
    REpresentational State TransferAlexandros Marinos [email_address]
  • 2.
    I read waytoo much…
  • 3.
    Social Resource ConsumptionI consume content by a lot of sources, in many formats. (Web, Feeds, YouTube, Amazon, Flickr, etc.) I share things I find interesting by exposing a Feed, through Google Reader, Facebook, and FriendFeed. The people who read my feed may share the content with their contacts as well.
  • 4.
  • 5.
  • 6.
    Disambiguating SOA Wehave two competing styles, arising from different areas of practice. To make an oversimplification: WS-* started as enterprise technologies and attempts to scale to the web (Previously: CORBA) REST started as web technologies and claims to be able to satisfy enterprise requirements
  • 7.
    Disambiguating SOA OtherContrasts: Top-Down vs. Bottom-Up Resource-orientation vs. Endpoint-Orientation Again, Enterprise vs. web origins.
  • 8.
    What is RESTNot? REST is agnostic to the underlying network architecture (P2P or Client-Server). It is only concerned with the interface that services expose and are accessed through.
  • 9.
    What is REST?An Architectural Style (Such as RPC), Essentially a set of principles. A way to decompose an application into smaller parts, so that the whole works better in a distributed setting. A proven design pattern for building loosely-coupled, highly-scalable applications.
  • 10.
    A Little RESTMagic Enter this in your browser: http://www.youtube.com/user/openmicman
  • 11.
    A Little RESTMagic Now, try this: http://gdata.youtube.com/feeds/users/openmicman
  • 12.
    Key REST PrinciplesGive every “thing” an ID Link things together Use standard methods Communicate statelessly
  • 13.
    Give every “thing”an ID http://gdata.youtube.com/feeds/users/openmicman http://gdata.youtube.com/feeds/users/openmicman/favorites http://www.youtube.com/watch?v=6aKe5baPJCQ
  • 14.
    Link things together<order self='http://example.com/customers/1234' > <amount>23</amount> <product ref='http://example.com/products/4554' /> <customer ref='http://example.com/customers/1234' /> </order>
  • 15.
    Use standard methodsGET Properties: Safe, Idempotent Usage: Retrieving a resource PUT Properties: Idempotent Usage: Creating or updating a resource at a known URI DELETE Properties: Idempotent Usage: Deleting a resource POST Properties: UNSAFE Creating a resource within a collection (URI set by server)
  • 16.
  • 17.
  • 18.
    Communicate statelessly RESTmandates that state be either turned into resource state, or kept on the client. Reduces burden on the server Reduces coupling with a specific machine
  • 19.
    Suitability for Mobile Devices By using REST over HTTP instead of SOAP, we can drastically reduce the overhead of message processing An HTTP server implementation is feasible for a mobile device http://opensource.nokia.com/projects/mobile-web-server/
  • 20.
    Who is usingREST? Google GData, OpenSocial Standards Atom, WebDAV Amazon S3, SimpleDB Microsoft (!) Project Astoria, Web3S Um… the Web.
  • 21.
    REST Resources RESTfulWeb Services (2007) – Leonard Richardson and Sam Ruby – O’Reilly Roy T. Fielding‘s PhD Thesis: “Architectural Styles and the Design of Network-Based Software Architectures” A Brief Introduction to REST by Stefan Tilkov http://www.infoq.com/articles/rest-introduction
  • 22.
    An Idea Manyof us use web applications (Feed Readers, Photo Sharing, Social Bookmaring, Lifestreaming) Therefore we are sharing feeds of various things (Articles, Photos, Favourites, Status Updates) That is a lot of data on a bottom-up knowledge space that is forming.
  • 23.
    An Idea Itwould be interesting to learn what these feeds are Resources will reoccur or propagate from feed to feed this may form patterns which may be interesting from a practical or theoretical point of view
  • 24.
  • 25.
    Atom Atom SyndicationFormat A Feed specification based on RSS 2.0 Atom Publishing Protocol a simple HTTP-based protocol for creating and updating web resources.
  • 26.
    Google OpenSocial OpenCompetitor to Facebook’s Application Platform Exposes Three RESTful APIs: People and Friends data API Activities data API Persistence data API
  • 27.
    SOA? If thissounds like SOA, where are the WSDL, SOAP, UDDI in all this? This scenario is actually based on HTTP, RSS, Atom, XML and URI. There is more than one way to do SOA
  • 28.
    Disambiguating SOA BusinessArchitecture? SOA! Technical Architectural Style? SOA! And what do we implement it with? Web Services!
  • 29.
    Disambiguating SOA BusinessArchitecture? SOA Technical Architectural Style? RPC Implementation? WS-* Stack (SOAP, WSDL, UDDI, WS-…) http://en.wikipedia.org/wiki/WS-*
  • 30.
    Disambiguating SOA BusinessArchitecture? SOA. Technical Architectural Style? REST Implementation? HTTP, URI, XML
  • 31.
    REST Constraints RESThas four architectural constraints: separation of resource from representation, uniform interface, self-descriptive messages, and hypermedia as the engine of application state. ( http://www.stucharlton.com/blog/archives/000141.html )
  • 32.
    Resource Oriented Architecture?ROA is the term for REST on HTTP/URI A Service consists of all the resources available within a certain domain of control Since REST is a type of SOA, ROA is an implementation of SOA as well.
  • 33.
    REST Important ‘things’(nouns) are Resources Addressed through a URI Uniform interface (verbs) In HTTP: GET, PUT, POST, DELETE Verb-noun seperation makes integration easier GET /customer/45 Instead of getCustomer(45) OR viewCustomer(45) OR showCustomer(45)
  • 34.
    HTTP Verbs GETProperties: Safe, Idempotent Usage: Retrieving a resource POST Properties: UNSAFE Creating a resource within a collection (resource URI unknown) PUT Properties: Idempotent Usage: Creating or updating a resource at a known URI DELETE Properties: Idempotent Usage: Deleting a resource
  • 35.
    Give every “thing”an ID Resources are not only represented as XML XML formats (HTML, XHTML, RSS, etc.) JPG, GIF, PNG MP3, WAV, OGG Anything else that can be on the web. Thomas: maybe Resources = Knowledge Services?