1 / 51

Survey about Web Services

Survey about Web Services. CMP167 – Programação com Objetos Distribuídos Prof. Cláudio Geyer Gisele Pinheiro Souza 07/2009. Index. Motivation What is a Web Service? SOAP Characteristics Example: Axis REST Characteristics Example: Restlet Hessian Characteristics Example Conclusion

rasha
Download Presentation

Survey about Web Services

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Survey about Web Services CMP167 – Programação com Objetos Distribuídos Prof. Cláudio Geyer Gisele Pinheiro Souza 07/2009

  2. Index • Motivation • What is a Web Service? • SOAP • Characteristics • Example: Axis • REST • Characteristics • Example: Restlet • Hessian • Characteristics • Example • Conclusion • Bibliography

  3. Motivation • The web services are one of the most popular approaches for making system integration • There are many specifications and implementations for developing a web service • It is hard to find a tutorial that talks about all possibilities of web services development • The goal of this presentation is to put together the different aproaches for web service development

  4. Index • Motivation • What is a Web Service? • SOAP • Characteristics • Example: Axis • REST • Characteristics • Example: Restlet • Hessian • Characteristics • Example • Conclusion • Bibliography

  5. What is a web service? • According to W3C: “A Web service is a software system designed to support interoperable machine-to-machine interaction over a network. It has an interface described in a machine-processable format (specifically WSDL). Other systems interact with the Web service in a manner prescribed by its description using SOAP messages, typically conveyed using HTTP with an XML serialization in conjunction with other Web-related standards.” • But, can only frameworks, which use SOAP and WSDL, be considered web services framework?

  6. Web Services Frameworks • There are many frameworks that uses SOAP and WSDL as the W3C definition: • Example: Axis, Metro Sun • There are many others frameworks called as “web services” frameworks, but they don’t use SOAP and WSDL: • Example: Hessian, Restlet

  7. Index • Motivation • What is a Web Service? • SOAP • Characteristics • Example: Axis • REST • Characteristics • Example: Restlet • Hessian • Characteristics • Example • Conclusion • Bibliography

  8. Discovery UDDI Description WSDL XML Messaging SOAP Transport HTTP Web Services with SOAP - I • Protocol Stack Layers Example

  9. Web Services with SOAP - II • Service Discovery – is responsible for maintaning a centralized register of the services, and provides a easy way for publish/find services. • Examples • UDDI (Universal Description, Discovery, and Integration) • ebXML (electronic business XML ) - Developed by UN/CEFACT and OASIS

  10. Web Services with SOAP - III • Service Description – is responsible for describing a public interface of the service • Example: WSDL(Web Service Description Language) <wsdl:definitions targetNamespace="uri"?> <import namespace="uri" location="uri"/> <wsdl:documentation .... /> ? <wsdl:types> ... </wsdl:types> <wsdl:message> ... </wsdl:message> <wsdl:portType> … <operation>... </operation> </wsdl:portType> <wsdl:binding > ...</wsdl:binding> <wsdl:service> ... </wsdl:service> </wsdl:definitions> a container for data type definitions an abstract description of an action supported a concrete protocol and data format specification for a port type. a collection of endpoints

  11. Web Services with SOAP - IV • Protocol Stack: • XML Messaging – is responsible for enconding the message in XML format that can be understood by both end • Example: SOAP (Simple Object Access Protocol)

  12. Web Services with SOAP - V • Protocol Stack: • Service Transport – is responsible for transporting message between the applications • Example: HTTP

  13. SOAP Web Services Frameworks and APIs - I • JAX-WS (Java API for XML Web Services) is a technology for building web services and clients that communicate using XML • Implementations: Metro Sun, JBossWS

  14. SOAP Web Services Frameworks and APIs - II • JAX-RPC (Java API for XML-based RPC) is for Web services interoperability across heterogeneous platforms and languages • Implementations: JAX-RPC Project(Part of Glassfish), Axis

  15. SOAP Web Services Frameworks and APIs - III • JAXR (Java API for XML Registries ) - provides a uniform and standard Java API for accessing different kinds of XML Registries • Used for access UDDI and ebXML registry

  16. SOAP Web Services Frameworks and APIs - IV • SAAJ (SOAP with Attachments API for Java) –I s an API you can use to write direct SOAP messaging applications instead of using the JAX-RPC APIs • Implementations: Sun metro

  17. Index • Motivation • What is a Web Service? • SOAP • Characteristics • Example: Axis • REST • Characteristics • Example: Restlet • Hessian • Characteristics • Example • Conclusion • Bibliography

  18. Axis • Available in Java and C++ versions • HTTP servlet and JMS transport

  19. Axis Example - I • Client • public class TestClient { • public static void main(String [] args) { • try { • String endpoint = "http://ws.apache.org:5049/axis/services/echo"; • Service service = new Service(); • Call call = (Call) service.createCall(); • call.setTargetEndpointAddress(new java.net.URL(endpoint) ); • call.setOperationName(new QName("http://soapinterop.org/", • “echoString")); • String ret = (String) call.invoke( new Object[] { "Hello!" } ); • System.out.println("Sent 'Hello!', got '" + ret + "'"); • } catch (Exception e) { • System.err.println(e.toString()); • } • }

  20. Axis Example - II • Request • <?xml version="1.0" encoding="UTF-8"?> • <SOAP-ENV:Envelope xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> • <SOAP-ENV:Body> • <ns1:echoString xmlns:ns1="http://soapinterop.org/"> • <arg0 xsi:type="xsd:string">Hello!</arg0> • </ns1:echoString> • </SOAP-ENV:Body> • </SOAP-ENV:Envelope>

  21. Index • Motivation • What is a Web Service? • SOAP • Characteristics • Example:Axis • REST • Characteristics • Example: Restlet • Hessian • Characteristics • Example • Conclusion • Bibliography

  22. REST • REST (REpresentation State Transfer) describes an architectural style introduced in 2000 in a Ph.D dissertation by Roy Fielding • A Restful architecture has the characteristics: • Resource Identification • Uniform Interface • Self-Describing Messages • Hypermedia Driving Application State • Stateless Interactions

  23. Resource Identification • Each “thing” (resource) has a name. Each element is defined by a URI. • Example: • http://example.com/customers/1234 (the costumer with id 12347) • http://example.com/orders/2007/10 (the orders done in 10/2007) • The application state is also a resource • Example:

  24. Uniform Interface • There are standard methods for manipulating the resources • Safe – The is not side effect when perform the action • Idempotent – The request can be done multiple times • Cacheable – the response can be cached

  25. Self-Describing Messages • The URI defines the resource • The method defines the operation • The format can be defined between the peers • No additional information is needed for identifying the operation

  26. Hypermedia Driving Application State/ Stateless Interactions • Hypermedia Driving Application State • The Restful applications navigates instead of call other resources; • The URI defines the resources and state • Stateless Interactions • The client request should contain all information needed for performing the operation; • No context in the server side is needed

  27. Restful Web Services Frameworks and APIs - I • Java-WS - Java API for XML Web Services ( JSR224) and JAXB – Java Architecture for XML Binding • Sun Reference Project: Metro Sun • The server can be called programmatically (java API) or by using browsers (XMLHttpRequest) • Uses WADL(Web Application Description Language)designed to provide a machine process-able protocol description format for use with HTTP-based Web applications

  28. Restful Web Services Frameworks and APIs - II • JAX-RS - The JavaTM API for RESTful Web Services (JSR 311 ) - focuses on using annotations to make plain old Java objects (POJOs) and resources available through HTTP • Sun Reference Project: Jersey • Other Vendors: CXF (Apache), RESTEasy(JBoss) and Restlet

  29. Index • Motivation • What is a Web Service? • SOAP • Characteristics • Example:Axis • REST • Characteristics • Example: Restlet • Hessian • Characteristics • Example • Conclusion • Bibliography

  30. Restful Web Services Frameworks and APIs - III • Restlet • Available editions: • Java SE/EE, Google Web Kit, Google AppEngine and Google Androide • Some available connectors • Multiple server HTTP connectors (example Jetty) • Multiple client HTTP connectors (example Apache HTTP Client) • Client SMTP, SMTPS, POP v3,POPS v3 and JDBC • Some available representations • JAX, JibX, DOM, SAX base, JSON • Some Configuration Option • Complete configuration possible in Java via the Restlet API • Configuration possible via Restlet XML and WADL files

  31. Restlet – Example I • Standalone server example public class FirstStepsApplication extends Application { @Override public synchronized Restlet createRoot() { Router router = new Router(getContext()); // Defines only one route router.attachDefault(HelloWorldResource.class); router.attach("/books/{autor}", BooksResource.class); return router; } }

  32. Restlet – Example II • public class HelloWorldResource extends Resource { • public HelloWorldResource(Context context, Request request, • Response response) { • super(context, request, response); • getVariants().add(new Variant(MediaType.TEXT_PLAIN)); • } • @Override • public Representation represent(Variant variant) throws ResourceException { • Representation representation = new StringRepresentation( • "hello, world", MediaType.TEXT_PLAIN); • return representation; • } • } • Resource I

  33. Restlet – Example III public class BooksResource extends Resource { Hashtable map = new Hashtable(); public BooksResource() { super(); map.put("Gisele", “test”); } @Override publicvoid handleGet() { String autor = (String) getRequest().getAttributes().get("autor"); Representation result = new StringRepresentation((String)map.get(autor)); getResponse().setEntity(result); } } • Resource II

  34. Restlet – Example IV • Run Server public class FirstStepsMain { public static void main(String[] args) { try { Component component = new Component(); component.getServers().add(Protocol.HTTP, 8182); component.getDefaultHost().attach(new FirstStepsApplication()); component.start(); } catch (Exception e) { e.printStackTrace(); } } }

  35. Restlet – Example V • Client public class RestletClient { public static void main(String [] args) throws IOException { String uri = "http://localhost:8182/books/Gisele" ; Client client = new Client(Protocol.HTTP); client.get(uri).getEntity().write(System.out); String uri2 = "http://localhost:8182" ; Client client2= new Client(Protocol.HTTP); client2.get(uri2).getEntity().write(System.out); } }

  36. Index • Motivation • What is a Web Service? • SOAP • Characteristics • Example: Axis • REST • Characteristics • Example: Restlet • Hessian • Characteristics • Example • Conclusion • Bibliography

  37. Hessian Web Service Protocol • Was created as a lightweight binary alternative to the XML-based web services protocols • Is a small protocol, J2ME devices can use it to connect to Resin servers • Some Hessian Implementation • Java, Python, C++, C#, Ruby,PHP • Support Synchronous and Asynchronous messages • Uses URL for identifying the services, can support object name without extra header • Example: http://localhost/hessian/my-entity-bean?ejbid=slytherin (Entity Bean Identifier)

  38. Hessian Structure - I • Has a specific format for sending the information • Supports the following types: • Primitives: binary, boolean, date, double, int , long, null, string • Recursive type: list, map, object • Special structure: Ref for circular reference

  39. Hessian Structure - II 37 ["hello, world", 29] {"color" : "green", "year" : 2003} • Example: • JSON • Hessian 0xb7 # int values 0-47 are encoded by 0x90 to 0xbf V x0c hello, world # string with length 0-31 start with 0x00 to 0x1f Xad # integer 0xb7 O t x00 x06 qa.Car # Class definition x92 # two fields x05 color # "color" field x04 year # "year" field o x90 # object instance, 0x90 is def #0 x05 green # color : green xcf xd3 # year : 2003

  40. Hessian Example - I • public interface Basic { • public String hello(); • } • publicclass BasicClient { • public static void main(String []args) throws Exception { • String url = "http://www.caucho.com/hessian/test/basic"; • HessianProxyFactory factory = new HessianProxyFactory(); • Basic basic = (Basic) factory.create(Basic.class, url); • System.out.println("Hello: " + basic.hello()); • } • } • Client

  41. Hessian Example - II • Server • public class BasicService implements Basic { • private String _greeting = "Hello, world"; • public void setGreeting(String greeting) { • _greeting = greeting; • } • public String hello(){ • return _greeting; • } • }

  42. Hessian Example - III • Configurationfor standard web.xml • <web-app> • <servlet> • <servlet-name>hello</servlet-name> • <servlet-class>com.caucho.hessian.server.HessianServlet</servlet-class> • <init-param> <param-name>home-class</param-name> • <param-value>example.BasicService</param-value> </init-param> • <init-param> <param-name>home-api</param-name> • <param-value>example.Basic</param-value> </init-param> • </servlet> • <servlet-mapping> • <url-pattern>/hello</url-pattern> <servlet-name>hello</servlet-name> • </servlet-mapping> • </web-app>

  43. Index • Motivation • What is a Web Service? • SOAP • Characteristics • Example: Axis • REST • Characteristics • Example: Restlet • Hessian • Characteristics • Example • Conclusion • Bibliography

  44. What is a Web Service? (Revisited) - I • Back to the web service definition: “A Web service is a software system designed to support interoperable machine-to-machine interaction over a network.It has an interface described in a machine-processable format (specifically WSDL).Other systems interact with the Web service in a manner prescribed by its description using SOAP messages, typically conveyed using HTTP with an XML serialization in conjunction with other Web-related standards.” • The web services frameworks enumerated on this presentation follows this definition? • Sentence 1(pink) - SOAP based Restful Hessian • Sentence 2(green)- SOAP based Restful Hessian • Sentence 3(blue) - SOAP based Restful Hessian • Sentence 4(purple)- SOAP based Restful Hessian

  45. What is a Web Service? (Revisited) - II • If the 3 approaches presented are web services, so we could say that the web services is: “A Web service is a software system designed to support interoperable machine-to-machine interaction over a network.typically conveyed using HTTP with an XML serialization in conjunction with other Web-related standards.” • This is a very vague description • There is a web service specification, but it is not really defined.

  46. Conclusion I • SOAP based web services • Strengths • It is very used by almost projects • The same message can be transported by many middlewares • Weakness • There is a problem to link the memory structure to the XML structure • The XML schema is not powerful • RESTFul web services • Strengths • Lightweight structure • The developer can use a browser to test

  47. Conclusion II • RESTFul web services • Weakness • It is not all firewalls that accepts all methods HTTP (normally GET and POST are accepted ) • Problems to send a large amount of input data by using get • Hessian • Strengths • It has implementation in many languages • It is possible to create graphs on the messages • Weakness • The messages are not so clear • It is not very used in projects

  48. Comparison among the 3 approaches

  49. Bibliography I • http://www.javaworld.com/javaworld/jw-10-2008/jw-10-rest-series-1.html?page=4 • http://www.restlet.org/about/features • http://oreilly.com/catalog/pwebserperl/chapter/ch11.pdf • http://www.javaworld.com/javaworld/jw-12-2008/jw-12-rest-series-2.html?page=1 • http://www.naviquan.com/blog/restlet-handle-methods • http://java.sun.com/developer/technicalArticles/WebServices/restful/ • https://jaxb.dev.java.net/tutorial/section_1_1-Introduction.html#Introduction • http://research.sun.com/techrep/2006/smli_tr-2006-153.pdf • http://www.infoq.com/news/2008/10/jaxrs-comparison

  50. Bibliography II • http://java.sun.com/webservices/docs/2.0/tutorial/doc/JAXWS.html • http://java.sun.com/webservices/jaxrpc/overview.html • http://ws.apache.org/axis/java/install.html • http://java.sun.com/webservices/jaxr/overview.html • http://java.sun.com/developer/technicalArticles/WebServices/jaxrws/ • http://www.ibm.com/developerworks/xml/library/x-ebxml/ • http://java.sun.com/developer/EJTechTips/2005/tt0425.html#1 • http://java.sun.com/j2ee/1.4/docs/tutorial/doc/SAAJ2.html • http://dret.net/netdret/docs/soa-rest-www2009/intro#soa • http://www.ibm.com/developerworks/webservices/library/ws-featuddi/

More Related