Arquiteturas*de*Aplicações*Web* - ic.uff.brleomurta/courses/2015.1/tpis2/aula4.pdf ·...

39
Arquiteturas de Aplicações Web Leonardo Gresta Paulino Murta [email protected]ff.br

Transcript of Arquiteturas*de*Aplicações*Web* - ic.uff.brleomurta/courses/2015.1/tpis2/aula4.pdf ·...

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  

Google  

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]