🔥 Articles, eBooks, Jobs, Columnist, Forum, Podcasts, Courses 🎓



Organizando o projeto em camada

Saiba organizar o seu projeto em camada, opinião pe

Olá pessoal, gostaria de mostrar com este artigo como organizar o código reaproveitando métodos, funções e tudo mais. Separar em projetos, usar DAO, DTO e BRL. Nunca faça tudo direto no código desorganizado; o sistema vai acabar aumentando e precisando de muita alteração no caso da falta de organização.

 

Referência:

- Ferramenta de desenvolvimento Visual Studio.NET 2008 ou superior;

- Linguagem C#, VB.NET ou J# (essa organização pode ser feita em qualquer linguagem dentro da ferramenta);

 

Breve explicação

 

         Não vou mostrar muito código com este artigo, vou mostrar apenas uma organização legal para desenvolvimento de software e reaproveitamento. O primeiro exemplo que vou comentar é sobre desenvolver um sistema do tipo Web. A parte do layout sempre vai acessar a parte de negócio e o negócio sempre acessa a camada de dados. Nunca o layout poderá acessar diretamente a camada de dados.

         Layout significa arquivo .aspx, .asmx, .js, .css, .vb, .html, e outros. Isso tudo é layout do sistema. O mesmo nunca deve ter regra de negócio, a regra deve ser feita dentro da BRL. Não confunda regra de tela com regra de negócio, a regra de tela pode ser feita de várias formas e jeitos.

         A regra de negócio sempre acessa a camada de dados, método sem regra de negócio faz apenas um chamada; caso contrário, executa a regra de negócio e depois acessa a camada de dados.

         A camada de dados apenas acessa os dados, não importa que tipo seja a base, SqlServer, Oracle, MySql, SQL Mobile, Acess, Sybase, Txt, XML ou outros. A função da camada de dados é apenas, inserir, excluir, atualizar e buscar os dados da base seja qual for.

         O envio e recebimento de parâmetro usando DTO (uma classe cheia de propriedades get e set) é no meu ponto de vista a melhor forma, dependendo do caso. Utilizo para passar como parâmetro de entrada. Você pode escolher também para enviar e receber; o melhor mesmo é enviar um DTO e receber outro DTO. Muitas vezes, já que não tem integração com outra linguagem como Java, retorno DataTable, DataSet que é um tipo de dados do C#.NET; depende muito do sistema.

 

Na Prática

 

         Na criação do projeto Web, gerei primeiro o nome e depois coloquei .Web. Por exemplo: NomeDoProjeto.Web. Esse foi o nome do projeto, isto é, do arquivo .csproj ou .vbproj. Automaticamente esse é o mesmo nome do namespace. Tenho apenas os arquivos de layout. (Imagem 1)

 

Imagem 1

 

         Note que, nesse projeto tenho apenas os arquivos .aspx, .master, .js, .css, .skin, imagens e tudo mais. Depois de criar esse projeto, criei outro chamado Business. Lembrando que isso é só uma sugestão para organização de código.

         Na próxima imagem (imagem 2), mostra o código Business.

 

Imagem 2

 

         Dentro da mesma solução, criei um projeto com o mesmo nome, porém referenciando o Business. Por exemplo: NomeDoProjeto.Web.Business. Na imagem 2, mostro as pastas BRL, DAO, DTO, LINQObjects e outros. O importante para este artigo são as pastas BRL, DAO e DTO.

         Ao abrir cada pasta, existem apenas arquivos com o final igual ao respectivo nome da pasta, por exemplo: PassadaDAO.cs, PassadaBRL.cs, PassadaDTO.cs.

 

Imagem 3

 

         Toda BRL recebe como parâmetro a DTO e acessa a classe DAO. É um padrão seguido para organização do código. A regra de negócio fica dentro da BRL, caso necessite da mesma. No caso de não ter regra, chamo o método da classe DAO e retorna, fica como se fosse um transportador. Code 1.1

 

 

        public void IncluirArquivo(Arquivo arquivo)

        {

            this._arquivoDAO.IncluirArquivo(arquivo);

        }

 

Code 1.1

 

         O code 1.1 mostra a DAO sendo chamada e acessando o método IncluirArquivo passando a classe Arquivo como parâmetro.

 

   

    public partial class Arquivo

    {

        public DateTime DataMovimento { get; set; }

    }

Code 1.2

         A classe Arquivo tem uma propriedade com get e set chamada DataMovimento e do tipo DateTime. As classes DAO sempre vão estender de outra classe responsável pela conexão com o banco de dados. No meu caso, chamei-a de BaseDAO.cs. (Imagem 4)

 

Imagem 4

         Outro segredo que uso também dentro das classes DAO é o internal classe em vez de ser public. Code 1.3.

 

 

internal DataTable PesquisaPoloCaptura(Passada passada)

        {

            StringBuilder query = new StringBuilder();

            query.Append(" SELECT...

Code 1.3

 

         Segue acima, a metade de um método da DAO.

         Dentro da BRL, faço apenas uma instância e utilizo o método que preciso. Pode ser usado também, um public interface, que possui apenas a assinatura do método. Para não aumentar muito o artigo, segue um link falando um pouco mais sobre public interface (http://www.aspneti.com/usando+public+interface+677,0.aspx).

         Tendo organizado as classes e o projeto dessa maneira mostrada; posso utilizar WebService. A interface é o arquivo .asmx e acessa a BRL que acessa a DAO. Fica tudo em um projeto Business que pode ser aproveitado.

         Muitas pessoas utilizam vários projetos dentro de uma mesma solução, no meu ponto de vista, fica mais difícil e complicado quando se trabalha em equipe gerenciar esse tipo de coisa. Fora as referências em vários projetos.

         Se eu quiser utilizar ou reaproveitar o projeto Business em um projeto do tipo WindowsForm, fica muito fácil e rápido. O que muda no final é apenas o layout para o cliente, ou seja, a camada fica separada.

 

Bom, eu fico por aqui; sou o Mauricio Junior.

Qualquer dúvida, entrar em contato pelo site.

Subscribe ecode10.com

Receive our latest updates about programming languages, software, database, books, ebooks, classes, jobs and more.
You can cancel anytime.

Log In








Top