RESTful Web Services

Post on 19-Nov-2014

2.032 views 0 download

description

Disponibilizando serviços e integrando aplicações sem complicar a vida de ninguém.

Transcript of RESTful Web Services

Globalcode – Open4Education

RestFul WebServices

Rafael NunesArquiteto de Software / Instrutor Globalcode

Globalcode – Open4Education

Integrando aplicações e disponibilizando serviços sem complicar a vida de ninguém.

REST

Globalcode – Open4Education

Agenda

> Integrando Aplicações> Um caso verídico

Globalcode – Open4Education

Agenda

> REST> Evitando complexidade desnecessária> REST> JSR 311> Exemplos de implementação> Mobile REST

Globalcode – Open4Education

Agenda

> Conclusão> Perguntas & Respostas

Globalcode – Open4Education

REST – O Início

> Integrando Aplicações> Um caso verídico

Globalcode – Open4Education

Integrando Aplicações

> Era uma vez um desenvolvedor

Globalcode – Open4Education

• Que adorava desenvolver.

Integrando aplicações

Globalcode – Open4Education

> E como era descolado e desenvolvia em muitas plataformas, ele precisava integrá­las de alguma forma

Integrando aplicações

Globalcode – Open4Education10

> Aí ele descobriu os padrões para integração

Integrando aplicações

Globalcode – Open4Education11

> Além de adorar desenvolver, ele também adorava a web.

Integrando aplicações

Globalcode – Open4Education12

> E foi então que ele descobriu os Web Services

Integrando aplicações

Globalcode – Open4Education13

> E todos os seus padrões.

Integrando aplicações

Globalcode – Open4Education14

> Aí ele morreu. Fim.

Integrando aplicações

Globalcode – Open4Education15

Plataformas Distintas

Globalcode – Open4Education16

Padrões para integração

Globalcode – Open4Education17

Web Services

Globalcode – Open4Education18

> Mentira. Ele não morreu. 

Integrando aplicações

Globalcode – Open4Education19

> Mas perdeu um pouco de sua sanidade entendendo todos aqueles padrões e toda aquela complexidade.

Integrando aplicações

Globalcode – Open4Education20

• Por que o protocolo HTTP, Google têm sucesso?

• FTP, SMTP, NNTP, SFTP, TFTP

?

Globalcode – Open4Education21

• Imaginem se fosse assim…

Simplicidade!!!

Globalcode – Open4Education22

• HTTP – Transferência de Hiper Texto

• Google – Um campo de texto, dois botões e três radio buttons

?

Globalcode – Open4Education23

REST

REST

Globalcode – Open4Education24

> Surgiu da tese de doutorado de Roy T. Fielding

> Um dos principais autores da especificação do protocolo HTTP

> Co­fundador do Apache HTTP Server

> Diretor da Apache Software Foundation 

REST

Globalcode – Open4Education25

> REST (Representation State Transfer)

> Não é um framework, uma biblioteca, um servidor.

> É um estilo arquitetural(diz respeito ao design da aplicação)

REST

Globalcode – Open4Education26

> Comunicação stateless. Sem estado.

> Performance(não há todo o overhead de SOAP).

> Forma simples de se criar um cliente.

> Possibilidade de cache

> Sem necessidade de contrato formal

REST (Quando usar?)

Globalcode – Open4Education27

REST

> REST usa os métodos já definidos no protocolo HTTP

> GET, POST, PUT, DELETE, HEAD…

> Em REST, seus serviços/recursos têm uma identificação.

> Descrição do serviço via WADL( similar ao WSDL)

Globalcode – Open4Education28

WADL

<resources base="http://servidor:8988/rest/repositorio/"><resource uri=“reservas">

<method href="#reservar"/></resource>

<resources><method name="GET" id=“reservar">

<request>     <query_variable name=“quarto" type="xsd:string" required="true"/>     <query_variable name=“numero" type="xsd:int"/></request><response>           <representation  mediaType=“application/xml” element=“mn:Response"/>     <fault id=“reservaErro status="400"  mediaType=“application/xml” element=“mn:Error"/></response>

 </method>

Globalcode – Open4Education29

REST

> JSR 311(Apache, BEA, Google, Jboss, Sun…)

> Jersey é a implementação de referência

> Diversos frameworks já implementam

> Axis2, CXF, RestEasy, JAX­WS, Restlet

> @PATH, @GET, @POST, @ProductMime, @Param, @QueryParam

> Cases: Google, Yahoo, Amazon S3, Flickr, del.icio.us

Globalcode – Open4Education30

Requisição SOAP

>   Requisição SOAP:<?xml version='1.0' ?><soap:Envelope  

 xmlns:soapenv="http://www.w3.org/2003/05/soap­envelope"          xmlns:h="http://meuws.com.br/ws">   <soap:Header>        <h:reserva xmlns:p="http://meuws.com.br/ws”           soap:mustUnderstand=“1”>5</h:reserva>   </soap:Header>   <soap:Body>           <h:reservarQuarto xmlns:m="http://meuws.com.br">

<quarto>52</quarto>           </h:reservarQuarto>   </soap:Body></soap:Envelope>

Globalcode – Open4Education31

Requisição REST

> Requisição REST:http://appserver:8080/apphotel/reservar/quarto/52

ou

http://appserver:8080/apphotel/reservar?quarto=52

Globalcode – Open4Education32

> Exemplo de código de uma aplicação com serviço REST

> Reserva de vagas em Hotel

Mão na massa

Globalcode – Open4Education33

> Exemplo de código client com REST

> HttpClient, Flex, Python, Browser

Isso Funciona?

Globalcode – Open4Education34

> Implementa a ultima especificação JSR 311

> Segurança(@RolesAlowed, @DenyAll)

> Forma simples de integração(mapeamento de Servlet)

> Mapeamento de parâmetros de request para atributos

> Integração com EJB (Bean Stateless como serviço)

> Framework Client(Proxy para requeisições HTTP)

JBoss RestEasy

Globalcode – Open4Education35

> Não há um contrato(WSDL)

> Não há ferramentas

> Recente, early­adopters

Desvantagens

Globalcode – Open4Education36

> Mobile REST e KSOAP

REST

Globalcode – Open4Education37

> Migração de Portais(Websphere Portal, Plone, Oracle)

> ESB e SOA baseados em REST (Jboss ESB, Oracle SOA Suite, Websphere, Weblogic)

> Serviços do Google baseados em REST(Ajax Search, Charts, Maps, Earth, Open Social)

Futuro

Globalcode – Open4Education38

Comparação

SOAP REST

Complexidade Padrões em excesso HTTP

Criar Serviços Possui frameworks  e bibliotecas para geração

Possui frameworks  e bibliotecas para geração

Criar Cliente Geração através de ferramentas ou manualmente

Geração de forma simples, não há necessidade de ferramentas

Performance Além da requisição HTTP, overhead do parse de XML

Requisição HTTP simples. (Possibilidade de cache)

Arquivo Descritor WSDL WADL(Não adotado oficialmente)

Comunicação Stateless e Stateful Stateless (possível mas não recomendado Stateful)

Globalcode – Open4Education39

?Perguntas e Respostas

Globalcode – Open4Education40

Fim!(Contato)

(Críticas, Dúvidas ou Sugestões)rafael@globalcode.com.br

Globalcode – Open4Education41

Fim v.2!

Obrigado!

(Desenhos/Imagens by Rafael Nunes)

(Obrigado Paint!!!!)