Arquiteturas de Aplicações Web Leonardo Gresta Paulino Murta leomurta@ic.uff.br
Aplicações Convencionais vs. Web Aplicações convencionais Escritas usando uma linguagem de programação (ex.: Java) Sites de conteúdo estáhco Escritos usando uma linguagem de marcação (ex.: HTML) Aplicações Web Escritas usando uma mistura de linguagem de marcação (ex.: HTML) com linguagem de programação (ex.: Java) Conteúdo dinâmico Leo Murta Arquiteturas Web 2
Estratégias para gerar conteúdo dinâmico Marcação Programação Leo Murta Arquiteturas Web 3
Exemplo de marcação na programação (Servlet) import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class AloMundo extends HttpServlet { public void doget(httpservletrequest request, HttpServletResponse response) throws IOException { PrintWriter out = response.getwriter(); response.setcontenttype("text/html"); out.println("<html><body>"); out.println("<p>servlet Alo Mundo...</P>"); for (int i = 0; i < 10; i++) { out.println(i + "<BR>"); } out.println("</body></html>"); } } Leo Murta Arquiteturas Web 4
Exemplo de programação na marcação (JSP) <HTML> <BODY> <P>JSP Alo Mundo...</P> <% for (int i = 0; i < 10; i++) { %> <%= i %><BR> <% } %> </BODY> </HTML> Leo Murta Arquiteturas Web 5
Servlet: Servlet x JSP Java é a linguagem principal Indicado para implementar regras de negócio e manipulação de dados JSP: HTML é a linguagem principal Indicado para interface com o usuário Leo Murta Arquiteturas Web 6
Dificuldade Conciliar os dois mundos Ferramentas dishntas (IDE vs. Editor) Habilidades dishntas (Programador vs. Web Designer) IDE Java Boa para escrever código Java Ruim para escrever HTML Editor HTML Bom para escrever HTML Ruim para escrever código Java Leo Murta Arquiteturas Web 7
Necessidade Organizar a forma de trabalho com essas tecnologias Especial relevância para sistemas grandes e complexos com equipes mul8disciplinares Leo Murta Arquiteturas Web 8
Aplicações Web Grande variedade de Hpos de aplicação e domínios Blog pessoal Site de um curso Ferramenta de busca Rede social Home- banking E- commerce Grande variedade de requisitos não- funcionais Desempenho Escalabilidade Robustez Segurança Disponibilidade Portabilidade Leo Murta Arquiteturas Web 9
Arquiteturas Web Visam separação de responsabilidades entre os componentes da aplicação Web Atendem os requisitos não- funcionais esperados pela aplicação A um custo do seu aumento de complexidade Qual a arquitetura que melhor resolve o problema no curto, médio e longo prazo? Curto prazo: desenvolvimento Médio prazo: produção Longo prazo: manutenção Leo Murta Arquiteturas Web 10
Arquiteturas Web As principais arquiteturas separam as responsabilidades em camadas Cada camada pode estar em uma ou mais máquinas diferentes O número de camadas (contado do lado servidor) varia em função da complexidade a ser lidada Leo Murta Arquiteturas Web 11
Arquiteturas Web Sistemas cliente- servidor tradicionais têm somente 1 camada no lado servidor Armazenamento Arquiteturas em 2 camadas têm separação das enhdades em Apresentação Armazenamento Arquiteturas em 3 camadas têm separação das enhdades em Apresentação Aplicação Armazenamento Leo Murta Arquiteturas Web 12
Arquitetura em 1 camada Cliente Servidor Armazenamento SGBD Leo Murta Arquiteturas Web 13
Arquitetura em 2 camadas Cliente Apresentação Servidor Armazenamento <html>... </html> SGBD Leo Murta Arquiteturas Web 14
Arquitetura em 3 camadas Cliente Servidor Apres. Aplicação Armaz. CompraProduto <html>... </html> Pedido Especificacao 1 1..* Item 0..* 1 Produto SGBD 1 0..* Leo Murta Arquiteturas Web 15
Regras de negócio Cliente? Servidor Armazenamento SGBD Onde estão as REGRAS DE NEGÓCIO? Leo Murta Arquiteturas Web 16
Regras de negócio Cliente Apresentação Servidor? Armazenamento <html>... </html> SGBD Onde estão as REGRAS DE NEGÓCIO? Leo Murta Arquiteturas Web 17
Regras de negócio Cliente Servidor Apres. Aplicação Armaz. CompraProduto <html>... </html> REGRAS DE NEGÓCIO Pedido Especificacao 1 1..* 1 0..* Item 0..* 1 Produto SGBD Leo Murta Arquiteturas Web 18
Por que Java? Java Community Process (JCP) Especificações (JSR) Implementações Ferramentas Implementação de referência Demais implementações Teste de compahbilidade IDEs Ferramentas de apoio Leo Murta Arquiteturas Web 19
Por que Java? (alguns membros do JCP) VMWare Apache Boeing Sybase CA Sun Eclipse Sony Fujitsu SAP Java Google Samsung Hitachi RedHat IBM Oracle Intel Novell Nokia NEC Motorola Leo Murta Arquiteturas Web 20
Arquiteturas Web em Java Java permite a adoção de diferentes arquiteturas web Dentre as mais famosas estão Model2 (mais simples) Java EE (mais complexa) Leo Murta Arquiteturas Web 21
Arquitetura Model2 em Java Servidores exemplo Cliente GlassFish Java DB Apresentação Aplicação Armazenamento <html>... </html> CompraProduto SGBD Browser (formularios + Applet) Aplicação Java JSP (página de resposta) Servlet (regras de negócio) JDBC (acesso a dados) SGBD (dados) Leo Murta Arquiteturas Web 22
Arquitetura Model2 em Java (elementos fundamentais) JSP Páginas HTML com código Java embuhdo Servlet Classes Java que rodam em servidores JDBC API de acesso a banco de dados em Java Leo Murta Arquiteturas Web 23
Arquitetura Model2 em Java (cenário jpico) Cliente Servidor Apresentação Aplicação Armazenamento <html>... </html> Servlet CompraProduto JDBC SGBD JSP Leo Murta Arquiteturas Web 24
Arquitetura Model2 em Java (cenário jpico) 1. Cliente solicita um Servlet usualmente após o preenchimento de um formulário HTML 2. Servidor interpreta o Servlet na camada de aplicação 3. Se necessário, a camada de aplicação se comunica com a camada de armazenamento através de JDBC 4. Camada de aplicação redireciona o fluxo para a camada de apresentação 5. Servidor constrói uma página de resposta usando JSP 6. Servidor retorna a página de resposta. Leo Murta Arquiteturas Web 25
Arquitetura Java EE Servidores exemplo Cliente GlassFish Java DB Apresentação Aplicação Armazenamento <html>... </html> CompraProduto SGBD Browser (formularios + Applet) Aplicação Java JSF (interface dinâmica) EJB (regras de negócio) JPA (entidades) SGBD (dados) Leo Murta Arquiteturas Web 26
JSF Arquitetura Java EE (elementos fundamentais) Framework de apresentação que faz uso disciplinado de Servlet e JSP EJB Componentes de negócio JPA EnHdades persistentes Leo Murta Arquiteturas Web 27
Arquitetura Java EE (cenário jpico) Cliente Servidor Apresentação Aplicação Armazenamento Servlet <html>... </html> EJB CompraProduto Pedido Especificacao 1 1..* Item 0..* 1 Produto SGBD SGBD JSF JPA 1 0..* Leo Murta Arquiteturas Web 28
Arquitetura Java EE (cenário jpico) 1. Cliente solicita um Servlet usualmente após o preenchimento de um formulário HTML 2. Servidor interpreta o Servlet e redireciona o fluxo para um EJB na camada de aplicação 3. Se necessário, a camada de aplicação faz uso de outros EJBs ou se comunica com a camada de armazenamento através de enhdades JPA 4. Camada de aplicação redireciona o fluxo para a camada de apresentação 5. Servidor constrói uma página de resposta usando JSF 6. Servidor retorna a página de resposta Leo Murta Arquiteturas Web 29
Containers Infraestrutura capaz de oferecer serviços básicos para códigos Java Segurança Transação Lookup e injeção de dependências e recursos ConecHvidade remota Gestão do ciclo de vida Leo Murta Arquiteturas Web 30
Containers Fonte: livro Java EE 7 Tutorial Leo Murta Arquiteturas Web 31
Container Web Containers Interface entre componentes web (Servlets, JSP ou JSF) e o servidor Java EE Container EJB Interface entre componentes EJB e o servidor Java EE Container Cliente Interface entre aplicações Java e o servidor Java EE Leo Murta Arquiteturas Web 32
Comunicação cliente- servidor Cliente Servidor Protocolo HTTP Leo Murta Arquiteturas Web 33
Protocolo HTTP O protocolo HTTP fornece um mecanismo simples de requisição- resposta Sem manutenção de estado Independente do Hpo do conteúdo Partes de uma mensagem HTTP Requisição (método + URL)/Resposta (código) Cabeçalho (pares chave- valor) Corpo da mensagem Leo Murta Arquiteturas Web 34
Protocolo HTTP Fonte: livro Java EE 7: The Big Picture Leo Murta Arquiteturas Web 35
Protocolo HTTP (Alguns métodos de requisição) GET Consulta dados do servidor Permite passagem de parâmetros, que aparecem na URL Não deve alterar o estado do servidor POST Insere dados no servidor, sem limite de tamanho ÚHl para enviar dados sensíveis, pois não ficam visíveis na URL Pode alterar o estado do servidor PUT Atualiza dados no servidor DELETE Remove dados do servidor Leo Murta Arquiteturas Web 36
Protocolo HTTP (Alguns códigos de resposta) 200 OK 401 Not Authorized 403 Forbidden 404 Not Found 408 Request Timeout 429 Too Many Requests 500 Internal Server Error 503 Service Unavailable Leo Murta Arquiteturas Web 37
Protocolo HTTP (URL) Uma URL é um conjunto de informações de idenhficação de recurso: hxp://www.xpto.com:8080/pub/exemplo.jsp?p1=v1&p2=v2 protocolo domínio porta caminho recurso parâmetros e argumentos Leo Murta Arquiteturas Web 38
Arquiteturas de Aplicações Web Leonardo Gresta Paulino Murta leomurta@ic.uff.br