Академический Документы
Профессиональный Документы
Культура Документы
Grupo de Engenharia
de Software
23/11/2010
AGENDA
SOAP
Representational State Transfer (Rest)
Conceito
Caracteristicas
Elementos Arquiteturais
Exemplos
2
23/11/2010
SOAP
REST
Restful
Exemplos
SOAP
23/11/2010
SOAP
23/10/09
Dezenas de padres;
BigWebServices;
Segurana: WS-Security, WS-Policy,
XML-Signature, XML-Encryption;
Notificao de eventos: WS-Notification,
WS-Eventing;
Endereamento: WS-Addressing;
Tolerncia a falhas: WS-Reliability;
Transaes: WS-Transaction.
23/10/09
BIGWEBSERVICES?
SOAP
REST
Restful
Exemplos
REST
23/11/2010
REST
23/11/2010
REST - CARACTERISTICAS
Separao de responsabilidades entre as
camadas cliente e servidor;
Comunicaes independentes (stateless);
Utilizao de uma interface uniforme entre os
componentes.
Uso de cache (para eliminar algumas
interaes desnecessrias entre cliente e
servidor);
10
23/11/2010
REST
Cada url deve representar um recurso (ROA);
Geralmente, via mtodo GET, cada recurso
deve ser diferencivel;
Usa os verbos HTTP;
NO TEM WSDL e nem UDDI!
Retorno livre:
XML;
JSON;
Etc.
23/10/09
11
12
23/11/2010
REST
Fielding especificou em sua tese, que deu
origem arquitetura, as trs classes de
elementos arquiteturais:
Elementos de Dados;
Conectores; e
Componentes
23/10/09
13
ELEMENTOS DE DADOS
So os elementos que contm a informao a ser usada e
transformada.
Elemento
Definio / Funo
Recursos
Identificadores
de Recurso
Representaes
de Recursos
23/10/09
Exemplo
Um filme.
Harry Potter
COMPONENTES
So os elementos que usam ou transformam a informao.
Em REST, os componentes so caracterizados de acordo com
o papel que exercem. So eles:
Servidor de Origem: trata as requisies de um cliente;
Proxy e Gateway: utilizados para permitir o
encaminhamento das requisies e respostas; e
Agente do Usurio: inicia a requisio e, logo em seguida,
se torna o destino final de uma resposta.
23/10/09
15
CONECTORES
De acordo com Fielding:
A utilizao de conectores prov uma interface
abstrata para a comunicao entre os
componentes, melhorando a simplicidade do
sistema atravs da separao de
responsabilidades e ocultando a
implementao de recursos e os mecanismos
de comunicao
23/10/09
16
CONECTORES
Cliente e Servidor: responsveis pelo acesso aos recursos;
Libwww e Apache API.
Cache: armazena as respostas passveis de cache;
Cache de um Web Browser.
Resolver: responsvel pela converso de um URI em um endereo de
rede;
23/10/09
17
CONECTORES
Servidor de Origem: trata as requisies de um cliente;
Servidor Web Apache.
Proxy e Gateway: utilizados para permitir o encaminhamento das
requisies e respostas; e
Netscape Proxy e o Apache API.
Agente do Usurio: inicia a requisio e, logo em seguida, se torna o
destino final de uma resposta.
Web Browser
23/10/09
18
Verbos HTTP
20
SOAP
REST
Restful
Exemplos
RESTFUL WEBSERVICES
23/11/2010
RESTFUL
O Restful Web Service baseado nos mtodos HTTP e no conceito
de REST;
Define a URI de base para os servios, o MIME-types seus
suportados (XML, Texto, JSON) e o conjunto de operaes (POST,
GET, PUT, DELETE) que so suportadas;
Java define o suporte padro REST via JAX-RS (A API Java para
servios Web RESTful) na JSR 311;
23/10/09
21
RESTFUL
API JAX-RS usa anotaes da linguagem de programao Java para
simplificar o desenvolvimento de Restful Web Service;
Anotao
Descrio
@Path
@GET
@POST
@PUT
@DELETE
@HEAD
23/10/09
22
RESTFUL
Anotao
Descrio
@PathParam
@QueryParam um tipo de parmetro que voc pode extrair para uso em sua
classe de recurso. Esses parmetros so extrados dos parmetros
de solicitao de consulta URI.
@Consumes
@Produces
@Provider
23/10/09
23
RESTFUL
package com.sun.jersey.samples.helloworld.resources;
import javax.ws.rs.GET;
import javax.ws.rs.Produces;
import javax.ws.rs.Path;
// The Java class will be hosted at the URI path "/helloworld"
@Path("/helloworld")
public class HelloWorldResource {
// The Java method will process HTTP GET requests
@GET
// The Java method will produce content identified by the MIME Media
// type "text/plain"
@Produces("text/plain")
public String getClichedMessage() {
// Return some cliched textual content
return "Hello World";
}
}
23/10/09
24
RESTFUL
Anotao
Descrio
@XmlElement(name =
"neuName")
23/10/09
25
RESTFUL
package de.vogella.xml.jaxb.model;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlType;
@XmlRootElement(name = "book")
// If you want you can define the order in which the fields are written Optional
@XmlType(propOrder = { "author", "name", "publisher", "isbn" })
public class Book {
private String name;
private String author;
private String publisher;
private String isbn;
// If you like the variable name, e.g. "name", you can easily change this
// name for your XML-Output:
@XmlElement(name = "bookName")
public String getName() {
return name;
}
.
}
23/10/09
26
27
SOAP
REST
Restful
Exemplos
EXEMPLOS
23/11/2010
RESTFUL
Jersey is the open source, production quality.
JAX-RS (JSR 311) Reference Implementation for building RESTful Web services
Link: http://jersey.java.net/
23/10/09
28
Grato!
Dvidas? Entre em contato:
Alexandre Bellini
alexandre_bellini@dc.ufscar.br
@alexandredc
Antonio F. Prado
prado@dc.ufscar.br
Luciana A. M. Zaina
lzaina@ufscar.br
www.ges.dc.ufscar.br
Grupo de Engenharia de
Software
29
23/11/2010