DC - UFC Copyright © 2003 Misael Santos e Rossana Andrade 1 Padrões de Projeto para Sistemas Web...
-
Upload
geovane-julio-cesar-fagundes-sanches -
Category
Documents
-
view
229 -
download
1
Transcript of DC - UFC Copyright © 2003 Misael Santos e Rossana Andrade 1 Padrões de Projeto para Sistemas Web...
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
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
Copyright © 2003 Misael Santos e Rossana Andrade 3DC - UFC DC - UFC
Servlets
http://www.ufc.br
Cliente
Servidor Web
Web Container
Servlet
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
Copyright © 2003 Misael Santos e Rossana Andrade 5DC - UFC DC - UFC
Servlets Ciclo de Vida
– Inicialização– Serviço– Finalização
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()
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
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>>
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?
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>>
Copyright © 2003 Misael Santos e Rossana Andrade 11DC - UFC DC - UFC
Web InterceptorCliente Web InterceptorMain
ComponenteCredito
ComponenteDebito
ComponenteTransferencia
<<redirect>>
<<submit>>
<<redirect>><<redirect>>
Interceptor1 Interceptor2
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
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
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.
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.
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
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
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...
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.
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
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
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
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
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.
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.
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
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);...
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
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?
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
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
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.
Copyright © 2003 Misael Santos e Rossana Andrade 33DC - UFC DC - UFC
Web Compiler Usos Conhecidos
– FreeMarker– WebMacro– Velocity– API do CESAR.
Copyright © 2003 Misael Santos e Rossana Andrade 34DC - UFC DC - UFC
Web Compiler Padrões Relacionados
– Skin
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
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.
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.
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?
Copyright © 2003 Misael Santos e Rossana Andrade 39DC - UFC DC - UFC
Super Component Solução:
SuperComponent
init () destroy ()
Component
service ()
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.
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.
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.