Olá pessoal apaixonado por .NET, neste artigo faremos uma demonstração como criar uma aplicação utilizando o conceito de desenvolvimento em camadas.
Desde já gostaria de esclarecer que esse é um simples exemplo com o passo a passo da criação e implementação de funcionalidades em sua aplicação utilizando o desenvolvimento em camadas.
Para nosso exemplo utilizaremos o Visual Studio 2010, onde criaremos uma aplicação web utilizando como linguagem o C#.
Será um exemplo bem simples, onde o principal objetivo é demostrar desde a criação de vários projetos (camadas) e uma mesma Solution (aplicação) até o relacionamento e comunicação entre as camadas. Para nosso exemplo utilizaremos a metodologia de desenvolvimento em 3 camadas onde temos:
- DAL – Camada de Acesso a dados(Data Access Layer);
- BLL – Camada de Regra de negócios (Business Logic Layer);
- UI – Camada de Apresentação (User Interface);
Segue abaixo uma imagem para ilustração do desenvolvimento em camadas:
Veja abaixo uma breve descrição sobre cada uma das camadas:
- UI – Camada de Apresentação. Camada responsável por apresentar ao usuário o resultado final de todo o processamento de nosso sistema que se comunica somente com a BLL, não fazendo acesso direto à DAO.
- BLL – Camada de Regra de Negócio. Camada responsável por possuir as regras especifica do sistema a ser desenvolvido, sendo responsável por se comunicar com a DAO (para acessar os dados retornados do banco) e fornecer informações à UI (para repassar o resultado do processamento e configuração das regras do sistema).
- DAO – Camada de Acesso a Dados. Camada responsável se conectar e fazer todas as transações referentes a banco de dados, como consultas, inserções de dados, atualizações de dados e exclusão de dados. Essa camada faz a comunicação com a BL, não se comunicando diretamente com a UI.
Agora que conhecemos um pouco mais sobre o desenvolvimento em camada, vamos começar a desenvolver nosso exemplo. Para isso abra o seu Visual Studio...
Clique no menu File/New/Project. Agora vamos selecionar o tipo de nosso projeto. Selecione ASP.NET Web Application...
No exemplo colocamos o nome como AplicacaoEmCamadas, mas você pode colocar o nome que achar mais confortável para seu entendimento.
Clique em OK. Observe que será criada a Solution de nossa aplicação contendo um projeto Web, que será nossa camada de apresentação (UI).
Agora iremos criar nossos outros dois projetos (camadas). Para isso, clique com o botão direito do mouse no Solution de sua aplicação na aba Solution Explorer, vá a Add/New Project;
Selecione o tipo de projeto Class Library e mude o nome do nosso novo projeto para BLL:
Clique em OK. Agora seu projeto BLL foi criado como mostra a imagem abaixo:
Vamos criar nosso último projeto (camada) para nossa aplicação, a DAO.
Siga os passos anteriores, clique com o botão direito do mouse no Solution de seu projeto localizado no Solution Explorer. Vá em Add/New Project.
Selecione o tipo de projeto Class Library e altere no nome de seu novo projeto para DAO:
Clique em OK. Nosso último projeto que faltava ser inserido na aplicação foi criado, como mostra a imagem abaixo:
Relacionamento entre camadas
Já que toda a estrutura de nosso projeto foi criada, temos agora que fazer o relacionamento entre as camadas, para que uma possa ser visível pela outra.
Observe o diagrama abaixo que demostra como será o relacionamento entre elas:
Veja que o diagrama exibe o relacionamento que uma camada possui com a outra. Repare que a nossa camada UI (AplicacaoEmCamada) possui uma relação de dependência com BLL, e BLL possui um relacionamento de dependência com DAO.
Tendo entendido como será o relacionamento entre nossas camadas, vamos fazer os nossos relacionamentos.
Vamos fazer o relacionamento entre a camada UI e a BLL. Para isso clique com o botão direito do mouse na sua camada de interface (UI ou AplicacaoEmCamada), depois clique em Add Reference:
Selecione o seu projeto (camada) BLL:
Após isso clique em OK. Uma nova referência a nossa camada BLL será criada na camada UI, como mostra a imagem abaixo:
Agora adicionaremos uma nova referência de nossa camada BLL com a camada DAO. Para isso siga os passos mostrados anteriormente, clique com o botão direito do mouse na camada BLL, depois clique em Add Reference...
Selecione o projeto DAO na janela que aparecerá, como mostra a imagem abaixo:
Pronto, todas as referências necessárias foram criadas. Agora já pode começar a codificar.
Funcionalidade de teste
Agora que todas as nossas referências foram criadas, já pode começar a codificar.
Como se trata somente de um exemplo de como funciona o desenvolvimento em camadas não utilizaremos nenhum banco de dados, somente criaremos uma lista contendo alguns dados na nossa camada DAO e a mesma será explorada e manipulada pela camada BLL, que por sua vez irá repassar os dados para a camada de interface que apresentará o resultado.
Criaremos uma lista contendo a descrição dos estados brasileiros na camada DAO:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace DAO
{
public class Dao
{
public List<string> RetornaListaEstado()
{
List<string> listaEstados = new List<string>();
listaEstados.Add("Acre");
listaEstados.Add("Alagoas");
listaEstados.Add("Alagoas");
listaEstados.Add("Alagoas");
listaEstados.Add("Amapá");
listaEstados.Add("Amazonas");
listaEstados.Add("Bahia");
listaEstados.Add("Ceará");
listaEstados.Add("Distrito Federal");
listaEstados.Add("Distrito Federal");
listaEstados.Add("Distrito Federal");
listaEstados.Add("Espírito Santo");
listaEstados.Add("Goiás");
listaEstados.Add("Maranhão");
listaEstados.Add("Mato Grosso");
listaEstados.Add("Mato Grosso do Sul");
listaEstados.Add("Minas Gerais");
listaEstados.Add("Pará");
listaEstados.Add("Paraíba");
listaEstados.Add("Paraíba");
listaEstados.Add("Paraíba");
listaEstados.Add("Paraná");
listaEstados.Add("Pernambuco");
listaEstados.Add("Piauí");
listaEstados.Add("Rio de Janeiro");
listaEstados.Add("Rio Grande do Norte");
listaEstados.Add("Rio Grande do Sul");
listaEstados.Add("Rio Grande do Sul");
listaEstados.Add("Rio Grande do Sul");
listaEstados.Add("Rondônia");
listaEstados.Add("Roraima");
listaEstados.Add("Santa Catarina");
listaEstados.Add("São Paulo");
listaEstados.Add("São Paulo");
listaEstados.Add("São Paulo");
listaEstados.Add("Sergipe");
listaEstados.Add("Tocantins");
return listaEstados;
}
}
}
Nossa lista foi criada. Observe que existem alguns itens repetidos, isso foi de propósito e iremos tratar isso em nossa camada BLL.
Agora vamos chamar o nosso método com a lista de estados que está na classe Dao da camada DAO. Essa chamada será feita dentro da camada BLL:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using DAO;
namespace BLL
{
public class Bll
{
public List<string> RetornaEstadosTratados()
{
List<string> listaDosEstadosTratados = new List<string>();
Dao classeDao = new Dao();
listaDosEstadosTratados = classeDao.RetornaListaEstado().Distinct().ToList();
return listaDosEstadosTratados;
}
}
}
Repare que colocamos uma diretiva Using para nossa camada DAO.
Agora vamos explicar o tratamento e chamada:
- Crie uma nova lista que conterá objetos do tipo String;
- Depois crie um objeto que faz referência a classe Dao que está dentro de nossa camada DAO, que é nossa camada de persistência;
- Depois popule a lista ‘listaDosEstadosTratados’ com os dados retornados pelo método ‘RetornaListaEstado()’ que está na classe DAO da camada de persistência.
- Reparem ainda que utilizamos o Distinct().ToList() e populamos a lista com os dados retornados por RetornaListaEstado(), que serve para retirar os itens repetidos de nossa coleção.
Agora vamos chamar na nossa UI (camada de interface) o nosso método que contém a lista tratada e que está na camada de negócios (BLL):
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using BLL;
namespace AplicacaoEmCamadas
{
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
Bll classeBll = new Bll();
ddlListaEstados.DataSource = classeBll.RetornaEstadosTratados();
ddlListaEstados.DataBind();
}
}
}
Repare que assim como anteriormente adicionamos uma diretiva using, agora para nossa camada BLL.
Foi muito simples o trabalho aqui. Primeiro crie um objeto que faz referência a classe Bll que está dentro de nossa camada BLL, que é nossa camada de Regra Negócio.
Depois popule um DropDownList criado na página com uma lista de dados retornados pelo meu método RetornaEstadosTratados, da classe Bll.
E eis o nosso resultado final. Como podem observar o nosso DropDownList foi populado com sucesso com os dados de nossa Lista:
O desenvolvimento em camadas é bastante utilizado nos dias atuais devido a sua praticidade e também devido a segurança que proporciona à aplicação, pois quando você subir sua aplicação para o servidor não precisará subir todas as camadas (projetos), apenas subirá a sua UI (camada de interface), as outras camadas estão em DLL na pasta Bin de sua camada de Apresentação.