Escolar Documentos
Profissional Documentos
Cultura Documentos
Agosto, 2008
Desacoplamento
Nas aplicações monolíticas, a lógica de negócios, apresentação e controle
estão normalmente interligadas, apresentando um alto acoplamento. Isto
normalmente se torna um problema desde que alterações em um
componente impactam em muitos outros, necessitando que sejam feitas
validações de grandes partes do sistema mesmo para pequenas alterações.
Outro efeito desse alto acoplamento é a dificuldade de se reutilizar o código.
Distribuição do processamento
As aplicações empresariais normalmente necessitam ter seu processamento
distribuído entre vários hardwares, seja por necessidade de escalonar o
processamento ou pela distribuição geográfica.
No entanto o processamento distribuído introduz complexidade no
desenvolvimento de sistemas. Os middlewares permitem que os sistemas
sejam desenvolvidos sem que o desenvolvedor necessite se preocupar com
os detalhes como localização e sincronização do acesso aos recursos,
comunicação, protocolos envolvidos, etc.
Componentização
O desenvolvimento em multicamadas é feito pela construção de
componentes de software.
Camadas
De uma forma geral podemos dividir um aplicativo em 6 camadas:
Camada de integração
Permite conectar a aplicação a outros sistemas. Ela permite a integração
com sistemas legados, banco de dados, outros sistemas que necessitam
participar da lógica de negócios, ou mesmo com partes do aplicativo
separados por grandes distâncias geográficas.
Plataforma JEE
A plataforma Java Enterprise Edition é a plataforma Java para o
desenvolvimento de aplicações empresariais utilizando a arquitetura de
multicamadas. O JEE corresponde ao JSE para aplicações empresariais.
1
Em JEE um aplicativo consiste de componentes que interagem entre si e
são gerenciados por um servidor de aplicativo.
1
O JSE (Java Standard Edition) é a plataforma para desenvolvimento de aplicativos
em Java no desktop, os aplicativos desenvolvidos em JSE são normalmente auto-
suficientes e não dependem de uma infra-estrutura externa para que seja
executado. O JSE fornece funcionalidades como acesso a disco, entrada/saída,
bibliotecas básicas, acesso a banco de dados, funções matemáticas e interface
gráfica.
Camada de Apresentação Cliente
A camada de apresentação no cliente pode ser de três tipos: clientes web,
applets e aplicativos clientes.
Clientes Web
Um cliente web é composto de duas partes:
Aplicativo cliente
Um aplicativo cliente roda em uma máquina cliente e fornece uma interface
para o usuário interagir com o sistema. A interface pode ser desde
interfaces gráficas (GUI) sofisticadas até interfaces em linhas de comando.
Além das páginas JSP e servlets, o container web pode fornecer páginas,
imagens e outros recursos estáticos, que não são considerados
componentes web.
Observar que a comunicação entre as camadas da web e lógica de negócios
é feita pela passagem de objetos Java Beans2.
Lógica de Negócios
A lógica de negócios em uma aplicação JEE é implementada em
componentes EJB. EJB’s são componentes de softwares gerenciados pelo
container EJB. Fisicamente, os EJB’s podem estar no mesmo servidor em que
se encontra o container web, em outro servidor ou distribuidos em vários
servidores. O container EJB se encarrega da comunicação entre os vários
EJBs e o desenvolvedor não precisa se preocupar com os detalhes de como
se dá a comunicação entre eles ou da localização dos mesmos.
Modelo de Negócio
O modelo do negócio é implementado em classes Java Beans chamadas
entities. Estas classes são persistidas (camada de persistência) através de
uma API de persistência, o JPA, que se encarrega de efetuar as operações
(insert, update, delete) no banco de dados. Para isso estas classes são
anotadas com informações sobre como elas devem ser mapeadas no banco
de dados.
Containers JEE
Uma aplicação multicamadas é normalmente extremamente difícil de
escrever, principalmente se tivermos de nos preocupar com os detalhes de
baixo nível como: controle transacional, gerenciamento de estado,
multithread , processamento concorrente, controle de acesso aos recursos,
etc. Na plataforma Java, o container JEE cuida de todos estes detalhes,
deixando para o desenvolvedor apenas o trabalho de implementar a lógica
de negócios e apresentação através dos componentes que serão
hospedados nele.
2
Java Beans são objetos Java que possuem 2 caracteristicas: possuem um
construtor padrão (sem argumentos) e as propriedades são acessados através de
métodos getters e setters.
Tipos de Containers JEE
Container WEB
Gerencia a execução de páginas JSP e servlets de uma aplicação JEE. Os
contêiner Web rodam dentro de um servidor JEE.
3
Um pool consiste de uma técnica de gerenciamento de recurso. Os recursos
disponíveis em uma aplicação gerencial (banco de dados, ejbs, servlets, etc.) são
compartilhados por vários clientes que utilizam estes recursos. Para otimizar a
utilização dos mesmos, ao invés de criar um recurso para cada solicitação – o que
leva tempo, pois para isso é necessário alocar e inicializar o mesmo – o container
cria um conjunto (pool) de recursos e vai utilizando conforme a demanda. Depois de
utilizado o recurso volta ao pool e pode ser reutilizado novamente por outro cliente.
Caso o numero de solicitações exceda o numero de objetos disponíveis no pool o
container aloca novos objetos para suprir a demanda.
Tipos de Enterprise Java Beans
Session EJB
Um session bean é requisitado por um cliente com o propósito de executar
uma operação da lógica de negócios. O nome session (sessão) se refere ao
fato da instancia do bean ficar disponível durante uma sessão e não
sobrevive a uma queda ou desligamento do servidor. Um session bean pode
ser utilizado para modelar qualquer funcionalidade da lógica de negócios da
aplicação.
Panda, Debu; Rahman, Reza; Lane, Derek. EJB 3 in Action. Manning, 2007.
Alur, Deepak; Crupi, John; Malks, Dan. Core J2EE Patterns: Best
Practices and Design Strategies. 2nd Edition. Prentice Hall, 2003.