LAYERDEV

 Busca Online:
 

Seja bem vindo(a) Visitante, você não está logado deseja logar
na comunidade ASPNETi.COM e participar de serviços e promoções ? clique aqui.

Organizando o projeto em camada



Data Publicação: 16/12/2009 17:22:21
Total de visualizações: 1706

comente
Diminuir o tamanho das letras Aumentar o tamanho das letras


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.



Total de visualizações: 1706
voltar   comente  subir


Comentários:


Comente (dê sua opinião): VOCÊ PRECISA LOGAR

Comentário:
Código Imagem:  (digite o código da imagem respeitando maiúsculo e minúsculo)

Favor digitar o código da imagem para cadastramento.

 

Outros Artigos do Autor

Ebook: Aprendendo Desenvolver WebServices
Abrindo Janela de Forma Modal
Channel9 - Soap, OData, Json
Detectando ENTER
Web 2.0 - A máquina somos nós
Chrome - não reconhecimento...
XAML Power Toys
Alongar é preciso
Copa Microsoft de Talentos em Brasília
Educação no Brasil
Seria o novo Windows Mobile 7 ?
Public Interface
Usando o Translator da Microsoft
Evento Java versus DotNet
Trabalhando com LinkButton dentro do Gridview
Certificação - Segunda Chance
Microsoft Recite
Criando Números Aleatoriamente
Vídeo - Conecte
CSS no VS 2003
Novo iGas 2.0 Mobile
Promoção Assinatura Grátis DevMedia e ASPNETi.COM
Novidade: Nomeação MVP Microsoft
Criando Alias no Pacote
Orientação a Objetos - Microsoft PetShop 3.0
Vídeo aula explicando o que é o FreeTextBox e como utilizar em seu projetos ASP.NET.
Vídeo: Windows Phone com Windows Mobile 7
Conecte - Os games
Código fonte aberto
O Avanço do Blu-Ray no Brasil
Armazenando dados no ViewState – Parte I
Criptografando Senha
Comunicação .NET e VB 6.0 – Parte I
Chamando Programas de Dentro do Windows Forms
Microsoft lança seu próprio QRCode
Sobre o Autor
  [sumir] [aparecer]
 
Mauricio Junior Maurício Júnior
Formado pela Faculdade Anhanguera, Especialista pela FGV (Fundação Getúlio Vargas), Pós-Graduação em Docência Superior e cursando Mestrado na UNB Engenharia Elétrica; .
Tenho 27 anos e possuo sete livros publicados pela editora Ciência Moderna no ano de 2009. Sou Certificado Microsoft MCP, MCAD e MVP, faço parte da comunidade ASPNETI.COM, onde publico artigos, vídeos, ebooks e livros Publico artigos, vídeos e podcast em outras comunidades. Trabalho como Analista de Sistemas / Desenvolvedor na empresa ATP S/A. Blog:  blog.mauriciojunior.orgSite pessoal  www.mauriciojunior.org

Informações Online
Usuários Online: 1517
Artigos:  729
Vídeos:  59
PodCast's:  42
Fórum:  3127
Empregos:  1359
Usuários Cadastrados: 6080
Publicidade
LAYERDEV




Enquete ASPNETi.COM
 Os podcasts tem sido proveitoso pra você?

Favor logar para votar
 
Publicidade Vertical
NETITC