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

Post on 07-Apr-2016

224 views 1 download

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 Andrademisael@lia.ufc.br

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.