2. What is the alphabet soup? RSS Really Simple Syndication ATOM The Atom Syndication Format JSON JavaScript Object Notation SOAP Simple Object Access Protocol REST Representational State Transfer
6. Really Simple Syndication (RSS) Feeds Format that is used to publish frequently updated information on the Web e.g. blog entries specific channels on news sites ... No single standard RSS 0.91, RSS 1.0 and RSS 2.0 RSS feeds are represented as XML documents
7. RSS Example <?xmlversion="1.0"encoding="iso-8859-1" ?> <rssversion="2.0"> <channel> <title>W3Schools Home Page</title> <link>http://www.w3schools.com</link> <description>Free web building tutorials</description> <item> <title>RSS Tutorial</title> <link>http://www.w3schools.com/rss</link> <description>New RSS tutorial on W3Schools</description> </item> <item> <title>XML Tutorial</title> <link>http://www.w3schools.com/xml</link> <description>New XML tutorial on W3Schools</description> </item> ... </channel> ... </rss> many other elements <language>, <copyright>, <pubDate>, ...
9. ATOM Two related standards Atom Syndication Format similar to RSS supports more content formats (e.g. videos) than RSS Atom Publishing Protocol (APP) HTTP-based approach for creating and editing Web resources similar to the RESTful web service example shown earlier
11. JavaScript Object Notation (JSON) Developed as an XML alternative to represent JavaScript objects as strings Easy to produce and faster to parse than XML supports different data types JSON is based on a subset of JavaScript JSON document can be read via the JavaScript eval() function security issues: note that this approach can be dangerous if the source is not trusted since any JavaScript code might be executed most recent browsers offer a JSON parser recognisesonly JSON data types and rejects any scripts Many Web 2.0 Applications offer a JSON interface Flickr, YouTube, Delicious, ...
14. JSON-RPC Simple JSON-encoded remote procedure call protocol that is very similar to XML-RPC { "version": "1.1", "method": "Math.multiply", "id": "24034824", "params": [128.0, 256.0] } { "version": "1.1", "result": 32768.0, "error": null, "id": "24034824" } JSON-RPC Request JSON-RPC Response
15. Web Services Web-based client-server communication over HTTP Two main types of Web Services Big Web Services Universal Description, Discovery and Integration (UDDI) Web Services Description Language (WSDL) Simple Object Access Protocol (SOAP) RESTful Web Services Better integrated with HTTP and web browsers Making use of PUT, GET and DELETE HTTP methods
17. Big Web Services Universal Description, Discovery and Integration (UDDI) yellow pages for WSDL "global" registry describing available business services very complex Microsoft and IBM shut down their public UDDI registries in 2006 Web Service Description Language (WSDL) XML application to describe a Web Service's functionality complex Simple Object Access Protocol (SOAP) defines an envelope for transporting XML messages The Web Service Stack contains many other protocols BPEL, WS-Security, WS-Reliability, WS-Transaction, ...
19. SOAP Successor of XML-RPC Introduced in 1998 as Simple Object Access Protocol Dave Winer, Don Box, Bob Atkinson and Mohsen Al-Ghosein since version 1.2 the name is no longer treated as an acronym XML-based communication protocol A SOAP message consists of an Envelope element which contains an optional <Header> element a <Body> element remote procedure call or response information SOAP requests are often sent via HTTP POST Request
20. SOAP WS-* services Common in the enterprise Transport neutral XML SOAP (Meta-data) Security, Transactions, Etc. Typically implemented with RPC-based toolkits, feels a lot like COM+
22. SOAP Advantages platform and language independent SOAP over HTTP results in less problems with proxies and firewalls than other remote procedure call solutions There exist a lot of tools and language bindings that automatically create the required client and server-side functionality e.g. Java API for XML Web Services, ASMX, WCF Disadvantages slower than non-verbose protocols Big Web Services are not simple HTTP is reduced to a simple transport protocol for a large amount of XML metadata payload does not make use of the rich functionality offered for HTTP envelopes No mechanism for the caching of results
24. Representational State Transfer (REST) A REST-style architecture has to conform to the following constraints Separation of concerns between client and server Client and server can be developed and replaced independently Uniform interface identificationof resources (e.g. URIs on the Web) manipulationof resources on the server via representation on the client side self-describing messages (e.g. MIME type on the Web) hypermediafor application state (e.g. hypertext links for related resources) Stateless No client state is stored on the server side Cacheability Responses must explicitly or implicitly define if they are cacheable or not Layering Intermediary servers (proxies) can be transparently added between the client and the server code on demand (optional) The server can send application logic (code) to the client (e.g. Java Applets) A service that conforms at least to the first five constraints is called a RESTful service
25. REST Common in public facing services Embraces HTTP Services are modeled as “resources” with unique identifiers (URI’s) HTTP defines a uniform service contract: GET, POST, DELETE, HEAD Resources can be represented as XML, RSS, JSON, etc. HTTP provides the necessary features and scalability A successful design pattern used throughout the web today
26. RESTful Service create or update order #123 PUT http://demo.com/service/order/123 REST Service retrieve order #123 GET http://demo.com/service/order/123 Order #123 delete order #123 DELETE http://demo.com/service/order/123
27. RESTful Web Service Example POST /users HTTP/1.1 Host: wise.vub.ac.be Content-Type: application/xml <?xml version="1.0"?> <user> <name>Kleinermann</name> </user> GET /users/Kleinermann HTTP/1.1 Host: wise.vub.ac.be Accept: application/xml PUT /users/Kleinermann HTTP/1.1 Host: wise.vub.ac.be Content-Type: application/xml <?xml version="1.0"?> <user> <name>Signer</name> </user> DELETE /users/Signer HTTP/1.1 Host: wise.vub.ac.be Accept: application/xm create read update delete
28. How Did We Get Here? Libraries Pascal binary API COM DCOM APIs talk
29. Service-orientation In computing, service-orientation is a design paradigm that specifies the creation of automation logic in the form of services. It is applied as a strategic goal in developing a service-oriented architecture (SOA). Like other design paradigms, service-orientation provides a means of achieving a separation of concerns. http://en.wikipedia.org/wiki/Service-orientation
30. Microsoft’s First XML SOA Tools ASP.NET Web Services (ASMX) Basic XML Over HTTP (SOAP 1.1/1.2) WEB Services Enhancements (WSE) Support for WS-Security & TCP services
31. Windows Communication Framework Abstract or Model Transport Message format Message protocols Extensibility Tries to unify all past models and allows for future changes
32. How to do WCF? Define your data (.NET class) Define service interface (.NET interface) Add WCF attributes Implement service interface (.NET class) Configure endpoints to expose service (.config files)
33. Endpoints? Endpoint Address Where to send messages Binding How to send messages Contract What messages must contain
34. How to consume? WCF on the client uses channels to talk to an endpoint Service (waits for messages) Client Channel endpoint endpoint endpoint endpoint endpoint Metadata endpoint endpoint Metadataimport tool
35. Why use WCF? Developer Productivity Use the same way to communicate all the time Interoperability Flexibility
36. An Alternative to WCF MindTouch DReAM MindTouch DReAM(Distributed REST Application Manager) is a Web-Oriented Architecture Framework (WOAF) for developing lightweight, highly decoupled web-services. The framework includes of a REST microserver and classes for web communication, XML processing, and writing highly asynchronous code. Microsoft .NET and Novell Mono http://developer.mindtouch.com/Dream