360 likes | 467 Views
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
E N D
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 Código Monolítico Lógica de Apresentação Lógica de Negócios Lógica de Acesso a Dados Banco de dados
Desenvolvimento em Camadas 2 Camadas físicas Cenário de 2 camadas físicas Lógica de Apresentação Lógica de Negócios Lógica de Acesso a Dados Banco de 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 Cenário de 3 camadas físicas Lógica de Apresentação Lógica de Negócio Lógica de Acesso a Dados Banco de dados
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 Lógica de Apresentação Lógica de Negócio Lógica de Acesso a Dados Banco de dados
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
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 NamingandDirectory 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 ConnectorArquitecture (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 ResourcePlanning). • Pode ser utilizado para criação de novos adaptadores para conectar outros sistemas • Segurança • Java AutenticationandAuthorizationService (JAAS) • Suporte para XML • API JAXP para análise de documentos XML • DocumentObjectModel (DOM) • Simple API for XML (SAX) • eXtensibleStylesheetLanguageTransformation (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 StoreSample 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 Navegador da web Contêiner JSP Camada de apresentação JSP Aplicativo de computador de mesa Funcionalidade do processo de pagamento Contêiner EJB Camada de negócio Cliente de comunicação móvel EJB contendo funcionalidades do processo de pagamento
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: • Apresentar os produtos ao cliente • Permitir que um cliente selecione um ou mais produtos • Confirmar o pedido e receber detalhes da entrega • Receber pagamento dos itens • Entregar seu pedido para seus sistemas de armazenamento e distribuição • [opcional] Autenticar o usuário para acessar informações ou preferências armazenadas anteriormente • [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 Contêiner EJB Contêiner Cliente Componente Cliente Chamada a métodos Do negócio Bean corporativa Obtém Instância Base Consulta EJB Banco de Dados Fábrica
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
Cliente centrado na WEB Requisição Http Contêiner WEB Camada de apresentação Navegador da web JSP ou Servlet Aplicativo de computador de mesa Resposta Http Cliente de comunicação móvel Funcionalidade do processo de pagamento Contêiner de EJBs Camada de negócio EJBs
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 ResourceArchives (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 EJB_JAR DD de Contêiner DD Módulos EJB WAR DD Módulos Da Web JAR Módulos Cliente DD Módulos de Recurso RAR DD