Padrões do Catálogo J2EE. Lincoln Souza Rocha, M.Sc. (lincolnrocha@gmail.com)



Documentos relacionados
Argo Navis J931 - Padrões de Design J2EE. Introdução. Objetivos de aprender padrões J2EE. Conhecer padrões para uso na plataforma J2EE

Tecnologias Web. Padrões de Projeto - Camada de Apresentação

Argo Navis J931 - Padrões de Design J2EE. Versão 2.0 (setembro de 2003) Objetivos

4 - Padrões da Camada de Integração. Introdução

J550 Padrões de Projeto J2EE para Aplicações Web

Sistemas Distribuídos na WEB (Plataformas para Aplicações Distribuídas) Sumário. Java 2 Enterprise Edition. J2EE (Java 2 Enterprise Edition)

3 - Padrões da Camada de Negócios. Introdução. A camada de negócios encapsula a lógica central da aplicação. Considerações de design incluem

Uso de Design Patterns e J2EE: um estudo de caso

UFG - Instituto de Informática

ENTERPRISE JAVABEANS 3. Msc. Daniele Carvalho Oliveira

Padrão J2EE Data Access Object (DAO)

Resumo: Perguntas a fazer ao elaborar um projeto arquitetural

Java 2 Enterprise Edition Uma aplicação J2EE completa

Laboratório EJB e J2EE Uma aplicação completa

Desenvolvimento WEB II. Professora: Kelly de Paula Cunha

PadrãoIX. Módulo II JAVA. Marcio de Carvalho Victorino. Servlets A,L,F,M

Aplicativo web para definição do modelo lógico no projeto de banco de dados relacional

DESENVOLVENDO APLICAÇÃO UTILIZANDO JAVA SERVER FACES

Noções de. Microsoft SQL Server. Microsoft SQL Server

Sistemas Distribuídos

Web Technologies. Tópicos da apresentação

Curso de Aprendizado Industrial Desenvolvedor WEB

3 Um Framework Orientado a Aspectos para Monitoramento e Análise de Processos de Negócio

HIBERNATE EM APLICAÇÃO JAVA WEB

Enterprise Java Beans

Padrões de Interação com o Usuário

Web Services. (Introdução)

UFG - Instituto de Informática

Linguagem de Programação JAVA. Professora Michelle Nery Nomeclaturas

SISTEMAS DISTRIBUIDOS

UNIVERSIDADE. Sistemas Distribuídos

Sistemas Distribuídos. Professora: Ana Paula Couto DCC 064

Framework. Marcos Paulo de Souza Brito João Paulo Raittes

J2EE TM Java 2 Plataform, Enterprise Edition

3 SCS: Sistema de Componentes de Software

Padrões de Projeto WEB e o MVC

World Wide Web e Aplicações

Escola Superior de Tecnologia de Setúbal. Projecto Final

Associação Carioca de Ensino Superior Centro Universitário Carioca

Programação para a Internet. Prof. M.Sc. Sílvio Bacalá Jr sbacala@gmail.com

Considerações no Projeto de Sistemas Cliente/Servidor

UFG - Instituto de Informática


Padrões Arquiteturais e de Integração - Parte 1

4. Qual seria o impacto da escolha de uma chave que possua letras repetidas em uma cifra de transposição?

MVC e Camadas - Fragmental Bliki

Desenvolvimento de aplicação web com framework JavaServer Faces e Hibernate

Desenvolvimento de Sistemas Orientados a Objetos com UML UP/RUP: Projeto

MODELO CLIENTE SERVIDOR

Conteúdo. Disciplina: INF Engenharia de Software. Monalessa Perini Barcellos. Centro Tecnológico. Universidade Federal do Espírito Santo

Sistemas Distribuídos

? O SQL SERVER é um sistema de gerenciamento de banco de dados relacional que foi desenvolvido inicialmente pela Microsoft em parceria com a Sybase.

gerenciamento de portais e websites corporativos interface simples e amigável, ágil e funcional não dependendo mais de um profissional especializado

Sistemas Distribuídos. Professora: Ana Paula Couto DCC 064

Front-End: corresponde ao que será visualizado pelo utilizador via web. Deve ser acessível para todo e qualquer utilizador.

Kassius Vargas Prestes

18/04/2006 Micropagamento F2b Web Services Web rev 00

3. Explique o motivo pelo qual os protocolos UDP e TCP acrescentam a informação das portas (TSAP) de origem e de destino em seu cabeçalho.

Programação para Web Artefato 01. AT5 Conceitos da Internet

Enterprise Java Bean. Enterprise JavaBeans

Desenvolvimento de aplicações web com JSP

Laboratório de ENGSOF Estudo de Caso. Prof. André Pereira, MSC, PMP

Arquiteturas de Aplicações Web. Leonardo Gresta Paulino Murta

Adriano Reine Bueno Rafael Barros Silva

SCE-557. Técnicas de Programação para WEB. Rodrigo Fernandes de Mello

UFG - Instituto de Informática

Sistemas Distribuídos Capítulos 3 e 4 - Aula 4

Sistemas Distribuídos

Histórico de revisões

1

Arquitetura de Aplicações JSP/Web. Padrão Arquitetural MVC

Fundamentos da Plataforma Java EE. Prof. Fellipe Aleixo

ABORDAGEM DE FRAMEWORKS PARA JSF QUE AUXILIAM O DESENVOLVIMENTO DE SOFTWARE

Documento de Análise e Projeto VideoSystem

TDC2012. EJB simples e descomplicado, na prática. Slide 1

Bancos de dados distribuídos Prof. Tiago Eugenio de Melo

Curso - Padrões de Projeto Módulo 5: Model-View- Controller

Serviços Web: Introdução

Arquitetura JEE Introdução à Camada de Negócios: Enterprise Java Beans (EJB) Marcos Kalinowski

Intranets. FERNANDO ALBUQUERQUE Departamento de Ciência da Computação Universidade de Brasília 1.INTRODUÇÃO

Wireshark. Captura de Protocolos da camada de aplicação. Maicon de Vargas Pereira

Como criar um EJB. Criando um projeto EJB com um cliente WEB no Eclipse

SISTEMA GERENCIADOR DE BANCO DE DADOS

Testes com Design Patterns

Sistemas Distribuídos Arquitetura de Sistemas Distribuídos I. Prof. MSc. Hugo Souza

Versão /10. Xerox ColorQube 9301/9302/9303 Serviços de Internet

Dado: Fatos conhecidos que podem ser registrados e têm um significado implícito. Banco de Dados:

UTILIZAÇÃO DA TECNOLOGIA ENTERPRISE JAVABEANS NO DESENVOLVIMENTO DE APLICAÇÕES DISTRÍBUIDAS

Java para Desenvolvimento Web

Engenharia de Software III

Projeto Demoiselle. Para perguntas e respostas, utilizem a lista de discussões de usuários da comunidade: demoiselle-users@lists.sourceforge.

Aula 03-04: Modelos de Sistemas Distribuídos

PROGRAMAÇÃO SERVIDOR PADRÕES MVC E DAO EM SISTEMAS WEB. Prof. Dr. Daniel Caetano

Java II. Sérgio Luiz Ruivace Cerqueira

Conceitos de Banco de Dados

Transcrição:

Padrões do Catálogo J2EE Lincoln Souza Rocha, M.Sc. (lincolnrocha@gmail.com)

Livros Deepak Alur, John Crupi e Dan Malks. Core J2EE Patters: Best Practices and Design Strategies, Second Edition (2003). Ed. Prentice Hall PTR Bill Dudney, Stephen Asbury, Joseph K. Krozak e Kevin Wittkopf. J2EE AntiPatterns (2003). Ed. Wiley Publishing 2

Sites Web The J2EE 1.4 Tutorial (http://java.sun.com/j2ee/1.4/download.html#tutorial) Argo Navis Curso de Padrões de Design J2EE (J931) (www.argonavis.com) OBS: Os slides do curso J931 de Helder L. S da Rocha foram utilizados na confecção desse material 3

Parte I 4

O que é J2EE? Arquitetura e Componentes J2EE Containers J2EE 5

Acrônimo de Java 2 Enterprise Edition Uma plataforma da Sun Microsystems para desenvolvimento de aplicações empresariais distribuídas e multicamada É fundamentada no Java 2 Standard Edition (J2SE) 6

Visão Geral 7

Camada Cliente Clientes Web (thin client) (1) Web Pages Dinâmicas: que são geradas por componentes que executam na camada web (2) Web Browser: que exibem as páginas recebidas do servidor Usualmente não fazem consultas à banco de dados, não executam regras de negócios complexas ou se conectam à aplicações legadas 8

Camada Cliente (cont.) Applets É uma pequena aplicação Java que executa na JVM instalada no Web Browser Contudo, sistemas clientes provavelmente irão precisar do Java Plugin e, possivelmente, de um arquivo de política de segurança para poder executar o applet no Web Browser 9

Camada Cliente (cont.) Aplicações Clientes (application clients) Executam na máquina cliente provendo um interface para que os usuários executem suas tarefas remotamente (rich client) Tipicamente possuem interfaces gráficas (GUI) feitas em Swing ou Abstract Window Toolkit (AWT) API, mas interfaces via linha de comando também são possíveis 10

Servidor J2EE 11

Servidor J2EE - Camada Web 12

Servidor J2EE - Camada Web (cont.) Os componentes web são criados usando a tecnologia JSP (Java Server Pages) Servlets são classes criadas programaticamente e que dinamicamente processam requisições e constrem uma resposta Páginas JSP são documentos text-based que executam como servlets mas com uma abordagem mais natural para criar conteúdo estático 13

Servidor J2EE - Camada de Negócio 14

Servidor J2EE - Camada de Negócio (cont.) A camada de negócio é responsável por implementar, via enterprise beans, a lógica de negócio da aplicação referente à um domínio de negócio particular (e.g., bancário, varejo e Financeiro) Existem três tipos de Enterprise Beans Session Beans, Entity Beans e Message-driven Beans 15

Servidor J2EE - Camada de Negócio (cont.) Session Beans: representam a comunicação transiente com o cliente. Quando o cliente finaliza a execução, o session bean e seus dados também são removidos da memória 16

Servidor J2EE - Camada de Negócio (cont.) Entity Beans: representam os dados persistentes armazenados em uma tabela do banco de dados. Se o cliente terminar a comunicação ou se o servido for reiniciado o servidor garante que os dados do entity bean é salvo 17

Servidor J2EE - Camada de Negócio (cont.) Menssage-driven Beans: combina características de session beans e Java Message Service (JMS) message listener, o que permite que este receba mensagens JMS assincronamente 18

Camada de Sistema de Informação (EIS) O EIS representa a parte de software e hardware da empresa e inclui sistema de infra estrutura, servidor de processamento de transações, banco de dados e sistemas de informação legados 19

Containers: O que são e para que servem? São a interface entre os componentes J2EE e as funcionalidades de baixo nível da plataforma especifica que suporta o componente Funcionam como um middleware abstraindo a arquitetura de hardware e software subjacente A rigor existem quatro tipos de containers J2EE: Web container, EJB container, Application client container e Applet container 20

Tipos de Container J2EE 21

Tipos de Container J2EE (cont.) Web container Gerencia a execução de páginas JSP e servlets de aplicações J2EE. Web containers executam dentro do servidor J2EE EJB container Gerencia a execução de enterprise beans de aplicações J2EE. EJB containers executam dentro do servidor J2EE 22

Tipos de Container J2EE (cont.) Application client container Gerencia a execução de componentes da aplicação cliente. Tanto a aplicação como o container executam na máquina cliente Applet container Gerencia a execução de applets. É formado basicamente por um Web Browser e o Java Plugin que executam juntos na máquina cliente 23

Parte II 24

Procedimentos recomendados para desenvolver aplicações J2EE. Divide as aplicações em camadas Camada cliente: interface do usuário ou de serviços. Tipicamente representa uma aplicação independente ou browser rodando applets ou páginas HTML Camada Web: consiste de servlets e páginas JSP com o objetivo de capturar requisições e processar respostas para a camada cliente 25

Camada EJB: contém toda a lógica da aplicação e representa o modelo de negócio implementado em EJBs Camada de integração: contém lógica de acesso ao EIS Camada de dados (EIS): consiste de sistemas de bancos de dados, transações e outros recursos legados 26

Soluções de design baseadas no J2EE Blueprints Representam soluções consideradas melhores práticas para implementar vários componentes essenciais em cada uma das camadas identificadas pelo J2EE Blueprints Usam e se baseiam em vários padrões GoF 27

São padrões de design e não de implementação (idioms) Podem ser implementados usando tecnologias diferentes (e.g., usando RMI ou CORBA) Objetivos Reduzir o tráfego de rede, aumentando a eficiência e facilitando a escalabilidade Reduzir o acoplamento entre as camadas e os componentes 28

Não existe um só catálogo de padrões Este curso se baseia no catálogo do Sun Java Center (SJC), cujos padrões estão documentados no site da Sun e em livros como Core J2EE Patterns: Best Practices and Design Strategies Os SJC J2EE Patterns são divididos em camadas lógicas que refletem a organização dos J2EE Blueprints 29

O catálogo atual (setembro/2003) define 21 padrões Camada de apresentação: 8 padrões Camada de negócios: 9 padrões Camada de integração: 4 padrões Os nomes dos padrões são significativos 30

Padrões refletem soluções para problemas genéricos descritos em abstrações de alto nível Estratégias mostram formas de implementar os padrões usando tecnologias e linguagens de programação específicas 31

Um padrão geralmente possui diversas diferentes estratégias de implementação Neste curso serão apresentados os padrões e suas principais estratégias recomendadas pelo SJC 32

Intercepting Filter Viabiliza pré- e pós-processamento de requisições Front Controller Oferece um controlador centralizado para gerenciar o processamento de uma requisição Context Object Encapsula estado de forma independente de protocolo para compartilhamento pela aplicação Application Controller Centraliza e modulariza o gerenciamento de Views e de ações 33

View Helper Encapsula lógica não-relacionada à formatação Composite View Cria uma View composta de componentes menores Service To Worker e Dispatcher View Combinam Front Controller com um Dispatcher e Helpers. O primeiro concentra mais tarefas antes de despachar a requisição. O segundo realiza mais processamento depois 34

Business Delegate Desacopla camadas de apresentação e de serviços Service Locator Encapsula lógica de consulta e criação de objetos de serviço Session Facade Oculta complexidade de objetos de negócio e centraliza controle 35

Application Service Centraliza e agrega comportamento para oferecer uma camada de serviços uniforme Business Object Separa dados de negócios e lógica usando modelo de objetos Composite Entity Implementa Business Objects persistentes combinando Entity beans locais e POJOs (Plain Old Java Objects) 36

Transfer Object Antigamente chamado de Value Object ou DTO Reduz tráfego e facilita transferência de dados entre camadas Transfer Object Assembler Antigamente chamado de Value Object Assembler Constrói um Value Object composto de múltiplas fontes Value List Handler Lida com execução de queries, caching de resultados, etc. 37

Data Access Object Abstrai fontes de dados e oferece acesso transparente aos dados Service Activator Facilita o processamento assíncrono para componentes EJB Domain Store Oferece um mecanismo transparente de persistência para objetos de negócio Web Service Broker Expõe um ou mais serviços usando XML e protocolos Web 38

39

Procure no catálogo um padrão que realize o objetivo desejado Tabela de padrões Roadmap Roadmap associa intenção com padrões "Se você procura por isto... use os padrões tais" Consulte o padrão desejado e analise Analise o problema que ele resolve Analise a solução que ele propõe Escolha uma estratégia e implemente 40

Padrões se encaixam bem quando é necessário alterar uma arquitetura para melhorar algum aspecto de um sistema Performance Escalabilidade Reuso e manutenção A maior parte dos padrões foram construídos visando esse tipo de evolução 41

Parte III 42

Introdução Front Controller 43

A camada de apresentação encapsula toda a lógica relacionada com a visualização e comunicação com a GUI Requisições e respostas HTTP Gerenciamento de sessão HTTP Geração de HTML, JavaScript e recursos lado-cliente Principais componentes: Servlets e JSP JSP é indicado para produzir interface do usuário Servlets são indicados para processar dados recebidos e concentrar lógica de controle 44

45

Objetivo Centralizar o processamento de requisições em uma única fachada. Front Controller permite criar uma interface genérica para processamento de comandos 46

Problema 47

Descrição do problema Deseja-se um ponto de acesso centralizado para processamento de todas as requisições recebidas pela camada de apresentação para Controlar a navegação entre os Views Remover duplicação de código Estabelecer responsabilidades mais definidas para cada objeto, facilitando manutenção e extensão: JSP não deve conter código algum ou pelo menos não código de controle 48

Descrição do problema (cont.) Se um usuário acessa um View sem passar por um mecanismo centralizado, código de controle é duplicado e misturado ao código de apresentação Também não é possível controlar a navegação: cliente pode iniciar em página que não deveria ter acesso 49

O que se deseja? (Forças) Evitar a duplicação de lógica de controle Aplicar lógica comum para múltiplas requisições Separar a lógica de processamento do sistema da View Centralizar o controle de pontos de acesso do sistema 50

Solução 51

Descrição da solução Controlador é ponto de acesso para processamento de requisições Chama serviços de segurança (autenticação e autorização) Delega processamento à camadas de negócio Define um View apropriado Realiza tratamento de erros Define estratégias de geração de conteúdo 52

Descrição da solução (cont.) O controlador pode delegar processamento a objetos Helper (Comandos ou ações, Value Beans, etc.) Solução depende do uso de um Application Controller Usado para redirecionar para o View correspondente 53

Processamento de uma requisição Envolve dois tipos de atividades Manuseio da requisição Processamento do View Durante o manuseio da requisição, é preciso realizar diversas atividades: Manuseio de protocolo e transformação de contexto Navegação e roteamento Processamento do serviço Repasse da requisição 54

Diagrama de classes FrontController: ponto de entrada para manuseio de requisições ApplicationController: gerencia de ações e views Command: encapsula uma ação específica para requisição View: representa a página retornada ao cliente 55

56

Estratégias de implementação Servlet Front Strategy Implementa o controlador como um servlet Command and Controller Strategy Interface baseada no padrão Command (GoF) para implementar Helpers para os quais o controlador delega responsabilidades via Application Controller Esta é a estratégia mais comum Logical Resource Mapping Strategy Requisições são feitas para nomes que são mapeados a recursos (páginas JSP, servlets) ou comandos (web.xml) Multiplexed Resource Mapping Strategy usa wildcards para selecionar recursos a serem processados: *.do 57

Conseqüências Controle centralizado Facilidade de rastrear e logar requisições Melhor gerenciamento de segurança Requer menos recursos. Não é preciso distribuir pontos de verificação em todas as páginas Validação é simplificada Melhor possibilidade de reuso Distribui melhor as responsabilidades 58

Padrões relacionados J2EE Patterns Intercepting Filter Application Controller View Helper Dispatcher View and Service to Worker 59

Parte IV 60

Introdução Transfer Object 61

A camada de negócios encapsula a lógica central da aplicação. Considerações de design incluem Uso de session beans para modelar ações. Stateless para operações de um único método. Stateful para operações que requerem mais de um método (que retém estado entre chamadas) Uso de session beans como fachadas à camada de negócios 62

Uso de entity beans para modelar dados persistentes como objetos distribuídos Uso de entity beans para implementar lógica de negócio e relacionamentos Eventos e operações assíncronas com messagedriven beans Cache de referências para EJBs em Business Delegates 63

64

Objetivo Reduzir a quantidade de requisições necessárias para recuperar um objeto. Transfer Object permite encapsular em um objeto um subconjunto de dados utilizável pelo cliente e utilizar apenas uma requisição para transferi-lo 65

Problema 66

Descrição do problema Cliente precisa obter diversos dados de um Business Object Para obter os dados, é preciso realizar diversas chamadas ao componente As chamadas são potencialmente remotas Fazer múltiplas chamadas através da rede gera tráfego e reduz o desempenho da aplicação 67

Solução 68

Descrição da solução Uma única chamada remota é necessária para transferir o Transfer Object O cliente pode extrair as informações de interesse através de chamadas locais Cópia do cliente pode ficar desatualizada Transfer Object é solução indicada para dados read-only ou informações que não são alteradas com freqüência, ou ainda, quando as alterações não são críticas (não afetam o processo) Objeto alterado pode ser enviado de volta ao servidor 69

Diagrama de classes Client: geralmente um componente de outra camada. Component: qualquer componente de outra camada que o cliente usa para enviar e receber dados. TransferObject: é um POJO (Plain Old Java Object) serializável que contém atributos suficientes para agregar e carregar todos os dados 70

71

Estratégias de implementação Updatable Transfer Objects Strategy Permite a transferência de um objeto para o cliente, a alteração do objeto pelo cliente e sua devolução ao servidor Multiple Transfer Objects Strategy Permite a criação de Transfer Objects diferentes a partir de uma mesma fonte 72

Estratégias de implementação (cont.) Entity Inherits Transfer Object Strategy Entity Bean herda de uma classe de Transfer Object Transfer Object Factory Strategy Suporta a criação dinâmica de Transfer Objects 73

Conseqüências Simplifica Entity Bean e interface remota Transfere mais dados em menos chamadas Reduz tráfego de rede Reduz duplicação de código Pode introduzir objetos obsoletos Pode aumentar a complexidade do sistema Sincronização Controle de versões para objetos serializados 74

Padrões relacionados J2EE Patterns Session Facade Transfer Object Assembler Value List Handler Composite Entity 75

Parte V 76

Introdução Data Access Object 77

A camada de integração encapsula a lógica relacionada com a integração do sistema com a camada de informação distribuída (EIS) É acoplada com a camada de negócios sempre que esta camada precisar de dados ou serviços que residem na camada de recursos (dados) 78

Os componentes nesta camada podem usar tecnologias de acesso aos serviços específicos que isolam (JDBC, JMS, middleware proprietário, etc.) 79

80

Objetivo Abstrair e encapsular todo o acesso a uma fonte de dados. O DAO gerencia a conexão com a fonte de dados para obter e armazenar os dados 81

Problema 82

Descrição do problema Forma de acesso aos dados varia consideravelmente dependendo da fonte de dados usado Banco de dados relacional Arquivos (XML, CSV, texto, formatos proprietários) LDAP 83

Descrição do problema (cont.) Persistência de objetos depende de integração com fonte de dados (ex: business objects) Colocar código de persistência (ex: JDBC) diretamente no código do objeto que o utiliza ou do cliente amarra o código desnecessariamente à forma de implementação Ex: difícil passar a persistir objetos em XML, LDAP, etc. 84

Solução 85

Descrição da solução Data Access Object (DAO) oferece uma interface comum de acesso a dados e esconde as características de uma implementação específica Uma API: métodos genéricos para ler e gravar informação Métodos genéricos para concentrar operações mais comuns(simplificar a interface de acesso) 86

Descrição da solução (cont.) DAO define uma interface que pode ser implementada para cada nova fonte de dados usada, viabilizando a substituição de uma implementação por outra DAOs não mantêm estado nem cache de dados 87

Diagrama de classes Client: objeto que requer acesso a dados: Business Object, Session Façade, Application Service, Value List Handler,... DataAccessObject: esconde detalhes da fonte de dados DataSource: implementação da fonte de dados Data: objeto de transferência usado para retornar dados ao cliente. Poderia também ser usado para receber dados. ResultSet: resuldados de uma pesquisa no banco 88

89

Estratégias de implementação Custom DAO Strategy Estratégia básica. Oferece métodos para criar, apagar, atualizar e pesquisar dados em um banco Pode usar Transfer Object para trocar dados com clientes 90

Estratégias de implementação (cont.) DAO Factory Method Strategy Utiliza Factory Methods em uma classe para recuperar todos os DAOs da aplicação DAO Abstract Factory Strategy Permite criar diversas implementações de fábricas diferentes que criam DAOs para diferentes fontes de dados 91

Conseqüências Transparência quanto à fonte de dados Facilita migração para outras implementações Basta implementar um DAO com mesma interface Reduz complexidade do código nos objetos de negócio (ex: Entity Beans BMP) 92

Conseqüências (cont.) Centraliza todo acesso aos dados em camada separada Qualquer componente pode usar os dados (servlets, EJBs) Camada adicional Pode ter pequeno impacto na performance Requer design de hierarquia de classes (Factory) 93

Padrões relacionados J2EE Patterns Transfer Object Transfer Object Assembler Value List Handler GoF Factory Method POSA - 1 Broker 94

Padrões do Catálogo J2EE Lincoln Souza Rocha, M.Sc. (lincolnrocha@gmail.com)