DC - UFC Copyright © 2003 Misael Santos e Rossana Andrade 1 Padrões de Projeto para Sistemas Web...

42
Copyright © 2003 Misael Santos e Rossana Andrade 1 DC - UFC DC - UFC Padrões de Projeto para Sistemas Web Misael Santos e Rossana Andrade [email protected] Universidade Federal do Ceará – Jan/2003

Transcript of DC - UFC Copyright © 2003 Misael Santos e Rossana Andrade 1 Padrões de Projeto para Sistemas Web...

Page 1: DC - UFC Copyright © 2003 Misael Santos e Rossana Andrade 1 Padrões de Projeto para Sistemas Web Misael Santos e Rossana Andrade misael@lia.ufc.br Universidade.

Copyright © 2003 Misael Santos e Rossana Andrade 1DC - UFC DC - UFC

Padrões de Projeto paraSistemas Web

Misael Santos e Rossana [email protected]

Universidade Federal do Ceará – Jan/2003

Page 2: DC - UFC Copyright © 2003 Misael Santos e Rossana Andrade 1 Padrões de Projeto para Sistemas Web Misael Santos e Rossana Andrade misael@lia.ufc.br Universidade.

Copyright © 2003 Misael Santos e Rossana Andrade 2DC - UFC DC - UFC

Agenda Introdução

– Servlets Padrões

– Web Interceptor– Web Handlers– Web Compiler– Super Component

Referências

Page 3: DC - UFC Copyright © 2003 Misael Santos e Rossana Andrade 1 Padrões de Projeto para Sistemas Web Misael Santos e Rossana Andrade misael@lia.ufc.br Universidade.

Copyright © 2003 Misael Santos e Rossana Andrade 3DC - UFC DC - UFC

Servlets

http://www.ufc.br

Cliente

Servidor Web

Web Container

Servlet

Page 4: DC - UFC Copyright © 2003 Misael Santos e Rossana Andrade 1 Padrões de Projeto para Sistemas Web Misael Santos e Rossana Andrade misael@lia.ufc.br Universidade.

Copyright © 2003 Misael Santos e Rossana Andrade 4DC - UFC DC - UFC

Servlets Características

– Classes Java– Boa Performance– Suporta Requisições Concorrentes– Simples e Extensível

Page 5: DC - UFC Copyright © 2003 Misael Santos e Rossana Andrade 1 Padrões de Projeto para Sistemas Web Misael Santos e Rossana Andrade misael@lia.ufc.br Universidade.

Copyright © 2003 Misael Santos e Rossana Andrade 5DC - UFC DC - UFC

Servlets Ciclo de Vida

– Inicialização– Serviço– Finalização

Page 6: DC - UFC Copyright © 2003 Misael Santos e Rossana Andrade 1 Padrões de Projeto para Sistemas Web Misael Santos e Rossana Andrade misael@lia.ufc.br Universidade.

Copyright © 2003 Misael Santos e Rossana Andrade 6DC - UFC DC - UFC

ServletsCarregado

em memória

EmInicialização

Disponível

Emdestruição

Nãocarregado

service()

new()

init()

destroy()

Page 7: DC - UFC Copyright © 2003 Misael Santos e Rossana Andrade 1 Padrões de Projeto para Sistemas Web Misael Santos e Rossana Andrade misael@lia.ufc.br Universidade.

Copyright © 2003 Misael Santos e Rossana Andrade 7DC - UFC DC - UFC

Agenda Introdução

– Servlets Padrões

– Web Interceptor– Web Handlers– Web Compiler– Super Component

Referências

Page 8: DC - UFC Copyright © 2003 Misael Santos e Rossana Andrade 1 Padrões de Projeto para Sistemas Web Misael Santos e Rossana Andrade misael@lia.ufc.br Universidade.

Copyright © 2003 Misael Santos e Rossana Andrade 8DC - UFC DC - UFC

Web Interceptor Contexto:

Página de Crédito

ComponenteCredito ComponenteDebito

Página de Débito

<<submit>><<submit>>

Page 9: DC - UFC Copyright © 2003 Misael Santos e Rossana Andrade 1 Padrões de Projeto para Sistemas Web Misael Santos e Rossana Andrade misael@lia.ufc.br Universidade.

Copyright © 2003 Misael Santos e Rossana Andrade 9DC - UFC DC - UFC

Web Interceptor Problema:

– Como evitar a duplicação de código no início das operações que executam as requisições em sistemas Web estruturados de forma modular?

Page 10: DC - UFC Copyright © 2003 Misael Santos e Rossana Andrade 1 Padrões de Projeto para Sistemas Web Misael Santos e Rossana Andrade misael@lia.ufc.br Universidade.

Copyright © 2003 Misael Santos e Rossana Andrade 10DC - UFC DC - UFC

Web InterceptorPágina de Crédito

Interceptor

ComponenteCredito ComponenteDebito

Página de Débito

<<submit>><<submit>>

<<redirect>><<redirect>>

Page 11: DC - UFC Copyright © 2003 Misael Santos e Rossana Andrade 1 Padrões de Projeto para Sistemas Web Misael Santos e Rossana Andrade misael@lia.ufc.br Universidade.

Copyright © 2003 Misael Santos e Rossana Andrade 11DC - UFC DC - UFC

Web InterceptorCliente Web InterceptorMain

ComponenteCredito

ComponenteDebito

ComponenteTransferencia

<<redirect>>

<<submit>>

<<redirect>><<redirect>>

Interceptor1 Interceptor2

Page 12: DC - UFC Copyright © 2003 Misael Santos e Rossana Andrade 1 Padrões de Projeto para Sistemas Web Misael Santos e Rossana Andrade misael@lia.ufc.br Universidade.

Copyright © 2003 Misael Santos e Rossana Andrade 12DC - UFC DC - UFC

Web Interceptor Consequências:

– Único ponto de acesso– Evita repetição desnecessária de código– Diminui o acoplamento– Diminui a performance

Page 13: DC - UFC Copyright © 2003 Misael Santos e Rossana Andrade 1 Padrões de Projeto para Sistemas Web Misael Santos e Rossana Andrade misael@lia.ufc.br Universidade.

Copyright © 2003 Misael Santos e Rossana Andrade 13DC - UFC DC - UFC

Web Interceptor Implementação

– …extends HttpServlet– TIpos de Associação:

Associação Estática Associação Automática Associação Dinâmica

Page 14: DC - UFC Copyright © 2003 Misael Santos e Rossana Andrade 1 Padrões de Projeto para Sistemas Web Misael Santos e Rossana Andrade misael@lia.ufc.br Universidade.

Copyright © 2003 Misael Santos e Rossana Andrade 14DC - UFC DC - UFC

Web Interceptor Usos Conhecidos

– Framework Web Handlers.– Portal Encontre & Compre: sistema de

consultas dos assinantes da Listel.– FiS (Financial Services): migração

J2EE da HiperCard.– Central de Regulação do SUS:

desenvolvido pelo CESAR.

Page 15: DC - UFC Copyright © 2003 Misael Santos e Rossana Andrade 1 Padrões de Projeto para Sistemas Web Misael Santos e Rossana Andrade misael@lia.ufc.br Universidade.

Copyright © 2003 Misael Santos e Rossana Andrade 15DC - UFC DC - UFC

Web Interceptor Padrões Relacionados:

– Facade Customização do Facade para sistemas Web.

– Front Controller Possui lógica para decidir que componente deve

receber a requisição.

– Intercepting Filter Acoplados aos Servlets para realizar um pré-

processamento.

Page 16: DC - UFC Copyright © 2003 Misael Santos e Rossana Andrade 1 Padrões de Projeto para Sistemas Web Misael Santos e Rossana Andrade misael@lia.ufc.br Universidade.

Copyright © 2003 Misael Santos e Rossana Andrade 16DC - UFC DC - UFC

Agenda Introdução

– Servlets Padrões

– Web Interceptor– Web Handlers– Web Compiler– Super Component

Referências

Page 17: DC - UFC Copyright © 2003 Misael Santos e Rossana Andrade 1 Padrões de Projeto para Sistemas Web Misael Santos e Rossana Andrade misael@lia.ufc.br Universidade.

Copyright © 2003 Misael Santos e Rossana Andrade 17DC - UFC DC - UFC

Web Handlers Contexto

Página de Login

Menu deMovimentações

Página deCrédito

Página deDébito

Links estáticosde HTML

Page 18: DC - UFC Copyright © 2003 Misael Santos e Rossana Andrade 1 Padrões de Projeto para Sistemas Web Misael Santos e Rossana Andrade misael@lia.ufc.br Universidade.

Copyright © 2003 Misael Santos e Rossana Andrade 18DC - UFC DC - UFC

Web Handlers Contexto

Página de Login 2 Menu de

Movimentações

Página deCrédito

Página deDébito

Página de Login 1

Menu deAtualização

OutrasPáginas...

Page 19: DC - UFC Copyright © 2003 Misael Santos e Rossana Andrade 1 Padrões de Projeto para Sistemas Web Misael Santos e Rossana Andrade misael@lia.ufc.br Universidade.

Copyright © 2003 Misael Santos e Rossana Andrade 19DC - UFC DC - UFC

Web Handlers Problema:

– Evitar a duplicação de código e complexidade na estruturação de sistemas Web com relacionamento M:N entre a apresentação e o processamento.

Page 20: DC - UFC Copyright © 2003 Misael Santos e Rossana Andrade 1 Padrões de Projeto para Sistemas Web Misael Santos e Rossana Andrade misael@lia.ufc.br Universidade.

Copyright © 2003 Misael Santos e Rossana Andrade 20DC - UFC DC - UFC

Web Handlers Solução:

– Handlers de Apresentação– Handlers de Processamento– Controlador de Handlers

Page 21: DC - UFC Copyright © 2003 Misael Santos e Rossana Andrade 1 Padrões de Projeto para Sistemas Web Misael Santos e Rossana Andrade misael@lia.ufc.br Universidade.

Copyright © 2003 Misael Santos e Rossana Andrade 21DC - UFC DC - UFC

Web Handlers<<Handler de Processamento>>

HP_Login

processar(ServletRequest, ServletResponse)

<<Handler de Apresentação>>HA_MenuMovimentacoes

apresentar(ServletRequest, ServletResponse)

Login a partir da Página de Login 2

<<Handler de Processamento>>HP_Login

processar(ServletRequest, ServletResponse)

<<Handler de Apresentação>>HA_MenuAtualizacao

apresentar(ServletRequest, ServletResponse)

Login a partir da Página de Login 1

Page 22: DC - UFC Copyright © 2003 Misael Santos e Rossana Andrade 1 Padrões de Projeto para Sistemas Web Misael Santos e Rossana Andrade misael@lia.ufc.br Universidade.

Copyright © 2003 Misael Santos e Rossana Andrade 22DC - UFC DC - UFC

Web Handlers<<Handler de Processamento>>

HP_Credito

processar(ServletRequest, ServletResponse)

<<Handler de Apresentação>>HA_MenuMovimentacoes

apresentar(ServletRequest, ServletResponse)

Execução da operação de Crédito

<<Handler de Processamento>>HP_Debito

processar(ServletRequest, ServletResponse)

<<Handler de Apresentação>>HA_MenuMovimentacoes

apresentar(ServletRequest, ServletResponse)

Execução da operação de Débito

Page 23: DC - UFC Copyright © 2003 Misael Santos e Rossana Andrade 1 Padrões de Projeto para Sistemas Web Misael Santos e Rossana Andrade misael@lia.ufc.br Universidade.

Copyright © 2003 Misael Santos e Rossana Andrade 23DC - UFC DC - UFC

Web Handlers Consequências

– Maior reuso de código– Flexibilidade na composição– Mudanças na apresentação não causam efeito

no processamento– Facilita a implementação de sistemas que

requerem diferentes formatos de saída– Aumenta o número de classes– Complexidade na implementação

Page 24: DC - UFC Copyright © 2003 Misael Santos e Rossana Andrade 1 Padrões de Projeto para Sistemas Web Misael Santos e Rossana Andrade misael@lia.ufc.br Universidade.

Copyright © 2003 Misael Santos e Rossana Andrade 24DC - UFC DC - UFC

Web Handlers Usos Conhecidos

– Portal Encontre & Compre: sistema de consultas dos assinantes da Listel.

– Sistema de Fomento Lattes – Prospectar: Sistema de prospecção tecnológica do

Governo Federal.– Web2Billing: consulta e pagamento de faturas online– FiS (Financial Services): migração J2EE da HiperCard.– Fep (Call Center no FEP): da HiperCard.– Gin (Sistema de Gestão Interna): sistema de apoio a

gestão interna do CESAR.

Page 25: DC - UFC Copyright © 2003 Misael Santos e Rossana Andrade 1 Padrões de Projeto para Sistemas Web Misael Santos e Rossana Andrade misael@lia.ufc.br Universidade.

Copyright © 2003 Misael Santos e Rossana Andrade 25DC - UFC DC - UFC

Web Handlers Padrões Relacionados

– Na construção dos handlers de apresentação pode ser usado o padrão Web Compiler.

– O Facade pode ser usado para agrupar as regras de negócio em um único ponto.

– O Controlado de Handlers deve implemetar o padrão Web Interceptor.

– O padrão Super Component pode ser usado na implementação dos Handlers de apresentação e de processamento.

Page 26: DC - UFC Copyright © 2003 Misael Santos e Rossana Andrade 1 Padrões de Projeto para Sistemas Web Misael Santos e Rossana Andrade misael@lia.ufc.br Universidade.

Copyright © 2003 Misael Santos e Rossana Andrade 26DC - UFC DC - UFC

Agenda Introdução

– Servlets Padrões

– Web Interceptor– Web Handlers– Web Compiler– Super Component

Referências

Page 27: DC - UFC Copyright © 2003 Misael Santos e Rossana Andrade 1 Padrões de Projeto para Sistemas Web Misael Santos e Rossana Andrade misael@lia.ufc.br Universidade.

Copyright © 2003 Misael Santos e Rossana Andrade 27DC - UFC DC - UFC

Web Compiler Contexto:...mensagem = consultarMensagem();texto = “<HTML><HEAD>Exemplo

1</HEAD><BODY>”;texto = texto + mensagem;texto = texto + “</BODY></HTML>”;out.println(texto);...

Page 28: DC - UFC Copyright © 2003 Misael Santos e Rossana Andrade 1 Padrões de Projeto para Sistemas Web Misael Santos e Rossana Andrade misael@lia.ufc.br Universidade.

Copyright © 2003 Misael Santos e Rossana Andrade 28DC - UFC DC - UFC

Web Compiler Contexto:

– Impossibilidade de ver o Layout– Designers X Engenheiros de Software– Recompilação a cada modificação no Layout– Dificulta a legibilidade do código

Page 29: DC - UFC Copyright © 2003 Misael Santos e Rossana Andrade 1 Padrões de Projeto para Sistemas Web Misael Santos e Rossana Andrade misael@lia.ufc.br Universidade.

Copyright © 2003 Misael Santos e Rossana Andrade 29DC - UFC DC - UFC

Web Compiler Problema:

– Como desenvolver uma aplicação Web de forma a evitar que o layout das páginas HTML esteja misturado com a lógica de execução das operações do sistema?

Page 30: DC - UFC Copyright © 2003 Misael Santos e Rossana Andrade 1 Padrões de Projeto para Sistemas Web Misael Santos e Rossana Andrade misael@lia.ufc.br Universidade.

Copyright © 2003 Misael Santos e Rossana Andrade 30DC - UFC DC - UFC

Web Compiler Solução:

Regras de Negócio

ComponenteWeb

Passagem de dados dinâmicos

Template

Web Compiler

Recupera

Page 31: DC - UFC Copyright © 2003 Misael Santos e Rossana Andrade 1 Padrões de Projeto para Sistemas Web Misael Santos e Rossana Andrade misael@lia.ufc.br Universidade.

Copyright © 2003 Misael Santos e Rossana Andrade 31DC - UFC DC - UFC

Web CompilerCliente Web : Componente Web : Web Compiler template.txt :

Template

request

executar()

leitura

processar()resposta

resposta

Page 32: DC - UFC Copyright © 2003 Misael Santos e Rossana Andrade 1 Padrões de Projeto para Sistemas Web Misael Santos e Rossana Andrade misael@lia.ufc.br Universidade.

Copyright © 2003 Misael Santos e Rossana Andrade 32DC - UFC DC - UFC

Web Compiler Consequências

– Separação completa entre o código de apresentação e o de processamento.

– Visualização do Layout independente da execução do sistema.

– Alterações no Layout não implicam em recompilação.

– Um pequeno atraso no processamento da requisição.

Page 33: DC - UFC Copyright © 2003 Misael Santos e Rossana Andrade 1 Padrões de Projeto para Sistemas Web Misael Santos e Rossana Andrade misael@lia.ufc.br Universidade.

Copyright © 2003 Misael Santos e Rossana Andrade 33DC - UFC DC - UFC

Web Compiler Usos Conhecidos

– FreeMarker– WebMacro– Velocity– API do CESAR.

Page 34: DC - UFC Copyright © 2003 Misael Santos e Rossana Andrade 1 Padrões de Projeto para Sistemas Web Misael Santos e Rossana Andrade misael@lia.ufc.br Universidade.

Copyright © 2003 Misael Santos e Rossana Andrade 34DC - UFC DC - UFC

Web Compiler Padrões Relacionados

– Skin

Page 35: DC - UFC Copyright © 2003 Misael Santos e Rossana Andrade 1 Padrões de Projeto para Sistemas Web Misael Santos e Rossana Andrade misael@lia.ufc.br Universidade.

Copyright © 2003 Misael Santos e Rossana Andrade 35DC - UFC DC - UFC

Agenda Introdução

– Servlets Padrões

– Web Interceptor– Web Handlers– Web Compiler– Super Component

Referências

Page 36: DC - UFC Copyright © 2003 Misael Santos e Rossana Andrade 1 Padrões de Projeto para Sistemas Web Misael Santos e Rossana Andrade misael@lia.ufc.br Universidade.

Copyright © 2003 Misael Santos e Rossana Andrade 36DC - UFC DC - UFC

Super Component Contexto:

– Ciclo de vida bem definido:Inicialização, serviço e destruição- ex: Servlets, JSPs, Web Handlers.

Page 37: DC - UFC Copyright © 2003 Misael Santos e Rossana Andrade 1 Padrões de Projeto para Sistemas Web Misael Santos e Rossana Andrade misael@lia.ufc.br Universidade.

Copyright © 2003 Misael Santos e Rossana Andrade 37DC - UFC DC - UFC

Super Component Contexto:

– inicialização: conexões com bancos de dados; abertura e leitura de arquivos; criação ou instanciação de objetos;

– destruição liberação dos recursos alocados durante a

inicialização.

Page 38: DC - UFC Copyright © 2003 Misael Santos e Rossana Andrade 1 Padrões de Projeto para Sistemas Web Misael Santos e Rossana Andrade misael@lia.ufc.br Universidade.

Copyright © 2003 Misael Santos e Rossana Andrade 38DC - UFC DC - UFC

Super Component Problema:

– Como evitar a duplicação de código de inicialização e destruição nos diversos componentes Web de um sistema?

Page 39: DC - UFC Copyright © 2003 Misael Santos e Rossana Andrade 1 Padrões de Projeto para Sistemas Web Misael Santos e Rossana Andrade misael@lia.ufc.br Universidade.

Copyright © 2003 Misael Santos e Rossana Andrade 39DC - UFC DC - UFC

Super Component Solução:

SuperComponent

init () destroy ()

Component

service ()

Page 40: DC - UFC Copyright © 2003 Misael Santos e Rossana Andrade 1 Padrões de Projeto para Sistemas Web Misael Santos e Rossana Andrade misael@lia.ufc.br Universidade.

Copyright © 2003 Misael Santos e Rossana Andrade 40DC - UFC DC - UFC

Super Component Consequências:

– Código mais limpo.– Evita a duplicação de código.

Page 41: DC - UFC Copyright © 2003 Misael Santos e Rossana Andrade 1 Padrões de Projeto para Sistemas Web Misael Santos e Rossana Andrade misael@lia.ufc.br Universidade.

Copyright © 2003 Misael Santos e Rossana Andrade 41DC - UFC DC - UFC

Super Component Usos Conhecidos

– Sistema Wide: Web Information of Development

– Portal Encontre & Compre: sistema de consultas dos assinantes da Listel.

– FiS (Financial Services): migração J2EE da HiperCard.

– Central de Regulação do SUS: desenvolvido pelo CESAR.

Page 42: DC - UFC Copyright © 2003 Misael Santos e Rossana Andrade 1 Padrões de Projeto para Sistemas Web Misael Santos e Rossana Andrade misael@lia.ufc.br Universidade.

Copyright © 2003 Misael Santos e Rossana Andrade 42DC - UFC DC - UFC

Referências[1] Gibeon Soares de Aquino Júnior, “Desenvolvimento

de Sistemas Web em Java”, Universidade Federal de Pernambuco, 2002.

[2] Andrade, R.M.C, “Capture, Reuse, and Validation of Requirements and Analysis Patterns for Mobile Systems”, University of Ottawa, Ottawa, Canadá, 2001.

[3] Deepak Alur, John Crupi and Dan Malks “Core J2EE Patterns Best Practices and Design Strategies”. Prentice Hall, March 2001.

[4] Erich Gamma, Richard Helm, Ralph Johnson and John Vlissides. “Design Patterns Elements of Reusable Object Oriented Software”. Addison Wesley, 1994.