ASP .NET  - Criando e implementando uma arquitetura em 3 camadas - I (revisitado)


Neste artigo vou mostrar como criar e implementar uma arquitetura em 3 camadas em uma aplicação ASP .NET Web Forms usando o VS Community 2015.

O que é uma camada ?

Uma camada é uma porção reutilizável de código que realiza uma tarefa específica. No ambiente da plataforma .NET, uma camada é usualmente definida como um projeto que representa esta função específica.

Esta camada específica possui a responsabilidade de  interagir com outras camadas para realizar um objetivo específico.

A camada de Acesso a Dados (DAL - Data Access Layer)

Contém métodos que ajudam a camada de Negócio (Business Layer) a se conectar com os dados e realizar operações para retornar ou manipular (incluir, atualizar, deletar) dados.

A camada de Negócios (BLL - Business Logic Layer)

A camada de negócios contém a lógica de negócio, validações ou cálculos relacionados com os dados.

Embora um web site possa se comunicar diretamente com a camada de acesso a dados, isso é feito através da camada de negócios. Esta camada é vital pois é nela que são feitas as validações antes de realizar as chamadas aos métodos da camada de acesso a dados. Dessa forma assegura-se que os dados foram informados corretamente. Essas validações são conhecidas como regras de  negócio. 

A camada de Apresentação (Presentation Layer - UI)

A camada de apresentação contém a interface do usuário que pode ser constituída de formulários em aplicações Windows Forms ou de páginas da web em projetos Web Forms ou MVC. Essa camada é a mais importante pois é a única que o usuário visualiza e utiliza diretamente.

Assim, mesmo com uma camada de acesso a dados e camada de negócios bem construída, uma camada de apresentação que ofereça uma experiência pobre ao usuário vai impactar todo o projeto de forma negativa.

A figura abaixo resume o fluxo da arquitetura em 3 camadas :
Camada : Tiers ou Layers ?

Na literatura encontram-se com frequência os termos tiers e layers, em inglês, que geralmente são traduzidos como camadas.

Olhando com atenção, embora a diferença seja bem sutil, compreende-se que tiers refere-se a uma separação física dos componentes (diferentes Assemblies, DLLs, arquivos),  enquanto layers aponta para uma separação lógica dos componentes com classes distintas e diferentes espaços de nomes.

  • Layers - Refere-se a organização do código e dos dados;
  • Tiers - Geralmente se refere à distribuição do código e dos dados;
  • n-layer  - Não implica em n-tier e vice-versa;

 

 As vantagens da abordagem em Camadas

De forma bem simples o desenvolvimento em camadas procurar dividir a funcionalidade, componentes e o código para uma aplicação, seja para web ou para desktop, em camadas distintas apresentando as seguintes vantagens:

Da teoria para a prática

Após toda essa teoria vamos para o que interessa. Vamos iniciar uma abordagem prática mostrando como desenvolver uma aplicação ASP .NET usando a linguagem C# no modelo da arquitetura em 3 camadas.

Poderíamos usar qualquer tipo de projeto, não é isso o que importa, mas sim a abordagem que daremos na criação das funcionalidades.

Vamos criar uma aplicação que gerencia as informações de Clientes realizando as operações CRUD - Create, Read, Update e Delete usando ADO .NET básico.

Nessa abordagem vamos criar uma tabela no banco de dados SQL Server e depois usar os objetos da ADO .NET : SqlConnection, SqlCommand, SqlDataAdapter, SqlDataReader, DataTable, DataSet para gerenciar as informações.

Recursos usados:

Nota: Baixe e use a versão Community 2015 do VS ela é grátis e é equivalente a versão Professional.

Criando a solução no VS 2015 Community

Abra o Visual Studio Community 2015 e clique em New Project;

Selecione Other Project Types -> Visual Studio Solution e Blank Solution

Informe o nome Aspnet3Camadas e clique no botão OK.  Com isso criamos a solução.

1- Criando o projeto da camada de apresentação - UI

Vamos agora incluir o projeto que representa a camada de apresentação.

No menu File clique em Add -> New Project;

Você verá a janela abaixo exibindo dois novos tipos de projetos web:

Selecione ASP . NET Web Application (.NET Framework) Visual C# e informe o nome Aplicacao3Camadas;

A seguir escolha o template Empty e marque a opção WebForms de forma a criar uma solução vazia.

2- Criando o projeto da camada de negócios - BLL

No menu File clique em Add -> New Project;

Selecione Visual C# e o template Class Library e informe o nome Aspnet3Camadas.BLL e clique em OK;

3- Criando o projeto da camada de acesso a dados - DAL

No menu File clique em Add -> New Project;

Selecione Visual C# e o template Class Library e informe o nome Aspnet3Camadas.DAL e clique em OK;

4- Criando o projeto da camada de transferência - DTO

Vamos agora criar uma camada que podemos chamar de DTO - Camada de Transferência -  que permite trocar informações entre o nosso modelo de domínio com as demais camadas.

No menu File clique em Add -> New Project;

Selecione Visual C# e o template Class Library e informe o nome Aspnet3Camadas.DTO e clique em OK;

Após concluir essas tarefas teremos a seguinte estrutura para a nossa solução na janela Solution Explorer :

Os arquivos Class1.cs deverão ser excluídos ou renomeados quando formos implementar as funcionalidades em cada camada.

Definindo as dependências entre os projetos WebUI, BLL, DAL e DTO

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 Aspnet3Camadas.WebUI.

Clique com o botão direito do mouse sobre o projeto WebUI e a seguir em Add -> Reference;

Na janela Add Reference clique em Projects e a seguir marque os projetos Aspnet3Camadas.BLL e Aspnet3Camadas.DTO.

Com isso estamos definindo que o projeto WebUI terá uma referência aos projetos BLL e DTO mas não ao projeto DAL.

Vamos agora selecionar o projeto Aspnet3Camadas.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 Aspnet3Camadas.DAL e Aspnet3Camadas.DTO.

Com isso estamos definindo que o projeto BLL terá uma referência aos projetos DAL e DTO.

Para concluir selecione o projeto Aspnet3Camadas.DAL.

Repetindo as etapas anteriores marque o projeto Aspnet3Camadas.DTO.

Com isso estamos definindo que o projeto DAL terá uma referência ao projeto DTO.

Perceba que temos uma hierarquia definida pelas referências entre os projetos.

A figura a seguir exibe essa hierarquia onde vemos que o projeto WebUI acessa a BLL que acessa a DAL e todos acessam a DTO. ( Assim a DAL nunca acessa a BLL ou a WebUI, nem a WebUI acessa a DAL)

Já temos tudo pronto para iniciar a implementação das funcionalidades da nossa aplicação e vamos fazer isso na segunda parte do artigo.

Aguarde.

Porque a palavra da cruz é loucura para os que perecem; mas para nós, que somos salvos, é o poder de Deus.
Porque está escrito: Destruirei a sabedoria dos sábios, E aniquilarei a inteligência dos inteligentes.

1 Coríntios 1:18,19

Veja os Destaques e novidades do SUPER DVD Visual Basic (sempre atualizado) : clique e confira !

Quer migrar para o VB .NET ?

Quer aprender C# ??

Quer aprender os conceitos da Programação Orientada a objetos ?

Quer aprender o gerar relatórios com o ReportViewer no VS 2013 ?

Quer aprender a criar aplicações Web Dinâmicas usando a ASP .NET MVC 5 ?

 

  Gostou ?   Compartilhe no Facebook   Compartilhe no Twitter

 

Referências:


José Carlos Macoratti