Upload
others
View
3
Download
0
Embed Size (px)
Citation preview
Arquiteturas de Aplicações Web
Leonardo Gresta Paulino Murta [email protected]
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
Leo Murta Arquiteturas Web 3
Marcação
Programação
Exemplo de “marcação” na “programação” (Servlet)
Leo Murta Arquiteturas Web 4
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>"); } }
Exemplo de “programação” na “marcação” (JSP)
Leo Murta Arquiteturas Web 5
<HTML> <BODY> <P>JSP Alo Mundo...</P> <% for (int i = 0; i < 10; i++) { %> <%= i %><BR> <% } %> </BODY> </HTML>
Servlet x JSP • Servlet:
– 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
Leo Murta Arquiteturas Web 10
• 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
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
Leo Murta Arquiteturas Web 13
SGBD
Cliente Servidor
Armazenamento
Arquitetura em 2 camadas
Leo Murta Arquiteturas Web 14
SGBD <html> ... </html>
Cliente Servidor
Apresentação Armazenamento
Arquitetura em 3 camadas
Leo Murta Arquiteturas Web 15
SGBD
CompraProduto
Pedido
Especificacao
Item1..*1 1..*1
Produto0..*1 0..*1
10..*10..*
<html> ... </html>
Cliente Servidor
Apres. Aplicação Armaz.
Regras de negócio
Leo Murta Arquiteturas Web 16
SGBD
Cliente Servidor
Armazenamento ?
Onde estão as REGRAS DE NEGÓCIO?
Regras de negócio
Leo Murta Arquiteturas Web 17
SGBD <html> ... </html>
Cliente Servidor
Apresentação Armazenamento
Onde estão as REGRAS DE NEGÓCIO?
?
Regras de negócio
Leo Murta Arquiteturas Web 18
SGBD
CompraProduto
Pedido
Especificacao
Item1..*1 1..*1
Produto0..*1 0..*1
10..*10..*
<html> ... </html>
Cliente Servidor
Apres. Aplicação Armaz.
REGRAS DE NEGÓCIO
Por que Java?
Leo Murta Arquiteturas Web 19
Java Community Process (JCP) Especificações (JSR)
Implementações
Implementação de referência
Demais implementações
Teste de compaHbilidade
Ferramentas
IDEs Ferramentas de apoio
Por que Java? (alguns membros do JCP)
Leo Murta Arquiteturas Web 20
Java
Apache Boeing
CA
Eclipse
Fujitsu
Hitachi
IBM
Intel
Motorola NEC Nokia
Novell
Oracle
RedHat
Samsung
SAP
Sony
Sun
Sybase
VMWare
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
Leo Murta Arquiteturas Web 22
SGBD CompraProduto<html>
... </html>
Cliente
Servidores exemplo
Apresentação Aplicação Armazenamento
SGBD (dados)
Servlet (regras de negócio)
JDBC (acesso a dados)
JSP (página de resposta)
GlassFish Java DB
Browser (formularios +
Applet) Aplicação Java
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)
Leo Murta Arquiteturas Web 24
SGBD CompraProduto
<html> ... </html>
Cliente Servidor
Apresentação Aplicação Armazenamento
� � �
� �
�
Servlet
JDBC
JSP
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
Leo Murta Arquiteturas Web 26
SGBD CompraProduto<html>
... </html>
Cliente
Apresentação Aplicação Armazenamento
SGBD (dados)
Browser (formularios +
Applet) Aplicação Java
JSF (interface dinâmica)
EJB (regras de negócio)
JPA (entidades)
Servidores exemplo
GlassFish Java DB
Arquitetura Java EE (elementos fundamentais)
• JSF – 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)
SGBD
CompraProduto
<html> ... </html>
SGBD
EJB
JSF
� �
� �
� �
Servlet
Pedido
Especificacao
Item1..*1 1..*1
Produto0..*1 0..*1
10..*10..*
JPA
Cliente Servidor Apresentação Aplicação Armazenamento
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
Containers • Container Web
– 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
Leo Murta Arquiteturas Web 33
Cliente Servidor
Protocolo HTTP
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
Leo Murta Arquiteturas Web 38
protocolo domínio porta
caminho
parâmetros e argumentos
recurso
Arquiteturas de Aplicações Web
Leonardo Gresta Paulino Murta [email protected]