tópicos avançados em sistemas distribuídos divisão em camadas e servidores de aplicação

36
Tópicos Avançados em Sistemas Distribuídos Divisão em Camadas e Servidores de Aplicação

Upload: internet

Post on 19-Apr-2015

106 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Tópicos Avançados em Sistemas Distribuídos Divisão em Camadas e Servidores de Aplicação

Tópicos Avançados em Sistemas Distribuídos

Divisão em Camadas e Servidores de Aplicação

Page 2: 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

Page 3: Tópicos Avançados em Sistemas Distribuídos Divisão em Camadas e Servidores de Aplicação

Desenvolvimento em Camadas Monolítico

Banco de

dados

Código Monolítico

Page 4: Tópicos Avançados em Sistemas Distribuídos Divisão em Camadas e Servidores de Aplicação

Desenvolvimento em Camadas 2 Camadas físicas

Banco de

dados

Cenário de 2 camadas físicas

Lógica de

Acesso a Dados

Page 5: Tópicos Avançados em Sistemas Distribuídos Divisão em Camadas e Servidores de Aplicação

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

Page 6: Tópicos Avançados em Sistemas Distribuídos Divisão em Camadas e Servidores de Aplicação

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

Page 7: Tópicos Avançados em Sistemas Distribuídos Divisão em Camadas e Servidores de Aplicaçã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

Page 8: Tópicos Avançados em Sistemas Distribuídos Divisão em Camadas e Servidores de Aplicação

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

Page 9: Tópicos Avançados em Sistemas Distribuídos Divisão em Camadas e Servidores de Aplicação

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

Page 10: Tópicos Avançados em Sistemas Distribuídos Divisão em Camadas e Servidores de Aplicaçã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

Page 11: Tópicos Avançados em Sistemas Distribuídos Divisão em Camadas e Servidores de Aplicação

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.

Page 12: Tópicos Avançados em Sistemas Distribuídos Divisão em Camadas e Servidores de Aplicação

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

Page 13: Tópicos Avançados em Sistemas Distribuídos Divisão em Camadas e Servidores de Aplicação

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

Page 14: Tópicos Avançados em Sistemas Distribuídos Divisão em Camadas e Servidores de Aplicação

J2EE Componentes que rodam no servidor J2EE

WEB EJB

Page 15: Tópicos Avançados em Sistemas Distribuídos Divisão em Camadas e Servidores de Aplicação

Contêineres J2EE

Page 16: Tópicos Avançados em Sistemas Distribuídos Divisão em Camadas e Servidores de Aplicação

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

Page 17: Tópicos Avançados em Sistemas Distribuídos Divisão em Camadas e Servidores de Aplicação

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)

Page 18: Tópicos Avançados em Sistemas Distribuídos Divisão em Camadas e Servidores de Aplicação

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

Page 19: Tópicos Avançados em Sistemas Distribuídos Divisão em Camadas e Servidores de Aplicação

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

Page 20: Tópicos Avançados em Sistemas Distribuídos Divisão em Camadas e Servidores de Aplicação

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

Page 21: Tópicos Avançados em Sistemas Distribuídos Divisão em Camadas e Servidores de Aplicação

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

Page 22: Tópicos Avançados em Sistemas Distribuídos Divisão em Camadas e Servidores de Aplicação

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

Page 23: Tópicos Avançados em Sistemas Distribuídos Divisão em Camadas e Servidores de Aplicação

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

Page 24: Tópicos Avançados em Sistemas Distribuídos Divisão em Camadas e Servidores de Aplicação

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

Page 25: Tópicos Avançados em Sistemas Distribuídos Divisão em Camadas e Servidores de Aplicação

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

Page 26: Tópicos Avançados em Sistemas Distribuídos Divisão em Camadas e Servidores de Aplicação

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

Page 27: Tópicos Avançados em Sistemas Distribuídos Divisão em Camadas e Servidores de Aplicação

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

Page 28: Tópicos Avançados em Sistemas Distribuídos Divisão em Camadas e Servidores de Aplicação

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

Page 29: Tópicos Avançados em Sistemas Distribuídos Divisão em Camadas e Servidores de Aplicação

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

Page 30: Tópicos Avançados em Sistemas Distribuídos Divisão em Camadas e Servidores de Aplicação

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

Page 31: Tópicos Avançados em Sistemas Distribuídos Divisão em Camadas e Servidores de Aplicação

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

Page 32: Tópicos Avançados em Sistemas Distribuídos Divisão em Camadas e Servidores de Aplicação

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

Page 33: Tópicos Avançados em Sistemas Distribuídos Divisão em Camadas e Servidores de Aplicação

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

Page 34: Tópicos Avançados em Sistemas Distribuídos Divisão em Camadas e Servidores de Aplicação

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

Page 35: Tópicos Avançados em Sistemas Distribuídos Divisão em Camadas e Servidores de Aplicação

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

Page 36: Tópicos Avançados em Sistemas Distribuídos Divisão em Camadas e Servidores de Aplicação

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