.NET

27 jun, 2014

ASP .NET – Criando um projeto em 3 Camadas – UI, BLL e DAL (revisão) – Parte 01

Publicidade

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:

  1. Camada de Interface – responsável pela interação e apresentação de dados ao usuário;
  2. Camada de Negócios – responsável em tratar as regras de negócio da aplicação;
  3. 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:

  1. 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;
  2. Bussiness Logic Layer – Camada de negócios – BLL – responsável por armazenar a lógica da sua aplicação;
  3. 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:

lnq3cam1

bolocam

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;

aspn_3cam1

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;

aspn_3cam2

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;

aspn_3cam3

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;

aspn_3cam4

Ao final teremos uma solução e 3 projetos com a seguinte estrutura:

aspn_3cam5

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:

aspn_3cam6

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.

aspn_3cam7

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.

aspn_3cam8

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.

aspn_3cam9

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.