Upload
rafael-nunes
View
665
Download
5
Embed Size (px)
DESCRIPTION
Arquitetura REST e JEE 6
Citation preview
REST e o futuro das aplicações web
Rafael Nunes - www.yaw.com.br
Rafael Nunes
Desenvolvedor há mais de uma década
Sócio da YaW
Java, Python e outras coisas menos glamurosas(ASP, VDF7)
Atualmente prestando consultoria para o mercado financeiro
Instrutor da Globalcode há 6 anos
A web, esta velha desconhecida
Mais importante que aprender a última tecnologia da moda, é compreender os fundamentos que a suportam
A Web tem sido fundamentalmente a mesma nas últimas décadas
HTTP – o protocolo que move o mundo
HTTP
Hiper Text Transfer Protocol
Dos tempos imemoriaveis da ARPA NET
Transferência de hipertexto
www.pudim.com.br - facebook.com
Dissecando o HTTP - Request
Abre uma conexão TCP
Monta envelope de request: Cabeçalho: Informações sobre o
usuário/máquina/navegador/sistema operacional/infos da requisição
Corpo: Dados para o processamento da requisição Anexo: Em caso de upload de arquivo
Envia envelope para processamento no servidor
Dissecando o HTTP - Response
Recebe envelope para processamento
Interpreta requisição do usuário
Monta envelope de resposta: Cabeçalho: infos do servidor/infos do conteúdo de
resposta/tamanho da resposta Corpo: Conteúdo da resposta Anexo: Em caso de download de arquivo
Envia envelope e FECHA A CONEXÃO!
HTTP - Características
Stateless/ Sem estado
Não mantém uma conexão de vida longa entre cliente e servidor
Virtude ou limitação?
Comet, HTTP push, HTTP reverso foram criados para manter estado
HTTP - Caracterísicas
Síncrono
Não há resposta sem requisição
Efeito da natureza stateless
Ajax, (Long) Pooling
HTTP - Características
E as sessões?
A má notícia é que elas não existem
A boa notícia é que temos boas alternativas para contornar esta característica
Mas……eu preciso mesmo de sessão na web, o tempo todo?
Web atual
Estamos em um momento de transição: A web ‘tradicional’ HTML5 e suas novas tecnologias(localStorage, session
storage, websockets, SPDY, etc)
REST tem sido ainda mais crucial para a nova web que estamos construindo
Web como plataforma
O que é uma requisição HTTP?R: Uma representação de determinado recurso no servidor web em determinado momento. Ex. http://www.yaw.com.br/screencasts.html
REST
Representation State Transfer
A proposta é continuar com o que temos feito, mas utilizando verdadeiramente o protocolo HTTP
REST
HTTP é feito de verbos
Que ver algo? GET, HEAD, TRACE
Quer modificar algo? PUT, POST, DELETE
REST
HTTP é feito de status:
Foi tudo bem? 20x
O que eu procuro não está mais ai? 30x
Não pedi do jeito certo? 40x
Houve algum problema? 50x
REST e JEE
Especificado pela JSR 127
JAX-RS e Jersey é a implementação de referência
Diversos outros frameworks: RestEasy, SpringMVC, CXF
REST como camada web
É possível criar uma arquitetura REST com JEE desde sempre, com servlets
Não há acoplamento entre cliente e servidor
Cliente pode ser com JSP+JQuery
De quebra ganha uma API de acesso para outras interfaces(Desktop, Mobile, etc)
REST utiliza outras tecnologias(XML, JSON)
REST como camada de integração
Como integramos sistemas? Banco de dados Arquivo txt WebService SOAP(run to the hills)
Tem funcionado há algumas décadas, e não há nada de errado. Mas não tem uma forma mais simples?
REST como camada de serviços
O que é sua aplicação?(regras de negócio? Tecnologias, telas e interfaces?)
Ela pode(e talvez deva) ser isso tudo.
Sua aplicação deve ter uma API(Application Programming Interface) pública
Esta API é quem vai criar um ecossistema em volta da sua aplicação
Exemplos
REST como camada web
REST como camada de integração
REST como API programável
Conclusão
REST é principalmente sobre:
Simplicidade
Possibilidades
Perguntas?
twitter.com/rafanunes
twitter.com/youandwe
www.yaw.com.br