Palestra: WebServices RESTful – Falando em Java 2009

by

WebServices RESTful

Palestra apresentada por Jim Webber (ThoughtWorks)

Introdução

Jim, que na minha opinião, foi o melhor palestrante do evento, fechou o evento falando do mesmo assunto que seria destinado a Bill Burke, WebServices RESTful. Após apresentar sua MiniBio ele apresentou os tópicos da apresentação:

  • The Richardson Maturity Model;
  • Web Architecture;
  • Tunneling and POX;
  • URI templates and CRUD Services;
  • Hypermedia Formats;
  • RESTful Services.

The Richardson Maturity Model

O modelo de maturidade Richardson é definido em quatro níveis:

  • Level 0: SOAP, XML, RPC, POX (single URI);
  • Level 1: URI tunneling (muitas URI’s, único verbo);
  • Level 2: Muitas URI’s, muitos verbos (CRUD Services – Modelo Amazon S3);
  • Level 3: Level 2 + Hypermedia (RESTful Services).

Web Architecture

  • Conceito Web: baseada em recursos, acessada por URI’s (nunca diga URL’s: Deus mata crianças e gatos se você fizer isso, de acordo com Jim), arquivada em meios físicos, acessada por meios lógicos (WebServices) e distribuída para aplicações finais (usuários). Tudo é baseado em verbos HTTP;
  • Tudo é acessado via URI’s. URI é um endereço de acesso a recurso(s) de sistema(s);
  • A Web é muito poderosa: é escalável, tolerante a falhas, recuperável, tem baixo acoplamento, interface uniforme, modelo stateless e fail-over fácil;
  • HTTPS é uma tecnologia madura (baseada em SSL) e deve ser aplicada na Web;
  • Web != REST  (não abuse da Web).

Tunneling and POX

  • URI tunneling Pattern: URI’s com assinatura padrão e facilidade de manutenção, acesso e mapeamento;
  • URI tunneling Strengths: muito fácil entendimento e usabilidade em outras linguagens;
  • POX Pattern: como “parsear” padrões de texto, processá-los e disponibilizar as informações de envio;
  • POX Strenghts: simples, apenas usa HTTP POST e XML, facilidade de reuso, sem suporte a metadados;

URI templates and CRUD Services

  • Web já detém a maioria dos recursos. Deve-se usar o CRUD e pensar nele como base (Jim apresentou exemplos de sinalização de mensagens usando GET, POST, PUT, DELETE);
  • CRUD é bom? Sim, mas CRUD não é REST. Modelo CRUD ainda é muito implementado para armazenar dados somente.

Hypermedia Formats & RESTful Services

  • Microformatos na semântica W3C;
  • RESTful services é o level 3 (media type rules!). Logo é preciso implementar formatos hypermedia e XML (e/ou Application XML) não pode conter links. Do contrário não é nível 3;
  • Application /vnd.restbucks + XML: é o formato XML para hypermedia; não é padrão para a IANA;
  • Links descrevem protocolos, fluxo, regra de negócio. Logo podemos pensar em “Link as API” e tudo como framework;
  • Se você não tem hypermidia você não tem o RESTful;
  • Use a Web para escalabilidade massiva, mas com tolerância;
  • HTTP tem estados e header para todas as situações. Queremos ter baixo acoplamento e isso pode ser auxiliado por meio dos links hypermidia.

Para finalizar Jim Webber deixou um link de um artigo seu escrito para o InfoQ, contendo os mesmos exemplos da apresentação. Agradeceu a recepção e o interesse do público brasileiro. Da minha parte fica a impressão de quão incrível são os palestrantes internacionais e a desenvoltura para fazer apresentação e explanação de idéias sem igual.

Tags: , , , , , , , , , , ,

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s


%d blogueiros gostam disto: