Este é um artigo que mostra uma forma básica, mas efetiva de como criar uma aplicação com três camadas, a saber: Camada de Acesso a Dados – DAL, Camada de Negócios – BLL e Camada de Interface – UI em um projeto ASP .NET.
No exemplo do artigo eu vou utilizar o Visual Studio Express 2012 for Web e criar um projeto ASP .NET 4.5 Web Forms usando a linguagem VB .NET.
Recursos usados:
- Visual Studio Express 2012 for Web;
- SQL Server 2012 Local DB;
- ASP .NET Web Forms 4.5.
Como o assunto já foi exaustivamente abordado em meu site, não vou me ater muito a certos detalhes para tornar o artigo o mais simples e objetivo possível para aqueles que estão tendo o seu primeiro contato com um projeto ASP .NET em três camadas.
Conceitos
Quando você trabalha com um projeto em camadas, você tem que ter em mente uma coisa: as camadas são usadas para separar responsabilidades e tornar o código mais fácil de manter e ser reutilizado.
Nossa aplicação será composta de três camadas:
- Camada de Interface – responsável pela interação e apresentação de dados ao usuário;
- Camada de Negócios – responsável em tratar as regras de negócio da aplicação;
- Camada de Acesso aos dados – responsável em acessar e persistir os dados da aplicação.
Dessa forma, a camada de interface deverá conter as páginas para interagir com o usuário, obtendo informações da camada de negócios. Essa camada, por sua vez, faz o tratamento das regras de negócio da aplicação e obtém informações dos dados da camada de acesso a dados. A camada de interface não pode conhecer nada da camada de acesso a dados.
Assim, existe um nível de abstração entre as camadas. Isto torna possível alterar ou atualizar uma camada sem ter que interferir com a outra camada.
Portanto, em uma arquitetura em três camadas você separa as responsabilidades da seguinte forma:
- User Interface ou Interface do usuário – UI – (um formulário Windows form, wpf, uma página web, uma aplicação mobile, etc…) – que realiza a interface com o usuário;
- Bussiness Logic Layer – Camada de negócios – BLL – responsável por armazenar a lógica da sua aplicação;
- Data Acess Layer – Camada de acesso a dados – DAL – responsável por realizar o acesso e a persistência aos dados fazendo a comunicação entre a BLL e UI.
Abaixo temos ume esquema simplificado desta arquitetura e abaixo uma imagem de um bolo para comparação entre as camadas:
Além disso podemos usar uma camada que será responsável pela transferência de dados entre as camadas, ficando visível e acessível por todas as demais camadas.
Podemos chamar essa ‘camada’ de DTO – Data Transfer Object – que geralmente é composta por classes que representam o domínio da aplicação.
Criando a Solução e definindo a arquitetura da aplicação
Abra o Visual Studio Express 2012 for Web e clique em New Project;
A seguir, selecione o template : Other Project Types -> Blank Solution e informe o nome ASPNET_3Camadas e clique no botão OK;
Temos uma solução vazia na qual iremos incluir três projetos que representam cada camada.
1. Criando a camada de Interface – UI
No menu FILE, clique em Add -> New Project;
Selecione a linguagem Visual Basic -> Web e o template ASP .NET Empty Web Application e informe o nome UI e clique em OK;
2. Criando a camada de Negócios – BLL
No menu FILE clique em Add -> New Project;
Selecione a linguagem Visual Basic e o template Class Library e informe o nome BLL e clique em OK;
3. Criando a camada de Acesso aos dados – DAL
No menu FILE clique em Add -> New Project;
Selecione a linguagem Visual Basic e o template Class Library e informe o nome DAL e clique em OK;
Ao final teremos uma solução e 3 projetos com a seguinte estrutura:
Em cada projeto iremos definir as funcionalidades das respectivas camadas.
Definindo o domínio da aplicação e a camada DTO
A nossa aplicação irá tratar do gerenciamento de informações sobre Clientes. Dessa forma vamos criar uma classe Cliente que representará um cliente do nosso domínio.
Para tornar as coisas simples, a classe será definida com apenas algumas propriedades em um projeto chamado DTO que iremos incluir em nossa solução.
No menu FILE clique em Add -> New Project;
Selecione a linguagem Visual Basic e o template Class Library e informe o nome DTO e clique em OK;
A seguir, renomeie a classe Class1.vb criada por padrão para Cliente.vb e defina o código abaixo nesta classe:
Public Class Cliente Public Property Id As Integer Public Property nome As String Public Property endereco As String Public Property telefone As String Public Property email As String Public Property observacao As String End Class
Dessa forma nossa solução ficou agora com 4 projetos, que são mostrados na janela Solution Explorer:
Definindo as dependências entre os projetos
Vamos agora definir as dependências entre os projetos de forma a que cada projeto (camada) seja visível pela camada apropriada.
Vamos iniciar com o projeto UI… Clique com o botão direito do mouse sobre o projeto UI e a seguir em Add Reference. Na janela Add Reference clique em Projects e a seguir marque os projetos BLL e DTO.
Com isso estamos definindo que o projeto UI terá uma referência aos projetos BLL e DTO mas não ao projeto DAL.
Vamos agora selecionar o projeto BLL. Clique com o botão direito do mouse sobre o projeto BLL e a seguir em Add Reference;
Na janela Add Reference clique em Projects e a seguir marque os projetos BLL e DTO.
Com isso estamos definindo que o projeto BLL terá uma referência aos projetos DAL e DTO.
Vamos agora selecionar o projeto DAL. Clique com o botão direito do mouse sobre o projeto DAL e a seguir em Add Reference.
Na janela Add Reference clique em Projects e a seguir marque os projetos DTO. Com isso estamos definindo que o projeto DAL terá uma referência ao projeto DTO.
Após realizar essas tarefas, estamos prontos para definir as funcionalidades de cada camada em cada projeto.
Na próxima parte do artigo iremos iniciar com a camada de acesso a dados: DAL.