Páginas

sexta-feira, 19 de novembro de 2010

Trabalhando com Desenvolvimento em Camadas

Olá pessoal apaixonado por DOTNET...

Neste artigo irei fazer uma demonstração de como criar uma aplicação utilizando o conceito de desenvolvimento em camadas.

Desde já gostaria de esclarecer que esse é um simples exemplo que mostrarei passo-a-passo como criar e implementar funcionalidades em sua aplicação utilizando o desenvolvimento em camadas e por isso deixo como dica que você continue praticando este conceito para fixar seu conhecimento sobre esse assunto.

Para nosso exemplo utilizarei o Visual Studio 2010, criarei 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. Utilizarei para nosso exemplo a metodologia de desenvolvimento em Três camadas onde temos:

DAL – Camada de Acesso a dados(Data Access Layer);
BLL – Camada de Regra de negocios(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 meu exemplo eu coloquei 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).

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;

Mude o nome do nosso novo projeto para BLL;


Clique em OK.

Seu projeto BLL foi criado como mostra a imagem abaixo...

























Agora vamos criar nosso ultimo 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 ultimo projeto que faltava ser inserido na aplicação foi criado, como mostra a imagem abaixo.




























Agora temos 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 referencia a nossa camada BLL será criada na camada UI, como mostra a imagem abaixo...


























Agora Vamos Adicionar uma nova referencia 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 referencias necessárias foram criadas. Agora já pode começar a codificar.

Como se trata somente de um exemplo de como funciona o desenvolvimento em camadas eu não irei utilizar nenhum banco de dados, somente criarei 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.

Iremos criar uma lista contendo a descrição dos estados brasileiros na camada DAO.




































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.


























Repare que eu coloquei uma diretiva Using para nossa camada DAO...

Agora vamos explicar o que eu fiz ai, foi um tratamento e chamada bem simples:
Primeiro eu criei uma nova lista que conterá objetos do tipo String

Depois criei um objeto que faz referencia a classe Dao que está dentro de nossa camada DAO, que é nossa camada de persistência.

Depois eu populei minha lista ‘listaDosEstadosTratados’ com os dados retornados pelo método ‘RetornaListaEstado()’ que está na classe Dao da camada de persistência.

Reparem ainda que eu utilizei o ‘Distinct().ToList()’, quando fui popular minha 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 contem a lista tratada e que está na camada de negócios(BLL).


























Repare que assim como anteriormente eu adicionei uma diretiva using agora para nossa camada BLL.
Foi muito simples o trabalho aqui. Primeiro criei um objeto que faz referencia a classe Bll que está dentro de nossa camada BLL, que é nossa camada de Regra Negócio.

Depois eu populei um DropDownList criado na minha pagina com uma lista de dados retornados pelo meu método ‘RetornaEstadosTratados’, da minha classe Bll.

E eis o nosso resultado final. Como podem observar o nosso DropDownList foi populado com sucesso com os dados de nossa Lista.



























Como gosto de ressaltar em todos os exemplos, este foi uma mera demonstração de como desenvolver uma aplicação em camadas, por isso não procurei complicar muito na parte da codificação.

Como disse ao decorrer deste artigo, 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.

Bem pessoal e isso ai. Espero que tenham gostado e até logo!!!



2 comentários: