none
Duvida sobre desenvolvimento em camada! RRS feed

  • Pergunta

  • Olá tenho a seguinte duvida!

    Estou fazendo meu TCC para faculdade de Analise e Desenvolvimento de Sistema, estou fazendo um Sistema que contém NF-e, Remessa bancaria, Cupom Fiscal e mais algumas coisas.

    Estou desenvolvendo em Camada estou utilizando C# + PostgresSQL

    Camada:
        
        DAO = Acesso ao banco de Dados
        SERVICE = Regra de Negocio
        MAP = Mapeamento da Tabela
        UI = Interface
        
    Ai tem um exemplo do código:

    public class BancoMAP
     {
       public int ID_BANCO {get; set;}
       public string DESCRICAO {get; set;}
       public String COD_BANCO {get; set;}
       public string link {get; set;}
     }

     public class BancoDAO
     {
        public List<BancoMAP> ReturnList(BancoMAP map, string where)
        {
            List<BancoMAP> lst = new List<BancoMAP>();
            ....
            string sql = "select * from banco"+ where;
            ...
            return lst;
        }
     }

     public class BancoSERVICE
     {
        public List<BancoMAP> ReturnList(BancoMAP map)
        {
           string where = "";
           if ( map.COD_BANCO == "001" )
           {
              where = "where descricao = "Banco do brasil"";  // aqui que surgiu a duvida
           }
           else
           {
              where = "where descricao = "Outro banco"";
           }
           BancoDAO bancoDAO = new BancoDAO();
           return bancoDAO.RetunrList(map,where);
        }
     }
     É o seguinte na faculdade os professores falam que tudo que pertecem a SQL fica na camada DAO e a camada DAO apenas acessa o banco e tal.... fica mais organizado, mas minha duvida é a seguinte ai tem um exemplo que eu preciso consultar um banco especifico, isso se encaixaria como regra de negocio acredito eu!
     Na Classe BancoSERVICE precisei fazer uma verificação se código do banco for 001 consulta banco do Brasil("Isso foi só um exemplo"), só que eu tive que informar o where na camada SERVICE("BancoSERVICE") meio que saiu fora do conceito da camada DAO, por que é um comando SQL, se for seguir arrisca, teria que ficar na camda DAO, gostaria de saber se desta forma está correta se tem um jeito mais facil de resolver esse problema!
     
     Espero que eu tenha me expressado bem!
     
     Obrigado.
    terça-feira, 16 de outubro de 2012 17:48

Respostas

  • PS-

    Provavelmente o valor do banco que você queira consultar virá da camada de apresentação, que chama camada de negócios passando o ID do banco e na consulta SQL na DAO você informa o ID na consulta WHERE.

    *Sugiro que use StoredProcedures.


    É possível sim! Ponha isso na sua cabeça. É possível. "Steve Jobs"

    Eduardo Pires
    www.eduardopires.net.br

           

    terça-feira, 16 de outubro de 2012 23:36

Todas as Respostas

  • Seguindo a linha de seus instrutores:

    - A camada de negócio é a camada que valida a regra, e para isso chama um método de consulta da camada DAO.

    - A camada DAO faz o select dos dados e retorna um objeto (datatable, generics, enfim...)

    - A camada de negócio recebe o objeto como resultado da consulta e faz o tratamento dos dados com base na regra de negócio.

    (é nesse momento que você valida se o banco é 001 ou etc.)

    Dai para frente sua camada de nefócios retorna algo para camada de apresentação ou para a DAO fazer alguma atualização no banco.

    *** Você não pode furar a arquitetura, não pode chamar o BD de outra camada a não ser a DAO, cada uma tem sua responsabilidade, então você transita dados de uma para outra.


    É possível sim! Ponha isso na sua cabeça. É possível. "Steve Jobs"

    Eduardo Pires
    www.eduardopires.net.br

           

    terça-feira, 16 de outubro de 2012 23:34
  • PS-

    Provavelmente o valor do banco que você queira consultar virá da camada de apresentação, que chama camada de negócios passando o ID do banco e na consulta SQL na DAO você informa o ID na consulta WHERE.

    *Sugiro que use StoredProcedures.


    É possível sim! Ponha isso na sua cabeça. É possível. "Steve Jobs"

    Eduardo Pires
    www.eduardopires.net.br

           

    terça-feira, 16 de outubro de 2012 23:36
  • Muito Obrigado EduardoPires!

    Eu estava tentando deixar o SQL em apenas um método e nesse método de acordo com o que eu passava na camada de regra de negócio ele montava o SQL, então vou alterar para fazer essa validação na DAO mesmo.

    Muito Obrigado!

    quinta-feira, 18 de outubro de 2012 13:01