SlideShare una empresa de Scribd logo
1 de 29
Descargar para leer sin conexión
Diga não aos web services

         Maurício Linhares – mauricio.linhares@gmail.com
Baseado em fatos irreais…
               Eu preciso fazer vendas
                  usando cartões de
               crédito, mas como é que
               o meu sistema fala com
                   as operadoras?
Você usa… Sabã… ops, SOAP!
   Eu resolvo o seu
      problema!

Sou o protocolo padrão
de mensagens dos web
       services!
Pelo menos ele não usa a cueca
por cima da roupa…
                 E como é que isso
                   resolve o meu
                     problema?
Os super-amigos se juntam para
resolver o problema!




WSDL – UDDI – HTTP – SMTP – FTP
Tá começando a chatear…
               E como é que eu
              uso esse monte de
                    coisa?
Mais fácil do que fazer aposentado
tirar empréstimo!
Primeiro, você usa UDDI
 para descobrir aonde
 estão os serviços que
 você está interessado
     em consumir.
Mais fácil do que falar “Tacho sujo,
chuchu chocho”
Depois você vai consumir
 os arquivos WSDL que
 descrevem os serviços
  com uma ferramenta
 geradora de clientes de
      web services.
Mais fácil que comprar com cartão
corporativo alheio
    Aí você vai poder
  finalmente enviar as
 requisições dos seus
   serviços via HTTP,
      SMTP, FTP…
Que demais!
              Então é só eu buscar
                as operadoras de
               cartão num registro
               UDDI, ler os WSDLs
               padrão e começar a
              vender com cartão de
                 crédito usando
                     SMTP?
Errr… quase….
Ainda não existe nenhum
    registro UDDI pras
operadoras de cartão de
crédito, os formatos das
  mensagens que eles
 usam não são iguais e
   quase ninguém usa
   serviços sem HTTP.
O mundo real é duro
 Registros UDDI são tão lendários que o
  próximo “Jurassic Park” vai ter um;
 O único padrão das mensagens é como o
  formato delas é definido (WSDL), quase
  nenhuma industria de peso tem formatos
  de mensagens padronizados;
 Ninguém usa web services em SOAP sem
  HTTP;
Mas ainda fica pior
 As ferramentas que geram e consomem
  WSDLs costumam não ser muito
  amigáveis quando lidam com plataformas
  diferentes;
 Java tem problemas sérios de
  comunicação com serviços .Net;
Acabou?
 Até mesmo as diversas ferramentas de
  geração/consumo de web services tem
  incompatibilidades entre si;
 O modo de invocação dos web services
  mata qualquer possibilidade de se
  desenvolver clientes Ajax para eles;
Hum…
 A “independência” de protocolos de
  transporte faz com que os web services
  usem muito pouco (ou quase nada) das
  capacidades do protocolo de transporte;
 Web services sobre HTTP ignoram
  completamente as políticas de
  idempotência e segurança do protocolo;
E agora?




           O que é que eu vou
                 usar?
REST

A nova bala de prata
Representational State Transfer
   Baseado nos princípios da WWW e do procotolo
    HTTP;

   É um estilo de arquitetura para sistemas
    baseado nas experiências da internet;

   Apresentado ao mundo na tese de doutorado de
    Roy Fielding em 2000;
Tudo são recursos acessíveis por
URLs
   http://loja.com/produtos/1

   http://blog.br/posts/meu-primeiro-post

   http://mapas.mundo/Brasil/Paraíba/João_
    Pessoa
Dissecando os recursos
 Endereçabilidade e conexões – recursos
  são acessíveis através de endereços e
  apontam pra outros recursos (Google?);
 Inexistência de estado – requisisões que
  operam em recursos devem conter toda a
  informação necessária para executar a
  operação;
Os recursos estão disponíveis em
diversas representações
   Qualquer formato que você achar
    necessário, XHTML, JSON, XML, texto
    puro;

   A escolha do formato do recurso é apenas
    uma questão de disponibilidade do
    servidor;
Falando em servidores…
   Completamente sem estado, assim como um
    servidor HTTP;

   Todo estado do servidor deve ser mantido como
    recursos, não como “cookies” ou “sessões”;

   Servidores são completamente independentes
    dos clientes;
A interface comum
   Existe uma única interface para se
    acessar os recursos e ela é igual para
    todos;

   Se você conhece um, conhece todos;
E os clientes?
   Podem ser escritos em qualquer linguagem que
    suporte o protocolo de comunicação;
   Nada de formatos exóticos baseados em XML;
   Não dependem de geradores de código ou de
    ferramentas complexas de invocação de
    serviços;
   Integração simplificada com clientes leves,
    como navegadores usando Ajax;
Quem usa REST?
   A internet toda, qualquer aplicação web
    pode ser vista, de certa forma, como uma
    aplicação REST;
Falando sério…
 Google (removeu tudo que era SOAP);
 Yahoo;
 Amazon.com (mas usa SOAP também);
 Flickr;
 Blogs que usam Atom ou RSS (todos :P);
E agora José?
   Você não tem mais motivos pra acha que web
    services são a única solução;

   Você sabe que REST é limpo, independente de
    plataforma ou ferramentas e não tem um nome
    de duplo sentido (será?);

   Você aprendeu que pode dizer a todo mundo
    que usa REST desde sempre;
Referências
 http://en.wikipedia.org/wiki/Representation
  al_State_Transfer
 Leonard Richardson & Sam Ruby. Restful
  Web Services, O’Reilly;
 Steve Graham. Building Web Services
  With Java, Developers Library.

Más contenido relacionado

Similar a REST: Uma nova abordagem para integração de sistemas

Web Services - Grupo F
Web Services - Grupo FWeb Services - Grupo F
Web Services - Grupo Fmdmansur
 
Html - Capitulo 02
Html - Capitulo 02Html - Capitulo 02
Html - Capitulo 02Alvaro Gomes
 
03-apostila-versao-digital-informatica-basica-015.909.942-05-1657644539.pdf
03-apostila-versao-digital-informatica-basica-015.909.942-05-1657644539.pdf03-apostila-versao-digital-informatica-basica-015.909.942-05-1657644539.pdf
03-apostila-versao-digital-informatica-basica-015.909.942-05-1657644539.pdfELIVELSON MAIA
 
IntroduçãO Ao Desenvolvimento Web 2
IntroduçãO Ao Desenvolvimento Web   2IntroduçãO Ao Desenvolvimento Web   2
IntroduçãO Ao Desenvolvimento Web 2Maurício Linhares
 
Web Services Xml
Web Services XmlWeb Services Xml
Web Services XmlUFMG
 
A importância dos padrões web
A importância dos padrões webA importância dos padrões web
A importância dos padrões webDivulgrs
 
Apresentação Minas - Desenvolvendo Sites
Apresentação Minas - Desenvolvendo SitesApresentação Minas - Desenvolvendo Sites
Apresentação Minas - Desenvolvendo Sitesthiagolima
 
Informática aplicada à engenharia i
Informática aplicada à engenharia iInformática aplicada à engenharia i
Informática aplicada à engenharia iDavid Hansen
 
Webservices e Xml
Webservices e XmlWebservices e Xml
Webservices e Xmlsys10
 
Web services, aplicações, acesso a aplicações, XML, API
Web services, aplicações, acesso a aplicações, XML, APIWeb services, aplicações, acesso a aplicações, XML, API
Web services, aplicações, acesso a aplicações, XML, APINuno Pereira
 
PHP - Capítulo 01
PHP - Capítulo 01PHP - Capítulo 01
PHP - Capítulo 01fdorado
 
Conhecendo o Novo REST Framework
Conhecendo o Novo REST FrameworkConhecendo o Novo REST Framework
Conhecendo o Novo REST FrameworkMario Guedes
 

Similar a REST: Uma nova abordagem para integração de sistemas (20)

Web service
Web serviceWeb service
Web service
 
PHP nas Nuvens
PHP nas NuvensPHP nas Nuvens
PHP nas Nuvens
 
Web services
Web servicesWeb services
Web services
 
Web Services - Grupo F
Web Services - Grupo FWeb Services - Grupo F
Web Services - Grupo F
 
Html - Capitulo 02
Html - Capitulo 02Html - Capitulo 02
Html - Capitulo 02
 
03-apostila-versao-digital-informatica-basica-015.909.942-05-1657644539.pdf
03-apostila-versao-digital-informatica-basica-015.909.942-05-1657644539.pdf03-apostila-versao-digital-informatica-basica-015.909.942-05-1657644539.pdf
03-apostila-versao-digital-informatica-basica-015.909.942-05-1657644539.pdf
 
Trabalho final psdc
Trabalho final psdcTrabalho final psdc
Trabalho final psdc
 
IntroduçãO Ao Desenvolvimento Web 2
IntroduçãO Ao Desenvolvimento Web   2IntroduçãO Ao Desenvolvimento Web   2
IntroduçãO Ao Desenvolvimento Web 2
 
Web Services Xml
Web Services XmlWeb Services Xml
Web Services Xml
 
A importância dos padrões web
A importância dos padrões webA importância dos padrões web
A importância dos padrões web
 
Apresentação Minas - Desenvolvendo Sites
Apresentação Minas - Desenvolvendo SitesApresentação Minas - Desenvolvendo Sites
Apresentação Minas - Desenvolvendo Sites
 
Web Service - XML
Web Service - XMLWeb Service - XML
Web Service - XML
 
A Estrutura de um Web Service
A Estrutura de um Web ServiceA Estrutura de um Web Service
A Estrutura de um Web Service
 
Informática aplicada à engenharia i
Informática aplicada à engenharia iInformática aplicada à engenharia i
Informática aplicada à engenharia i
 
Webservices e Xml
Webservices e XmlWebservices e Xml
Webservices e Xml
 
Web services, aplicações, acesso a aplicações, XML, API
Web services, aplicações, acesso a aplicações, XML, APIWeb services, aplicações, acesso a aplicações, XML, API
Web services, aplicações, acesso a aplicações, XML, API
 
Apostila webdesign
Apostila webdesignApostila webdesign
Apostila webdesign
 
PHP - Capítulo 01
PHP - Capítulo 01PHP - Capítulo 01
PHP - Capítulo 01
 
Conhecendo o Novo REST Framework
Conhecendo o Novo REST FrameworkConhecendo o Novo REST Framework
Conhecendo o Novo REST Framework
 
Aula01
Aula01Aula01
Aula01
 

Más de Maurício Linhares

Unindo Ruby e Java através de uma arquitetura orientada a serviços na OfficeDrop
Unindo Ruby e Java através de uma arquitetura orientada a serviços na OfficeDropUnindo Ruby e Java através de uma arquitetura orientada a serviços na OfficeDrop
Unindo Ruby e Java através de uma arquitetura orientada a serviços na OfficeDropMaurício Linhares
 
Mixing Ruby and Java in a Service Oriented Architecture at OfficeDrop
Mixing Ruby and Java in a Service Oriented Architecture at OfficeDropMixing Ruby and Java in a Service Oriented Architecture at OfficeDrop
Mixing Ruby and Java in a Service Oriented Architecture at OfficeDropMaurício Linhares
 
Curso java 08 - mais sobre coleções
Curso java   08 - mais sobre coleçõesCurso java   08 - mais sobre coleções
Curso java 08 - mais sobre coleçõesMaurício Linhares
 
Curso java 06 - mais construtores, interfaces e polimorfismo
Curso java   06 - mais construtores, interfaces e polimorfismoCurso java   06 - mais construtores, interfaces e polimorfismo
Curso java 06 - mais construtores, interfaces e polimorfismoMaurício Linhares
 
Curso java 05 - herança, classes e métodos abstratos
Curso java   05 - herança, classes e métodos abstratosCurso java   05 - herança, classes e métodos abstratos
Curso java 05 - herança, classes e métodos abstratosMaurício Linhares
 
Curso java 04 - ap is e bibliotecas
Curso java   04 - ap is e bibliotecasCurso java   04 - ap is e bibliotecas
Curso java 04 - ap is e bibliotecasMaurício Linhares
 
Curso java 01 - molhando os pés com java
Curso java   01 - molhando os pés com javaCurso java   01 - molhando os pés com java
Curso java 01 - molhando os pés com javaMaurício Linhares
 
Curso java 03 - métodos e parâmetros
Curso java   03 - métodos e parâmetrosCurso java   03 - métodos e parâmetros
Curso java 03 - métodos e parâmetrosMaurício Linhares
 
Outsourcing e trabalho remoto para a nuvem
Outsourcing e trabalho remoto para a nuvemOutsourcing e trabalho remoto para a nuvem
Outsourcing e trabalho remoto para a nuvemMaurício Linhares
 
Aulas de Java Avançado 2- Faculdade iDez 2010
Aulas de Java Avançado 2- Faculdade iDez 2010Aulas de Java Avançado 2- Faculdade iDez 2010
Aulas de Java Avançado 2- Faculdade iDez 2010Maurício Linhares
 

Más de Maurício Linhares (20)

Mercado de TI
Mercado de TIMercado de TI
Mercado de TI
 
Unindo Ruby e Java através de uma arquitetura orientada a serviços na OfficeDrop
Unindo Ruby e Java através de uma arquitetura orientada a serviços na OfficeDropUnindo Ruby e Java através de uma arquitetura orientada a serviços na OfficeDrop
Unindo Ruby e Java através de uma arquitetura orientada a serviços na OfficeDrop
 
Mixing Ruby and Java in a Service Oriented Architecture at OfficeDrop
Mixing Ruby and Java in a Service Oriented Architecture at OfficeDropMixing Ruby and Java in a Service Oriented Architecture at OfficeDrop
Mixing Ruby and Java in a Service Oriented Architecture at OfficeDrop
 
Aprendendo ruby
Aprendendo rubyAprendendo ruby
Aprendendo ruby
 
Curso java 07 - exceções
Curso java   07 - exceçõesCurso java   07 - exceções
Curso java 07 - exceções
 
Curso java 08 - mais sobre coleções
Curso java   08 - mais sobre coleçõesCurso java   08 - mais sobre coleções
Curso java 08 - mais sobre coleções
 
Curso java 06 - mais construtores, interfaces e polimorfismo
Curso java   06 - mais construtores, interfaces e polimorfismoCurso java   06 - mais construtores, interfaces e polimorfismo
Curso java 06 - mais construtores, interfaces e polimorfismo
 
Curso java 05 - herança, classes e métodos abstratos
Curso java   05 - herança, classes e métodos abstratosCurso java   05 - herança, classes e métodos abstratos
Curso java 05 - herança, classes e métodos abstratos
 
Curso java 04 - ap is e bibliotecas
Curso java   04 - ap is e bibliotecasCurso java   04 - ap is e bibliotecas
Curso java 04 - ap is e bibliotecas
 
Curso java 01 - molhando os pés com java
Curso java   01 - molhando os pés com javaCurso java   01 - molhando os pés com java
Curso java 01 - molhando os pés com java
 
Curso java 02 - variáveis
Curso java   02 - variáveisCurso java   02 - variáveis
Curso java 02 - variáveis
 
Curso java 03 - métodos e parâmetros
Curso java   03 - métodos e parâmetrosCurso java   03 - métodos e parâmetros
Curso java 03 - métodos e parâmetros
 
Extreme programming
Extreme programmingExtreme programming
Extreme programming
 
Feature Driven Development
Feature Driven DevelopmentFeature Driven Development
Feature Driven Development
 
Migrando pra Scala
Migrando pra ScalaMigrando pra Scala
Migrando pra Scala
 
Outsourcing e trabalho remoto para a nuvem
Outsourcing e trabalho remoto para a nuvemOutsourcing e trabalho remoto para a nuvem
Outsourcing e trabalho remoto para a nuvem
 
Mercado hoje
Mercado hojeMercado hoje
Mercado hoje
 
Análise de sistemas oo 1
Análise de sistemas oo   1Análise de sistemas oo   1
Análise de sistemas oo 1
 
Revisão html e java script
Revisão html e java scriptRevisão html e java script
Revisão html e java script
 
Aulas de Java Avançado 2- Faculdade iDez 2010
Aulas de Java Avançado 2- Faculdade iDez 2010Aulas de Java Avançado 2- Faculdade iDez 2010
Aulas de Java Avançado 2- Faculdade iDez 2010
 

REST: Uma nova abordagem para integração de sistemas

  • 1. Diga não aos web services Maurício Linhares – mauricio.linhares@gmail.com
  • 2. Baseado em fatos irreais… Eu preciso fazer vendas usando cartões de crédito, mas como é que o meu sistema fala com as operadoras?
  • 3. Você usa… Sabã… ops, SOAP! Eu resolvo o seu problema! Sou o protocolo padrão de mensagens dos web services!
  • 4. Pelo menos ele não usa a cueca por cima da roupa… E como é que isso resolve o meu problema?
  • 5. Os super-amigos se juntam para resolver o problema! WSDL – UDDI – HTTP – SMTP – FTP
  • 6. Tá começando a chatear… E como é que eu uso esse monte de coisa?
  • 7. Mais fácil do que fazer aposentado tirar empréstimo! Primeiro, você usa UDDI para descobrir aonde estão os serviços que você está interessado em consumir.
  • 8. Mais fácil do que falar “Tacho sujo, chuchu chocho” Depois você vai consumir os arquivos WSDL que descrevem os serviços com uma ferramenta geradora de clientes de web services.
  • 9. Mais fácil que comprar com cartão corporativo alheio Aí você vai poder finalmente enviar as requisições dos seus serviços via HTTP, SMTP, FTP…
  • 10. Que demais! Então é só eu buscar as operadoras de cartão num registro UDDI, ler os WSDLs padrão e começar a vender com cartão de crédito usando SMTP?
  • 11. Errr… quase…. Ainda não existe nenhum registro UDDI pras operadoras de cartão de crédito, os formatos das mensagens que eles usam não são iguais e quase ninguém usa serviços sem HTTP.
  • 12. O mundo real é duro  Registros UDDI são tão lendários que o próximo “Jurassic Park” vai ter um;  O único padrão das mensagens é como o formato delas é definido (WSDL), quase nenhuma industria de peso tem formatos de mensagens padronizados;  Ninguém usa web services em SOAP sem HTTP;
  • 13. Mas ainda fica pior  As ferramentas que geram e consomem WSDLs costumam não ser muito amigáveis quando lidam com plataformas diferentes;  Java tem problemas sérios de comunicação com serviços .Net;
  • 14. Acabou?  Até mesmo as diversas ferramentas de geração/consumo de web services tem incompatibilidades entre si;  O modo de invocação dos web services mata qualquer possibilidade de se desenvolver clientes Ajax para eles;
  • 15. Hum…  A “independência” de protocolos de transporte faz com que os web services usem muito pouco (ou quase nada) das capacidades do protocolo de transporte;  Web services sobre HTTP ignoram completamente as políticas de idempotência e segurança do protocolo;
  • 16. E agora? O que é que eu vou usar?
  • 17. REST A nova bala de prata
  • 18. Representational State Transfer  Baseado nos princípios da WWW e do procotolo HTTP;  É um estilo de arquitetura para sistemas baseado nas experiências da internet;  Apresentado ao mundo na tese de doutorado de Roy Fielding em 2000;
  • 19. Tudo são recursos acessíveis por URLs  http://loja.com/produtos/1  http://blog.br/posts/meu-primeiro-post  http://mapas.mundo/Brasil/Paraíba/João_ Pessoa
  • 20. Dissecando os recursos  Endereçabilidade e conexões – recursos são acessíveis através de endereços e apontam pra outros recursos (Google?);  Inexistência de estado – requisisões que operam em recursos devem conter toda a informação necessária para executar a operação;
  • 21. Os recursos estão disponíveis em diversas representações  Qualquer formato que você achar necessário, XHTML, JSON, XML, texto puro;  A escolha do formato do recurso é apenas uma questão de disponibilidade do servidor;
  • 22. Falando em servidores…  Completamente sem estado, assim como um servidor HTTP;  Todo estado do servidor deve ser mantido como recursos, não como “cookies” ou “sessões”;  Servidores são completamente independentes dos clientes;
  • 23. A interface comum  Existe uma única interface para se acessar os recursos e ela é igual para todos;  Se você conhece um, conhece todos;
  • 24. E os clientes?  Podem ser escritos em qualquer linguagem que suporte o protocolo de comunicação;  Nada de formatos exóticos baseados em XML;  Não dependem de geradores de código ou de ferramentas complexas de invocação de serviços;  Integração simplificada com clientes leves, como navegadores usando Ajax;
  • 25. Quem usa REST?  A internet toda, qualquer aplicação web pode ser vista, de certa forma, como uma aplicação REST;
  • 26. Falando sério…  Google (removeu tudo que era SOAP);  Yahoo;  Amazon.com (mas usa SOAP também);  Flickr;  Blogs que usam Atom ou RSS (todos :P);
  • 27. E agora José?  Você não tem mais motivos pra acha que web services são a única solução;  Você sabe que REST é limpo, independente de plataforma ou ferramentas e não tem um nome de duplo sentido (será?);  Você aprendeu que pode dizer a todo mundo que usa REST desde sempre;
  • 28.
  • 29. Referências  http://en.wikipedia.org/wiki/Representation al_State_Transfer  Leonard Richardson & Sam Ruby. Restful Web Services, O’Reilly;  Steve Graham. Building Web Services With Java, Developers Library.