Arquiteturas Web

Propaganda
Arquiteturas de Aplicações Web Leonardo Gresta Paulino Murta [email protected]ff.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 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 •  Grande variedade de requisitos não-­‐
funcionais –  Blog pessoal –  Site de um curso –  Ferramenta de busca –  Rede social –  Home-­‐banking –  E-­‐commerce Leo Murta
–  Desempenho –  Escalabilidade –  Robustez –  Segurança –  Disponibilidade –  Portabilidade 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 Servidor
Cliente
Armazenamento
SGBD
Leo Murta
Arquiteturas Web
13
Arquitetura em 2 camadas Servidor
Cliente
Apresentação
<html>
...
</html>
Leo Murta
Arquiteturas Web
Armazenamento
SGBD
14
Arquitetura em 3 camadas Servidor
Cliente
Aplicação
Apres.
Armaz.
CompraProduto
<html>
...
</html>
SGBD
Pedido
Item
1
1..*
0..*
1
Especificacao
Produto
1
Leo Murta
Arquiteturas Web
0..*
15
Regras de negócio Servidor
Cliente
?
Armazenamento
SGBD
Onde estão as REGRAS DE NEGÓCIO?
Leo Murta
Arquiteturas Web
16
Regras de negócio Servidor
Cliente
Apresentação
<html>
...
</html>
?
Armazenamento
SGBD
Onde estão as REGRAS DE NEGÓCIO?
Leo Murta
Arquiteturas Web
17
Regras de negócio Servidor
Cliente
Aplicação
Apres.
Armaz.
CompraProduto
<html>
...
</html>
SGBD
Pedido
Item
1
1..*
0..*
1
REGRAS DE NEGÓCIO
Leo Murta
Especificacao
Arquiteturas Web
Produto
1
0..*
18
Por que Java? Java Community Process (JCP) Especificações (JSR) Implementações Implementação de referência Leo Murta
Demais implementações Teste de compaHbilidade Arquiteturas Web
Ferramentas IDEs Ferramentas de apoio 19
Por que Java? (alguns membros do JCP) VMWare Apache Boeing Sybase CA Sun Eclipse Sony Fujitsu Java SAP Google Samsung Hitachi RedHat IBM Oracle Intel Novell Motorola Nokia Leo Murta
NEC 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
GlassFish
Cliente
Apresentação
<html>
...
</html>
Browser
(formularios +
Applet)
Aplicação Java
Leo Murta
Aplicação
CompraProduto
JSP
(página de resposta)
Servlet
(regras de negócio)
JDBC
(acesso a dados)
Arquiteturas Web
Java DB
Armazenamento
SGBD
SGBD
(dados)
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) Servidor
Cliente
Apresentação
Œ
Aplicação

Servlet
CompraProduto

‘
<html>
...
</html>
Armazenamento
Ž
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
GlassFish
Cliente
Apresentação
<html>
...
</html>
Browser
(formularios +
Applet)
Aplicação Java
Leo Murta
Aplicação
CompraProduto
JSF
(interface dinâmica)
EJB
(regras de negócio)
JPA
(entidades)
Arquiteturas Web
Java DB
Armazenamento
SGBD
SGBD
(dados)
26
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) Servidor
Cliente
Apresentação
Œ
Armazenamento
Aplicação
EJB
Servlet
CompraProduto

Ž


‘
<html>
...
</html>
Pedido
1
1
Especificacao
Produto
1
SGBD
1..*
0..*
JSF
Leo Murta
Item
SGBD
0..*
JPA
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 Servidor
Cliente
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
•  GET Protocolo HTTP (Alguns métodos de requisição) –  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
Leo Murta
Arquiteturas Web
recurso
parâmetros e
argumentos
38
Arquiteturas de Aplicações Web Leonardo Gresta Paulino Murta [email protected]ff.br 
Download