Em termos de arquitetura de software o padrão mais difundido e comumente utilizado é a arquitetura em múltiplas camadas. Quando o assunto é software corporativo esta arquitetura é a principal escolha de muitos arquitetos, engenheiros e desenvolvedores, talvez por tanto se assimilar a estrutura organizacional encontrada em muitas corporações.

Em uma aplicação multicamadas as camadas são distribuídas horizontalmente, além disso cada camada possui uma finalidade específica no contexto da aplicação, sendo as principais camadas:

  • Camada de Apresentação (Presentation Layer, UI Layer, View Layer);
  • Camada de Aplicação (Application Layer, Services Layer);
  • Camada de Negócios (Domain Layer, Business Logic Layer);
  • Camada de Dados (Persistence Layer, Data Access Layer).

Camada de Apresentação

Independentemente do tipo da aplicação, seja ela mobile, web ou desktop, esta camada é responsável por interagir com o usuário da aplicação, exibindo informações contidas e processadas nas camadas inferiores, processando seus comandos e solicitações, além de também apresentar eventuais erros e exceções.

Em aplicações de menor complexidade muitas vezes esta camada se comunica diretamente com a camada de negócios, no entanto em aplicações de maior complexidade, a fim de evitar acoplamento, e prevendo a facilidade de implementação de camadas de apresentação adicionais, a interação com a camada de negócios é realizada por intermédio da camada de aplicação.


Camada de Aplicação

A camada de aplicação é bastante compacta, ela não possui representação dos itens ou processos contidos na camada de negócios, em vez disso ela irá coordenar os métodos, objetos e processos da camada de negócios, fazendo com que diversas tarefas que implementam o conceito de responsabilidade única (Single Responsibility Principle) desempenhem tarefas de alto nível mais significativas para a camada de apresentação.

Em algumas notações esta camada é contida dentro da camada de negócios, visto que sua função é abstrair o conteúdo da camada de negócios, impedindo que a camada de apresentação tenha muito conhecimento sobre esta, e evitando assim o demasiado acoplamento da camada de apresentação.


Camada de Negócios

Considerada por muitos como sendo a principal camada da aplicação e a que requer mais atenção ao ser projetada. A camada de negócios é responsável pela representação dos conceitos do negócio na aplicação, sendo assim ela irá conter informações sobre os objetos, regras, situações e processos fundamentais para o funcionamento adequado da aplicação.

Alguns dos objetos comumente encontrados na camada de negócios de uma aplicação comercial são objetos que representam clientes, funcionários, pedidos, notas fiscais, produtos e etc.

Por se tratar do coração da aplicação é necessário que ao projetar a camada de negócios tenha-se uma grande compreensão das necessidades do negócio, e geralmente o seu planejamento é coordenado de perto com profissionais que possuam este conhecimento.


Camada de Dados

Localizada abaixo da camada de negócios, essa camada é responsável fornecer as camadas superiores acesso simplificado aos dados da aplicação, que geralmente serão armazenados em um banco de dados relacional.

Um exemplo do funcionado da camada de dados e utilização da mesma, é que ao invés da camada de negócios interagir diretamente com a base de dados, passando instruções SQL, recebendo linhas e colunas e mapeando esses dados em objetos, esse trabalho é abstraído pela camada de dados, que é especializada nesta tarefa.

A interação entre as camadas

Ao utilizar uma arquitetura em camadas, cada camada gera certo nível de abstração em torno da sua responsabilidade. A camada de apresentação por exemplo, não tem preocupações sobre onde ou como armazenar os dados, em manter estes dados atualizados, e nem tampouco aplica qualquer tipo de processamento ou lógica de negócios a estes dados.

A camada de negócios, por sua vez não se preocupa sobre como formatar os dados para exibição, como exibir mensagens de erros ou de onde os dados virão. Sua única preocupação é processar os dados que são fornecidos pela camada de dados, aplicando nestes as regras de negócios, e fornecendo os mesmos para a camada de apresentação a fim que o usuário possa interagir com os mesmos.

Essa divisão de responsabilidades, onde cada camada realiza apenas uma função e não tem conhecimento sobre o funcionamento da camada superior ou inferior se dá devido ao fato de que a arquitetura de múltiplas camadas implementa tanto o Princípio da Responsabilidade Única(Single Responsibility Principle) como a Separação de Preocupações (Separation of Concerns).

Os benefícios da arquitetura multicamadas

As mudanças sempre foram um grande inimigo do processo de desenvolvimento de software. As tecnologias usadas e consideradas como padrão de mercado estão em constante mudança.

A não muito tempo atrás no universo .NET as aplicações Windows Forms eram consideradas padrão de desenvolvimento desktop, enquanto que o Web Forms dominava as aplicações web. Atualmente o WPF e ASP.NET MVC são considerados as novas e promissoras tecnologias que se tornaram padrão para o desenvolvimento de novas aplicações .NET.

Aqui jaz um dos principais benefícios da modularização das camadas e aplicação dos padrões de separação de preocupações e responsabilidade única.

Em uma aplicação de única camada, cuja lógica de negócios e de acesso a dados está armazenada em métodos e eventos por “detrás” da interface gráfica a mudança de tecnologia de apresentação ou de acesso a dados é algo completamente impensável, tornando assim a aplicação e o desenvolvedor refém de uma tecnologia ou de um fornecedor de software.

Já em uma aplicação que implementa a arquitetura de múltiplas camadas, onde estas mesmas foram projetadas de maneira desacoplada, utilizando interfaces e abstrações para a comunicação entre as mesmas, a mudança de tecnologia não seria apenas perfeitamente possível como poderia fazer parte da estratégia da aplicação para atingir a maior quantidade de dispositivos possíveis.

Uma mesma aplicação poderia implementar múltiplas camadas de apresentação para desktop, web, múltiplos dispositivos mobile, e ao mesmo tempo não ficar presa a uma única tecnologia de acesso a dados, podendo a critério de custos ou preferência armazenar seus dados em um servidor Azure ou AWS com banco de dados SQL Server, Oracle ou DB2, dentre outros.

Considerações

O desenvolvimento de aplicações utilizando a arquitetura multicamadas é apenas uma das inúmeras metodologias que podem ser aplicadas no desenvolvimento da sua aplicação. E apesar de ser uma arquitetura largamente popular, em muitos casos, especialmente quando desenvolvendo aplicações com um baixo grau de complexidade, pode não ser a melhor alternativa. No final do dia cabe ao arquiteto ou desenvolvedor realizar a análise da cada situação e determinar a melhor abordagem para cada projeto.

Write A Comment

Pin It