Visão geral do desenvolvimento em Camadas: Trabalhando com Desenvolvimento em Camadas Utilizando C#

Veja neste artigo como funciona o desenvolvimento em camadas e aprenda na prática a criar o projeto.

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:

Segue abaixo uma imagem para ilustração do desenvolvimento em camadas:

Veja abaixo uma breve descrição sobre cada uma das camadas:

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:

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.

Artigos relacionados