Arquitetura multicamadas - Multitier architecture

Na engenharia de software , a arquitetura multicamadas (freqüentemente chamada de arquitetura n- tier ) ou arquitetura multicamadas é uma arquitetura cliente-servidor na qual as funções de apresentação, processamento de aplicativos e gerenciamento de dados são fisicamente separadas. O uso mais difundido da arquitetura multicamadas é a arquitetura de três camadas .

A arquitetura de aplicativo N- tier fornece um modelo pelo qual os desenvolvedores podem criar aplicativos flexíveis e reutilizáveis. Ao segregar um aplicativo em camadas, os desenvolvedores adquirem a opção de modificar ou adicionar uma camada específica, em vez de retrabalhar todo o aplicativo. Uma arquitetura de três camadas é normalmente composta de uma camada de apresentação , uma camada lógica e uma camada de dados .

Embora os conceitos de camada e nível sejam frequentemente usados ​​alternadamente, um ponto de vista bastante comum é que realmente há uma diferença. Essa visão sustenta que uma camada é um mecanismo de estruturação lógica para os elementos que compõem a solução de software, enquanto uma camada é um mecanismo de estruturação física para a infraestrutura do sistema. Por exemplo, uma solução de três camadas pode ser facilmente implantada em uma única camada, como uma estação de trabalho pessoal.

Camadas

O padrão de arquitetura "Layers" foi descrito em várias publicações.

Camadas comuns

Em uma arquitetura lógica multicamadas para um sistema de informação com um design orientado a objetos , os quatro seguintes são os mais comuns:

  • Camada de apresentação (também conhecida como camada de IU, camada de visualização, camada de apresentação em arquitetura multicamadas)
  • Camada de aplicação (também conhecida como camada de serviço ou camada de controlador GRASP )
  • Camada de negócios (também conhecida como camada de lógica de negócios (BLL), camada de lógica de domínio)
  • Camada de acesso a dados (também conhecida como camada de persistência , registro, rede e outros serviços que são necessários para dar suporte a uma determinada camada de negócios)

O livro Domain Driven Design descreve alguns usos comuns para as quatro camadas acima, embora seu foco principal seja a camada de domínio .

Se a arquitetura do aplicativo não tiver distinção explícita entre a camada de negócios e a camada de apresentação (ou seja, a camada de apresentação é considerada parte da camada de negócios), um modelo cliente-servidor tradicional (duas camadas) foi implementado.

A convenção mais comum é que a camada de aplicativo (ou camada de serviço) é considerada uma subcamada da camada de negócios, geralmente encapsulando a definição de API que traz à tona a funcionalidade de negócios com suporte. As camadas de aplicativo / negócios podem, de fato, ser subdivididas para enfatizar subcamadas adicionais de responsabilidade distinta. Por exemplo, se o padrão modelo-visualização-apresentador for usado, a subcamada do apresentador pode ser usada como uma camada adicional entre a camada de interface do usuário e a camada de negócios / aplicativo (conforme representado pela subcamada do modelo).

Alguns também identificam uma camada separada chamada camada de infraestrutura de negócios (BI), localizada entre a (s) camada (s) de negócios e a (s) camada (s) de infraestrutura. Às vezes também é chamado de "camada de negócios de baixo nível" ou "camada de serviços de negócios". Essa camada é muito geral e pode ser usada em várias camadas de aplicativos (por exemplo, um CurrencyConverter).

A camada de infraestrutura pode ser particionada em diferentes níveis (serviços técnicos de alto ou baixo nível). Os desenvolvedores geralmente se concentram nos recursos de persistência (acesso a dados) da camada de infraestrutura e, portanto, falam apenas sobre a camada de persistência ou a camada de acesso a dados (em vez de uma camada de infraestrutura ou de serviços técnicos). Em outras palavras, os outros tipos de serviços técnicos nem sempre são explicitamente considerados como parte de uma camada específica.

Uma camada está em cima da outra, porque depende disso. Cada camada pode existir sem as camadas acima dela e requer que as camadas abaixo funcionem. Outra visão comum é que as camadas nem sempre dependem estritamente apenas da camada adjacente abaixo. Por exemplo, em um sistema em camadas relaxado (em oposição a um sistema em camadas estrito), uma camada também pode depender de todas as camadas abaixo dela.

Arquitetura de três camadas

Visão geral de um aplicativo de três camadas.

A arquitetura de três camadas é um padrão de arquitetura de software cliente-servidor em que a interface do usuário (apresentação), lógica de processo funcional ("regras de negócios"), armazenamento de dados de computador e acesso a dados são desenvolvidos e mantidos como módulos independentes , na maioria das vezes em plataformas separadas . Foi desenvolvido por John J. Donovan na Open Environment Corporation (OEC), uma empresa de ferramentas que ele fundou em Cambridge, Massachusetts .

Além das vantagens usuais do software modular com interfaces bem definidas, a arquitetura de três camadas se destina a permitir que qualquer uma das três camadas seja atualizada ou substituída de forma independente em resposta a mudanças nos requisitos ou tecnologia . Por exemplo, uma mudança de sistema operacional na camada de apresentação afetaria apenas o código da interface do usuário.

Normalmente, a interface do usuário é executada em um PC desktop ou estação de trabalho e usa uma interface gráfica de usuário padrão , lógica de processo funcional que pode consistir em um ou mais módulos separados em execução em uma estação de trabalho ou servidor de aplicativos e um RDBMS em um servidor de banco de dados ou mainframe que contém a lógica de armazenamento de dados do computador. A camada intermediária pode ser ela própria multicamadas (nesse caso, a arquitetura geral é chamada de " arquitetura n- camadas").

Camada de apresentação
Este é o nível superior do aplicativo. A camada de apresentação exibe informações relacionadas a serviços como navegação em mercadorias, compras e conteúdo do carrinho de compras. Ele se comunica com outras camadas por meio das quais distribui os resultados para a camada do navegador / cliente e todas as outras camadas da rede. Em termos simples, é uma camada que os usuários podem acessar diretamente (como uma página da web ou a interface de usuário de um sistema operacional).
Camada de aplicativo (lógica de negócios, camada lógica ou camada intermediária)
A camada lógica é retirada da camada de apresentação e, como sua própria camada, controla a funcionalidade de um aplicativo executando processamento detalhado.
Camada de dados
A camada de dados inclui os mecanismos de persistência de dados (servidores de banco de dados, compartilhamentos de arquivos, etc.) e a camada de acesso a dados que encapsula os mecanismos de persistência e expõe os dados. A camada de acesso a dados deve fornecer uma API para a camada de aplicativo que expõe métodos de gerenciamento dos dados armazenados sem expor ou criar dependências nos mecanismos de armazenamento de dados. Evitar dependências nos mecanismos de armazenamento permite atualizações ou alterações sem que os clientes da camada do aplicativo sejam afetados ou mesmo cientes da alteração. Assim como ocorre com a separação de qualquer camada, há custos de implementação e, muitas vezes, custos de desempenho em troca de escalabilidade e capacidade de manutenção aprimoradas.

Uso de desenvolvimento web

No campo do desenvolvimento da web , três camadas costumam ser usadas para se referir a sites , geralmente sites de comércio eletrônico , que são construídos em três camadas:

  1. Um servidor web front-end que serve conteúdo estático e, potencialmente, algum conteúdo dinâmico em cache . Em aplicativos baseados na web, front end é o conteúdo renderizado pelo navegador. O conteúdo pode ser estático ou gerado dinamicamente.
  2. Um servidor de aplicativos de nível médio de processamento e geração de conteúdo dinâmico (por exemplo, Symfony , Spring , ASP.NET , Django , Rails , Node.js ).
  3. Um banco de dados back-end ou armazenamento de dados , compreendendo conjuntos de dados e o software do sistema de gerenciamento de banco de dados que gerencia e fornece acesso aos dados.

Outras considerações

A transferência de dados entre camadas faz parte da arquitetura. Os protocolos envolvidos podem incluir um ou mais SNMP , CORBA , Java RMI , .NET Remoting , Windows Communication Foundation , sockets , UDP , serviços da web ou outros protocolos padrão ou proprietários. Freqüentemente, o middleware é usado para conectar as camadas separadas. Camadas separadas geralmente (mas não necessariamente) são executadas em servidores físicos separados e cada camada pode ser executada em um cluster .

Rastreabilidade

A rastreabilidade ponta a ponta dos fluxos de dados através de sistemas de n camadas é uma tarefa desafiadora que se torna mais importante quando os sistemas aumentam em complexidade. O Application Response Measurement define conceitos e APIs para medir o desempenho e correlacionar transações entre camadas. Geralmente, o termo "camadas" é usado para descrever a distribuição física de componentes de um sistema em servidores, computadores ou redes separados (nós de processamento). Uma arquitetura de três camadas terá três nós de processamento. O termo "camadas" refere-se a um agrupamento lógico de componentes que podem ou não estar fisicamente localizados em um nó de processamento.

Veja também

Referências

links externos