Proposta de Arquitetura – Parte 1 – Camadas

Para o desenvolvimento de um software, seja qual for o seu propósito, é sempre adequado mantermos algum padrão na execução do trabalho. Independente da metodologia adotada, criar um software em camadas ajuda no aproveitamento de código e na separação de responsabilidades das classes, além de facilitar a manutenção e a depuração.

Neste artigo apresentarei a estrutura de camadas que uso em todos os meus projetos, incluindo a nomenclatura utilizada para referenciá-los. A nomenclatura segue o padrão recomendado pela Microsoft, que é similar ao utilizado nos pacotes Java.

Digamos que iremos criar uma aplicação para um simples cadastro de clientes. Esta aplicação usará as diversas interfaces disponíveis (Web, Windows Forms, WPF, Mobile), e portanto, a nossa nomenclatura será ajustada para identificar cada projeto pela sua interface.

Abaixo está o diagrama que ilustrará melhor esta estrutura:

Agora vamos explicar o que cada camada significa:

CIA – Camada de Interface e Acesso. Esta camada é a interface gráfica com o usuário. Ela sempre terá seu nome extendido caso o projeto seja desenvolvido para mais de um tipo de interface. Por exemplo: Se o projeto for somente Web, então o nome do projeto terminara é CIA. Entretanto, se for construída uma versão Web e uma WPF, então haverá dois projetos: o CIA.Web e o CIA.WPF.

CLN – Camada de Lógica de Negócios. Esta camada é responsável pelo processamento das informações que são enviadas pela CIA, e pela preparação dos dados recebidos pela camada CAD para exibição. Portanto, todas as regras de validações, tratamento de dados, formato de exibição, etc. devem ser controlados por esta camada.

CAD – Camada de Acesso a Dados. Esta camada fornece a conectividade com o banco de dados utilizado pela aplicação. Entretanto, este banco de dados é representado pela camada CES, que será explicada a seguir.

CES – Camada de Entidades do Sistema. Esta camada fornece a representação de todas as tabelas do banco de dados em formato de classes. Na descrição deste projeto, usaremos o Entity Framework, que oferece todos os recursos de conectividade, métodos de consulta, criação, atualização e remoção de registros, sem a necessidade de uso de comandos SQL.

CUB – Camada de Utilitários Básicos. Esta camada é um repositório de utilitários que podem ajudar na validação de dados, como a verificação de um CNPJ ou CPF, formato de endereço de email, entre outros.

A estrutura destes pacotes também indica o referenciamento. Em um projeto .NET, a camada CAD é referenciada na CLN, que por sua vez é referenciada na CIA (ou em cada um dos projetos de interface). As camadas CES e CUB devem ser referenciadas em todas as outras camadas.

Na segunda parte deste artigo, explicarei sobre a criação dos projetos no Visual Studio 2010 e como construir a camada CES.