Survey about Web Services CMP167 – Programação com Objetos Distribuídos Prof. Cláudio Geyer...

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

    20-Dec-2015
  • Category

    Documents

  • view

    216
  • download

    2

Transcript of Survey about Web Services CMP167 – Programação com Objetos Distribuídos Prof. Cláudio Geyer...

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

Survey about Web Services

CMP167 – Programação com Objetos DistribuídosProf. Cláudio GeyerGisele Pinheiro Souza

07/2009

Page 2: 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 Bibliography

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

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

Page 4: 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 Bibliography

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

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?

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

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

Page 7: 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 Bibliography

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

Web Services with SOAP - I

Discovery UDDI

Description

SOAP

Transport

XML Messaging

HTTP

WSDL

Layers Example

Protocol Stack

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

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

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

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

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

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)

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

Web Services with SOAP - V Protocol Stack:

Service Transport – is responsible for transporting message between the applications Example: HTTP

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

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

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

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

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

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

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

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

Page 17: 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 Bibliography

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

Axis

Available in Java and C++ versions

HTTP servlet and JMS transport

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

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()); }

}

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

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>

Page 21: 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 Bibliography

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

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

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

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:

<order self='http://example.com/orders/1234' > <amount>23</amount> <product ref='http://example.com/products/4554' /> <customer ref='http://example.com/customers/1234' /> </order>

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

Uniform Interface There are standard methods for manipulating the

resourcesMethod Function Characteristics

Get Retrieves a resource Safe, Idempotent, cacheable

Post Inserts, updates or extends a resource

Put Creates, updates or replaces a resource

Idempotent

Delete Deletes a resource Idempotent

Head Retrieves a representation and resource metadata

Safe, Idempotent

Safe – The is not side effect when perform the action Idempotent – The request can be done multiple times Cacheable – the response can be cached

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

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

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

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

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

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

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

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

Page 29: 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 Bibliography

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

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

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

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; }}

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

Restlet – Example II Resource I

public class HelloWorldResource extends Resource {

public HelloWorldResource(Context context, Request request, Response response) { super(context, request, response); getVariants().add(new Variant(MediaType.TEXT_PLAIN)); }

@Overridepublic Representation represent(Variant variant) throws ResourceException { Representation representation = new StringRepresentation( "hello, world", MediaType.TEXT_PLAIN); return representation; }

}

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

Restlet – Example III Resource IIpublic class BooksResource extends Resource { Hashtable map = new Hashtable();

public BooksResource() {super();map.put("Gisele", “test”);

}

@Override public void handleGet() {

String autor = (String) getRequest().getAttributes().get("autor"); Representation result = new

StringRepresentation((String)map.get(autor)); getResponse().setEntity(result);

}}

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

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(); } }}

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

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);

}}

Page 36: 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 Bibliography

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

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)

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

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

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

Hessian Structure - II

Example: JSON

37

["hello, world", 29]

{"color" : "green", "year" : 2003}

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

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

Hessian Example - I Client

public interface Basic { public String hello();

}

public class 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()); }

}

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

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; }

}

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

Hessian Example - III Configuration for 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>

Page 43: 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 Bibliography

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

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

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

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.

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

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

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

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

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

Comparison among the 3 approaches

SOAP REST HessianSynchronous call yes yes yes

Asynchronous call

yes no yes

Payload Format XML(SOAP) Any (defined by the peers)

Hessian binary protocol

HTTP as transport layer

yes yes yes

Languages support

many many many

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

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#Intro

duction http://research.sun.com/techrep/2006/smli_tr-2006-153.pdf http://www.infoq.com/news/2008/10/jaxrs-comparison

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

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/

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

Survey about Web Services

CMP167 – Programação com Objetos DistribuídosProf. Cláudio GeyerGisele Pinheiro Souza

07/2009