Padrões de Projeto para Sistemas Web - disciplinas.lia.ufc.br · Title: Microsoft PowerPoint -...

21
DC DC - UFC UFC Copyright © 2003 Misael Santos e Rossana Andrade 1 Padrões de Projeto para Sistemas Web Misael Santos e Rossana Andrade [email protected] Universidade Federal do Ceará – Jan/2003 DC DC - UFC UFC Copyright © 2003 Misael Santos e Rossana Andrade 2 Agenda Introdução Servlets Padrões Web Interceptor Web Handlers Web Compiler Super Component Referências

Transcript of Padrões de Projeto para Sistemas Web - disciplinas.lia.ufc.br · Title: Microsoft PowerPoint -...

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

Padrões de Projeto paraSistemas Web

Misael Santos e Rossana [email protected]

Universidade Federal do Ceará – Jan/2003

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

Agenda

� Introdução – Servlets

� Padrões– Web Interceptor– Web Handlers– Web Compiler– Super Component

� Referências

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

Servlets

http://www.ufc.br

Cliente

Servidor Web

Web Container

Servlet

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

Servlets

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

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

Servlets

� Ciclo de Vida– Inicialização– Serviço– Finalização

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

Servlets

Carregadoem memória

EmInicialização

Disponível

Emdestruição

Nãocarregado

service()

new()

init()

destroy()

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

Agenda

� Introdução– Servlets

� Padrões– Web Interceptor– Web Handlers– Web Compiler– Super Component

� Referências

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

Web Interceptor

� Contexto:

Página de Crédito

ComponenteCredito ComponenteDebito

Página de Débito

<<submit>><<submit>>

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

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?

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

Web Interceptor

Página de Crédito

Interceptor

ComponenteCredito ComponenteDebito

Página de Débito

<<submit>><<submit>>

<<redirect>><<redirect>>

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

Web InterceptorCliente Web InterceptorMain

ComponenteCredito

ComponenteDebito

ComponenteTransferencia

<<redirect>>

<<submit>>

<<redirect>><<redirect>>

Interceptor1 Interceptor2

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

Web Interceptor

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

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

Web Interceptor

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

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

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

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.

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

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.

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

Agenda

� Introdução – Servlets

� Padrões– Web Interceptor– Web Handlers– Web Compiler– Super Component

� Referências

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

Web Handlers

� Contexto

Página de Login

Menu deMovimentações

Página deCrédito

Página deDébito

Links estáticosde HTML

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

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...

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

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.

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

Web Handlers

� Solução:– Handlers de Apresentação– Handlers de Processamento– Controlador de Handlers

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

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

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

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

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

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

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

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.

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

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.

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

Agenda

� Introdução– Servlets

� Padrões– Web Interceptor– Web Handlers– Web Compiler– Super Component

� Referências

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

Web Compiler

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

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

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

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

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

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?

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

Web Compiler

� Solução:

Regras de Negócio

ComponenteWeb

Passagem de dados dinâmicos

Template

Web Compiler

Recupera

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

Web Compiler

Cliente Web : Componente Web : Web Compilertemplate.txt :

Template

request

executar()

leitura

processar()

resposta

resposta

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

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.

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

Web Compiler

� Usos Conhecidos– FreeMarker– WebMacro– Velocity– API do CESAR.

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

Web Compiler

� Padrões Relacionados– Skin

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

Agenda

� Introdução– Servlets

� Padrões– Web Interceptor– Web Handlers– Web Compiler– Super Component

� Referências

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

Super Component

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

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

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.

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

Super Component

� Problema:– Como evitar a duplicação de código de

inicialização e destruição nos diversos componentes Web de um sistema?

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

Super Component

� Solução:SuperComponent

init ()destroy ()

Component

service ()

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

Super Component

� Consequências:– Código mais limpo.– Evita a duplicação de código.

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

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.

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

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.