Conceitos: Configurações de Implementação do J2EE

Tópicos

Introdução To top of page

A plataforma J2EE suporta o desenvolvimento e a implementação de uma variedade de configurações de implementação padrão. São essas configurações de implementação padrão que evitam muita adivinhação no desenvolvimento do aplicativo. Nas seções a seguir, você localizará as descrições das configurações de implementação mais comuns e os prós e contras de cada uma.

Caso você ainda não esteja familiarizado com os conceitos do J2EE, consulte os descritos em Conceitos: Visão Geral do J2EE antes de avançar.

Configuração de Implementação Independente To top of page

A primeira configuração de implementação é mostrada na Figura 1. Nela, não há um contêiner de Web nem um contêiner EJB. Um cliente acessa os recursos do EIS diretamente e é responsável pela manipulação de qualquer lógica de apresentação, lógica de negócios e pela própria lógica de integração.

Diagrama descrito no texto de acompanhamento.

Figura 1: Configuração de Implementação Independente

À primeira vista, essa configuração pode parecer uma proposta atraente para os aplicativos que fornecem manipulação simples dos dados contidos nos recursos do EIS. Entretanto, ela apresenta várias desvantagens em potencial.

As mudanças nos recursos do EIS podem ter um impacto importante na implementação do aplicativo, que é sempre diretamente dependente da estrutura interna de cada recurso do EIS, como a estrutura de tabelas do banco de dados. Qualquer alteração no próprio aplicativo requer uma consolidação completa em todos os usuários - não há servidor central no qual o aplicativo seja implementado para que os clientes tenham acesso imediato às correções mais recentes.

Além disso, essa configuração de implementação não favorece uma divisão de responsabilidades. Um exemplo é o caso de a lógica de apresentação e a lógica de negócios estarem firmemente acopladas, dificultando o suporte ao desenvolvimento e manutenção do aplicativo.

Os problemas reais com essa configuração de implementação, entretanto, começam a surgir quando você decide escalar o aplicativo. As estações de trabalho do cliente possuem características de desempenho limitadas, portanto, o ideal seria distribuir o processamento entre várias máquinas. Entretanto, a configuração independente não foi projetada para suportar o processamento distribuído. Além disso, quando você tentar suportar mais clientes que acessam os recursos do EIS coincidentemente, você perceberá que os aplicativos são limitados pelo próprio recurso do EIS, como o número de conexões coincidentes com o banco de dados.

Configuração de Implementação Centrada no EJB To top of page

A configuração de implementação centrada no EJB é mostrada na Figura 2. Nela, um contêiner EJB fica entre o contêiner do cliente e os recursos do EIS. Não há contêiner de Web. A lógica de apresentação fica no cliente, com a lógica de negócios residindo nos EJBs. Em vez de acessar os recursos do EIS diretamente, todos os pedidos dos clientes são gerenciados pelos EJBs apropriados. Os clientes são, portanto, protegidos das mudanças nos recursos do EIS.

Diagrama descrito no texto de acompanhamento.

Figura 2: Configuração de Implementação Centrada no EJB

A configuração de implementação centrada no EJB foi projetada para tratar de vários problemas presentes na configuração de implementação independente. De uma perspectiva de escalabilidade, a implementação da plataforma J2EE pode distribuir o processamento entre várias máquinas. Além disso, um contêiner EJB é responsável por assegurar utilização eficiente de recursos limitados, como conexões com o banco de dados. De uma perspectiva de desenvolvimento e manutenção do aplicativo, essa configuração também favorece uma separação da lógica de apresentação e da lógica de negócios.

Entretanto, uma das desvantagens da configuração de implementação centrada no EJB é que até as menores mudanças feitas à interface com o usuário requerem uma consolidação completa do aplicativo em todos os usuários. Embora a lógica de negócios encapsulada nos EJBs possa ser reimplementada no servidor (e assim, fornecer aos usuários acesso imediato a todas as mudanças), isso não é verdadeiro para a lógica de apresentação. Isso não é apropriado, uma vez que a aparência e comportamento de um aplicativo poderia passar por freqüentes mudanças.

Configuração de Implementação Centrada na Web To top of page

A configuração de implementação centrada na Web é mostrada na Figura 3. Nela, um contêiner de Web fica entre o contêiner do cliente e os recursos do EIS. Não há contêiner EJB. Tanto a lógica de apresentação quanto a lógica de negócios são manipuladas por elementos no contêiner de Web (JSPs e servlets). Nessa configuração, é utilizada uma linguagem de marcações simples no cliente, como HTML, embora também pudesse ser XML ou WML.

Diagrama descrito no texto de acompanhamento.

Figura 3: Configuração de Implementação Centrada na Web

Normalmente, uma configuração de implementação centrada na Web resulta em uma ênfase ao suporte da aparência e comportamento do aplicativo resultante, com menos ênfase ao suporte da lógica de negócios. Essa configuração suporta mudanças freqüentes à aparência de um aplicativo e está amplamente em uso atualmente.

Uma configuração de implementação centrada na Web fornece vários benefícios. Primeiro, os clientes não são afetados pelas mudanças nos recursos do EIS, uma vez que não acessam esses recursos diretamente. Segundo, é possível reimplementar todo o aplicativo sem requerer consolidações nos usuários, uma vez que o aplicativo reside totalmente em um servidor.

Entretanto, enquanto a utilização de EJBs é considerada, às vezes, excessiva para a tarefa que se apresenta, a omissão de EJBs resulta em alguns dos problemas levantados para a configuração de implementação independente. Especificamente, essa configuração não favorece uma divisão clara de responsabilidades entre a lógica de apresentação e a lógica de negócios, resultando sempre em elementos firmemente acoplados que impedem o desenvolvimento e manutenção do aplicativo. Além disso, todos os problemas de escalabilidade presentes em uma configuração de implementação independente aplicam-se a uma arquitetura centrada na Web.

Configuração de Implementação Multicamada To top of page

A configuração de implementação multicamada é mostrada na Figura 4. Ela inclui um contêiner de Web e um contêiner EJB e apresenta todos os benefícios discutidos para as outras configurações de implementação, porém, sem as desvantagens. A lógica de apresentação é manipulada por elementos no contêiner de Web, com a lógica de negócios manipulada pelos EJBs no contêiner EJB.

Diagrama descrito no texto de acompanhamento.

Figura 4: Configuração de Implementação Multicamada

Os clientes não são afetados pelas mudanças nos recursos do EIS porque esses recursos não são acessados diretamente. Além disso, é possível reimplementar todo o aplicativo sem requerer consolidações nos usuários, uma vez que o aplicativo reside totalmente no servidor.

De uma perspectiva de escalabilidade, o processamento pode ser distribuído para suportar o processamento coincidente. Além disso, de uma perspectiva de escalabilidade, o contêiner EJB é responsável por assegurar utilização eficiente de recursos limitados, como conexões com o banco de dados.

De uma perspectiva de desenvolvimento e manutenção do aplicativo, essa configuração também favorece uma separação clara de responsabilidades. A lógica de apresentação é desacoplada dos recursos do EIS e a lógica de negócios é desacoplada da aparência e comportamento. Essa separação clara pode auxiliar na alocação de trabalho para desenvolvedores diferentemente qualificados e a lógica de apresentação e a lógica de negócios podem ser desenvolvidas coincidentemente.

A configuração de implementação multicamada também pode facilitar a migração de um dispositivo cliente (como um navegador da Web) para outro (como um PDA). Não é necessária uma regravação completa do aplicativo porque a lógica de negócios encapsulada nos EJBs permanece inalterada e pode ser utilizada no estado em que se encontra.

Resumindo, há várias configurações de implementação, cada uma com seus prós e contras. Um dos objetivos da plataforma J2EE é ser suficientemente flexível para oferecer suporte a qualquer configuração de implementação que for julgada apropriada para uma organização e ao mesmo tempo tratar das questões corporativas.



Rational Unified Process   2003.06.15