Post on 09-Jan-2016
description
Tópicos Avançados em Sistemas Distribuídos
Divisão em Camadas e Servidores de Aplicação
Desenvolvimento em Camadas Divisões lógicas de um programa
Lógica de Apresentação Interação usuário x aplicativo Apresentação das informações
Lógica de Negócio Regras que governam o processo de negócio
Lógica de Acesso a Dados Funcionalidades de acesso a dados e persistência
Desenvolvimento em Camadas Monolítico
Banco de
dados
Código Monolítico
Desenvolvimento em Camadas 2 Camadas físicas
Banco de
dados
Cenário de 2 camadas físicas
Lógica de
Acesso a Dados
Desenvolvimento em Camadas 2 Camadas físicas Problemas do modelo
Cliente com lógica de negócio Necessidade do cliente saber detalhes da
localização das fontes de dados Clientes gordos Atualizações individuais Suporte ao desenvolvimento WEB
Desenvolvimento em Camadas 3 Camadas físicas
Banco de
dados
Cenário de 3 camadas físicas
Lógica de
Acesso a Dados
Lógica de
Negócio
Lógica de
Apresentação
Desenvolvimento em Camadas 3 Camadas físicas Vantagens
Independência entre camadas Divisão de trabalho Facilidade na atualização Proteção do código Transparência no acesso a dados Maior portabilidade
Desenvolvimento em CamadasModularidade Divisão independente das camadas, baseada
na reunião de conceitos interligados Funções - > Classes -> Pacotes -> Componentes
Orientação Objetos Encapsulamento, interfaces, classes e pacotes;
Componentes Containers
Comunicação, persistência, etc Componentes distribuídos Interface
Desenvolvimento em Camadas Camadas Físicas e Componentes
Banco de
dados
Lógica de Acesso a
Dados
Lógica de Negócio
Lógica de Apresenta
ção
Servidores de Aplicação Software que disponibiliza uma ambiente para
instalação e execução de certas aplicações, fornecendo uma infra-estruturas para seu funcionamento
Funcionalidades comuns a diversas aplicações Segurança Persistência Balanceamento de carga
Vantagens Integração de dados e código Configuração centralizada Segurança Desempenho Suporte a transações
Servidores de Aplicação Framework .NET
Microsoft Desenvolvimento Multi-linguagem Asp .NET, Windows Mobile, ADO .NET, LINQ
Plataformas J2EE SUN Java J2SE, J2ME, JSF, Servlet, JDBC, etc Jboss, GlassFish, Tomcat, WebSphere, etc.
J2EE Padrão dinâmico para a produção de aplicativos
corporativos escaláveis e altamente disponíveis Define os serviços a serem fornecidos JSR 58 Exige padrões abertos de construção:
J2SE Componentes de interface web Componentes para encapsular processos corporativos Acesso a dados em repositórios de dados corporativos Conectividade com outras fontes de dados e sistemas
legados Suporte a XML, linguagem do comércio eletrônico B2B
J2EE – Componentes e Contêineres Containers
Fornecem um ambiente em tempo de execução para os componentes
J2SE APIs
Comunicação entre componentes Persistência Descoberta de serviços
Implementados pelos fornecedores de servidores de aplicação
Há um container para cada tipo de componente Contêiner de applet Contêiner de clientes de aplicativo Contêiner Web EJBs
J2EE Componentes que rodam no servidor J2EE
WEB EJB
Contêineres J2EE
J2EE – Serviços Padrão Conectividade
Objetos distribuídos Java RMI e Corba
Internet Http e https
Serviços de diretório Serviços de atribuição de nome
Registro e descoberta de componentes Java Naming and Directory Interface
Acesso a dados e persistência API Java Database Connection (JDBC) Fornece uma interface a nível de aplicativo para acesso
ao banco de dados E interface para construção de drivers para bancos de
dados específicos
J2EE – Serviços Padrão Conectividade legada
Java Connector Arquitecture (JNC) Fornece suporte a integração de servidores de
informação corporativas e sistemas legados, como processamento de informações de computadores de grande portes e sistemas ERP (Enterprise Resource Planning).
Pode ser utilizado para criação de novos adaptadores para conectar outros sistemas
Segurança Java Autentication and Authorization Service (JAAS)
Suporte para XML API JAXP para análise de documentos XML
Document Object Model (DOM) Simple API for XML (SAX) eXtensible Stylesheet Language Transformation (XSTL)
J2EE – Serviços Padrão Transações
Java Transaction API (JTA) Fornece serviços de transações para seus componentes Pode ser controlado tanto pela aplicação como pelo
contêiner
Troca de mensagens e e-mail Java Message Service (JMS)
Permite um componente enviar e receber mensagens síncronas e assíncronas, normalmente dentro de um limite organizacional
JavaMail Permite envio de correspondência pela Web e
fornece funcionalidades para recuperar e-mails em depósitos de correspondência
J2EE - Blueprints Conjunto de boas práticas de implementação de
aplicativos J2EE Java Pet Store Sample Application (
http://java.sun.com/reference/blueprints) Promove:
Reutilização de código Particionamento lógico funcional Separação de áreas de alta manutenção Extensibilidade Modularidade Segurança Interface com usuário simples e consistente Integridade dos dados
J2EE – Papéis de desenvolvimento
Provedor de produtos J2EE Empresa que projeta e disponibiliza no mercado uma versão da
plataforma Fornecedores de sistemas operacionais, servidores de aplicação
ou servidores web Provedor de ferramentas
Cria ferramentas usadas para desenvolvimento, montagem ou implantação de componentes
Provedor de componentes de aplicação Desenvolvedor de enterprise bean Desenvolvedor de componentes Web Desenvolvedor de clientes de aplicação J2EE
Montador da aplicação Utiliza os componentes criados pelos provedores para montar
uma aplicação J2EE Utiliza as ferramentas desenvolvidas pelo provedor de
ferramentas
J2EE – Camadas Físicas e Componentes J2EE facilita o desenvolvimento em camadas Foco na camada de apresentação e na
camada de negócio As camadas são construídas utilizando
diversos componentes, os quais devem possui um fraco acoplamento
J2EE – Camadas Físicas e Componentes
Funcionalidade do processo de
pagamento
JSP
EJB contendo funcionalida
des do processo de pagamento
Contêiner EJB
Contêiner JSP
Camada de apresentação
Camada de negócio
Navegador da web
Aplicativo de computador
de mesa
Cliente de comunicação
móvel
J2EE – Componentes Corporativos Vantagens
Maior eficiência Divisão de trabalho agiliza a implementação de novos
aplicativos Pessoas especializadas em cada uma das camadas
Extensibilidade Adição de novas funcionalidades apenas adicionando
novos componentes Independência de linguagem
Divisão em módulos e bibliotecas de integração permite que códigos escritos em diferentes linguagens se comuniquem
Corba e COM Bridge Upgrade do sistema
Atualizações internas de um componente não alteram o funcionamento dos demais componentes do sistema
Componentes: Enterprise JavaBeans Fornecem uma maneira conveniente de
encapsular e compartilhar lógica do negócio comum
Tira proveito de serviços fornecidos pelo contêiner EJB
EJB - Cenário Aplicativo de comércio eletrônico. Fluxo da
aplicação:1. Apresentar os produtos ao cliente2. Permitir que um cliente selecione um ou mais
produtos3. Confirmar o pedido e receber detalhes da entrega4. Receber pagamento dos itens5. Entregar seu pedido para seus sistemas de
armazenamento e distribuição6. [opcional] Autenticar o usuário para acessar
informações ou preferências armazenadas anteriormente
7. [opcional] Gerar um relatório dos itens adquiridos por um cliente em particular ou em um dia específico
EJB - Cenário Lógica de negócio espalhada na camada de
usuário Informações sobre produtos e preços podem estar
espalhadas em diversos banco de dados, ou ainda deve ser extraída de um sistema legado
Podem existir processos corporativos extras que precisam ser aplicados durante a criação do catálogo.
Informações sobre preferências dos clientes requerem autenticação e conhecimento do local de armazenamento
Tais problemas podem ser resolvidos com EJBs Fornecem componentes para a lógica do negócio Podem ser descobertos automaticamente
JNDI e RMI Base EJB
Usando um Componente EJB
Cliente
Bean corporativa
Base
Componente
Contêiner EJB
Fábrica
Contêiner Cliente
Banco de Dados
Consulta EJB
Obtém Instância
Chamada a métodosDo negócio
Tipos de Componentes EJB Beans de Sessão
Tipos mais simples e comuns Encapsula um conjunto de funções corporativas comuns Armazena informações relevantes apenas para a sessão
de usuário corrente Pode usar conexões com JDBC ou utilizar um EJBs de
entidade para obter dados persistentes Beans de Entidade
Utilizado para modelar objetos corporativos que possuem dados dinâmicos e que podem ser compartilhados entre vários clientes a qualquer momento
Oferece um interface síncrona através do qual um cliente pode acessar seus dados e sua funcionalidade
Atua como uma representação dinâmica dos dados corporativos, fornecendo métodos para atualizá-los e recuperá-los
Beans de mensagens Oferecem uma interface assíncrona através do
qual os clientes podem interagir com eles Destinada a abrigar lógica de negócio e não dados Acessa dados através de JDBC ou de beans de
entidade É acessado através de mensagens enviadas pelo
cliente a fila de mensagens a qual o beans está associado
J2EE - Camada de Apresentação Trata a interface de comunicação entre o
usuário e lógica de negócio criada com os EJBs
O dispositivo utilizado para exibição da lógica de apresentação pode ser um dispositivo móvel, um aplicativo desktop ou uma página web
J2EE - Componentes Centrados na Web Aplicados na camada de apresentação Fornece serviços para clientes que usam HTTP
como meio de comunicação Navegadores orientados para HTML Dispositivos J2ME conectando-se através de redes
sem fio Desktops utilizando HTTP bruto ou funcionalidade
de soquetes Navegadores WML (Wireless Markup Language),
encontrados em dispositivos móveis compatíveis com WAP
Funcionalidade do processo de
pagamento
JSP ou Servlet
EJBs
Contêiner de EJBs
Contêiner WEB
Camada de apresentação
Camada de negócio
Navegador da webAplicativo
de computador
de mesaCliente de comunicação móvel
Cliente centrado na WEB
Requisição Http
Resposta Http
Contêineres Web Java Server Pages
Combinação de tags JSP que contém código dinâmico (scripts) e marcação estática (HTML)
Código dinâmico é processado no servidor e o resultado é uma página HTML contendo tanto o HTML original como a resultante do processamento
Geração transparente Servlet
Aplicativos Java que rodam em um servidor WEB Inúmeras vantagens sobre scripts CGI
Velocidade, independência de plataforma, API padrão (Servlet), poder (acesso as APIs Java), Suporte
Interage facilmente com outros componentes J2EE
J2EE – A Camada do Cliente Clientes HTML estáticos Clientes HTML dinâmicos Clientes Applet Java Outros clientes HTTP
Exemplo dispositivos WAP com navegador WML
Empacotando e Implantando Arquivos J2EE Um aplicativo J2EE consiste:
Zero ou mais componentes Web empacotados como Web Archives (arquivos WAR)
Zero ou mais componentes EJB empacotados como arquivos EJB-JAR
Zero ou mais componentes clientes empacotados como arquivos JAR
Zero ou mais conectores empacotados como Resource Archives (arquivos RAR)
Todos os componentes são armazenados em um arquivo JAR específico, chamado Enterprise Application Archive (EAR)
Descritores de Implantação Arquivos XML contendo informações sobre a configuração
interna do pacotes Inter-relacionamento Requisitos de ambiente
DD de Aplicativo
DD de Contêiner
Módulos
EJBMódulo
sDa
WebMódulo
sClienteMódulo
sde
Recurso
EJB_JAREJB_JAR
DD
WARWAR
DD
JARJAR
DD
RARRAR
DD