restful web services

41
Globalcode – Open4Education RestFul WebServices Rafael Nunes Arquiteto de Software / Instrutor Globalcode

Upload: rafael-nunes

Post on 19-Nov-2014

2.032 views

Category:

Technology


0 download

DESCRIPTION

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

TRANSCRIPT

Page 1: RESTful Web Services

Globalcode – Open4Education

RestFul WebServices

Rafael NunesArquiteto de Software / Instrutor Globalcode

Page 2: RESTful Web Services

Globalcode – Open4Education

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

REST

Page 3: RESTful Web Services

Globalcode – Open4Education

Agenda

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

Page 4: RESTful Web Services

Globalcode – Open4Education

Agenda

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

Page 5: RESTful Web Services

Globalcode – Open4Education

Agenda

> Conclusão> Perguntas & Respostas

Page 6: RESTful Web Services

Globalcode – Open4Education

REST – O Início

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

Page 7: RESTful Web Services

Globalcode – Open4Education

Integrando Aplicações

> Era uma vez um desenvolvedor

Page 8: RESTful Web Services

Globalcode – Open4Education

• Que adorava desenvolver.

Integrando aplicações

Page 9: RESTful Web Services

Globalcode – Open4Education

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

Integrando aplicações

Page 10: RESTful Web Services

Globalcode – Open4Education10

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

Integrando aplicações

Page 11: RESTful Web Services

Globalcode – Open4Education11

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

Integrando aplicações

Page 12: RESTful Web Services

Globalcode – Open4Education12

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

Integrando aplicações

Page 13: RESTful Web Services

Globalcode – Open4Education13

> E todos os seus padrões.

Integrando aplicações

Page 14: RESTful Web Services

Globalcode – Open4Education14

> Aí ele morreu. Fim.

Integrando aplicações

Page 15: RESTful Web Services

Globalcode – Open4Education15

Plataformas Distintas

Page 16: RESTful Web Services

Globalcode – Open4Education16

Padrões para integração

Page 17: RESTful Web Services

Globalcode – Open4Education17

Web Services

Page 18: RESTful Web Services

Globalcode – Open4Education18

> Mentira. Ele não morreu. 

Integrando aplicações

Page 19: RESTful Web Services

Globalcode – Open4Education19

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

Integrando aplicações

Page 20: RESTful Web Services

Globalcode – Open4Education20

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

• FTP, SMTP, NNTP, SFTP, TFTP

?

Page 21: RESTful Web Services

Globalcode – Open4Education21

• Imaginem se fosse assim…

Simplicidade!!!

Page 22: RESTful Web Services

Globalcode – Open4Education22

• HTTP – Transferência de Hiper Texto

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

?

Page 23: RESTful Web Services

Globalcode – Open4Education23

REST

REST

Page 24: RESTful Web Services

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

Page 25: RESTful Web Services

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

Page 26: RESTful Web Services

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

Page 27: RESTful Web Services

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)

Page 28: RESTful Web Services

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>

Page 29: RESTful Web Services

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

Page 30: RESTful Web Services

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>

Page 31: RESTful Web Services

Globalcode – Open4Education31

Requisição REST

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

ou

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

Page 32: RESTful Web Services

Globalcode – Open4Education32

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

> Reserva de vagas em Hotel

Mão na massa

Page 33: RESTful Web Services

Globalcode – Open4Education33

> Exemplo de código client com REST

> HttpClient, Flex, Python, Browser

Isso Funciona?

Page 34: RESTful Web Services

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

Page 35: RESTful Web Services

Globalcode – Open4Education35

> Não há um contrato(WSDL)

> Não há ferramentas

> Recente, early­adopters

Desvantagens

Page 36: RESTful Web Services

Globalcode – Open4Education36

> Mobile REST e KSOAP

REST

Page 37: RESTful Web Services

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

Page 38: RESTful Web Services

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)

Page 39: RESTful Web Services

Globalcode – Open4Education39

?Perguntas e Respostas

Page 40: RESTful Web Services

Globalcode – Open4Education40

Fim!(Contato)

(Críticas, Dúvidas ou Sugestões)[email protected]

Page 41: RESTful Web Services

Globalcode – Open4Education41

Fim v.2!

Obrigado!

(Desenhos/Imagens by Rafael Nunes)

(Obrigado Paint!!!!)