RestFull WebServices Rafael Nunes Arquiteto de Software / Instrutor Globalcode 1
REST Integrando aplicações e disponibilizando serviços sem complicar a vida de ninguém. 2
Agenda > Integrando Aplicações > Um caso verídico 3
Agenda > REST > Evitando complexidade desnecessária > REST > JSR 311 > Exemplos de implementação > Mobile REST 4
Agenda > Conclusão > Perguntas & Respostas 5
REST O Início > Integrando Aplicações > Um caso verídico 6
Integrando Aplicações > Era uma vez um desenvolvedor 7
Integrando aplicações Que adorava desenvolver. 8
Integrando aplicações > E como era descolado e desenvolvia em muitas plataformas, ele precisava integrá-las de alguma forma 9
Integrando aplicações > Aí ele descobriu os padrões para integração 10
Integrando aplicações > Além de adorar desenvolver, ele também adorava a web. 11
Integrando aplicações > E foi então que ele descobriu os Web Services 12
Integrando aplicações > E todos os seus padrões. 13
Integrando aplicações > Aí ele morreu. Fim. 14
Plataformas Distintas 15
Padrões para integração 16
Web Services 17
Integrando aplicações > Mentira. Ele não morreu. 18
Integrando aplicações > Mas perdeu um pouco de sua sanidade entendendo todos aqueles padrões e toda aquela complexidade. 19
? Por que o protocolo HTTP, Google têm sucesso? FTP, SMTP, NNTP, SFTP, TFTP 20
Simplicidade!!! Imaginem se fosse assim 21
? HTTP Transferência de Hiper Texto Google Um campo de texto, dois botões e três radio buttons 22
REST REST 23
REST > 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 24
REST > REST (Representation State Transfer) > Não é um framework, uma biblioteca, um servidor. > É um estilo arquitetural(diz respeito ao design da aplicação) 25
REST (Quando usar?) > 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 26
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) 27
WADL <resources base="http://servidor:8988/rest/repositorio/"> <resource uri= reservas"> </resource> <resources> <method href="#reservar"/> <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> 28
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 29
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> 30
Requisição REST > Requisição REST: http://appserver:8080/apphotel/reservar/quarto/52 ou http://appserver:8080/apphotel/reservar?quarto=52 31
Mão na massa > Exemplo de código de uma aplicação com serviço REST > GFLA (Gerador de Frases Literárias Aleatórias) 32
Isso Funciona? > Exemplo de código client com REST > HttpClient, Flex, Python, Browser 33
Desvantagens > Não há um contrato(wsdl) > Não há ferramentas > Recente, early-adopters 34
REST > Mobile REST e KSOAP 35
Futuro > 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) 36
Comparação SOAP REST Complexidade Padrões em excesso HTTP Criar Serviços Criar Cliente Performance Possui frameworks e bibliotecas para geração Geração através de ferramentas ou manualmente Além da requisição HTTP, overhead do parse de XML Possui frameworks e bibliotecas para geração Geração de forma simples, não há necessidade de ferramentas 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) 37
Perguntas e Respostas 38
Fim!(Contato) (Críticas, Dúvidas ou Sugestões) rafael@globalcode.com.br 39
Fim v.2! Obrigado! (Desenhos/Imagens by Rafael Nunes) (Obrigado Paint!!!!) 40