none
camadas RRS feed

  • Pergunta

  • Olá amigos tudo bem?

     

    Estou iniciado em .Net mais especificamente em Asp.Net.

    Desenvolvi um exemplo de projeto com as seguintes camadas:

     

    Vou chamar de camada de propriedades. Me corrijam quanto ao nome se tiver errado.

     

    Code Snippet

    public class Fornecedores

    {

    private int codigo;

    private string razaosocial;

    private string cgccpf;

     

    public Fornecedores(int codigo, string razaosocial, string cgccpf)

    {

    this.codigo = codigo;

    this.razaosocial = razaosocial;

    this.cgccpf = cgccpf;

    }

     

    public int fcodigo

    {

    get

    {

    return codigo;

    }

    set

    {

    codigo = value;

    }

    }

    //Aqui segue os outros Gets e Sets dos outros atributos

    //...

    //...

    //...

     

    }

     

     

     

    Agora aqui a minha camada de negocio.

    Code Snippet

    public class ManipulaDados

    {

    SqlConnection strConexao = new SqlConnection(ConfigurationManager.ConnectionStrings["strconexaoBanco"].ConnectionString);

     

    public ManipulaDados()

    {

    }

    public void incluirRegistro(Fornecedores forn)

    {

    try

    {

    strConexao.Open();

    string sql = @"INSERT INTO FORNECEDOR(codigo, razaosocial, cgccpf) VALUES(@codigo, @razao, @cgc)";

     

    using (SqlCommand cmd = new SqlCommand(sql, strConexao))

    {

    cmd.Parameters.AddWithValue("@codigo", forn.fcodigo);

    cmd.Parameters.AddWithValue("@razao", forn.frazaosocial);

    cmd.Parameters.AddWithValue("@cgc", forn.fcgccpf);

    cmd.CommandType = CommandType.Text; //Tipo de comando executado, tipo texto

    cmd.ExecuteNonQuery();

    }

     }

    catch

    {

    //..................

    }

    finally

    {

    strConexao.Close();

    }

    }

     

     

     

    E finalmente na camada de apresentação, dentro do botão Salvar tem:

     

    Code Snippet

    ManipulaDados mfForn = new ManipulaDados();

    Fornecedores forn = new Fornecedores(int.Parse(txtcod.Text), txtnome.Text, txtcgc.Text); 

    mfForn.incluirRegistro(forn);

     

     

     

    Gostaria de saber a opinião deste tipo de estutura? As vantagens e desvantagens.

     

    Estou estudando sobre o Linq to Sql e Entity Framework ou Linq to Entity.

    No momento eu li mais artigos sobre o Linq to SQL, percebi que ele faz todo o trabalho pra mim na camada de dados, ou seja toda parte de dataset, conexão e etc,  e que sua sintaxe é bem reduzida e de facil entendimento, mas ele funciona exclusivamente com SQL.

    Enquanto que o Entity Framework é mais flexivel e pode trabalhar com diferentes bancos e posso usar os recursos que o Linq to Sql.

     

    Então lhes pergunto, o Entity Framework irá sobrepor o Linq to SQL?

    E é melhor usar uma uma ferrameta para ajudar a manipular os dados ou é melhor fazer toda a camada de dados no "braço" e ter um maior controle sobre a aplicação? posso confiar nessa ferramentas?

     

    desculpe pelo texto grande, mas é que são muitas dúvidas e estou tentando seguir uma linha de desenvolvimento, por isso conto com a ajuda de vocês.

     

    Desde já agradeço pela ajuda. 

     

    quinta-feira, 22 de janeiro de 2009 18:53

Respostas

Todas as Respostas

  • JrCesar,

    A moda das camadas é válida, mas quando bem aplicada.
    No caso você só dividiu o seu código em partes, o que configura o modelo anêmico descrito aqui por Martin Fowler.
    Quanto a camada de dados, o melhor é você usar algo que seja prático para você. O Linq To SQL (L2S), não esta recebendo atualizações por parte da MS, a equipe que agora pertence a equipe do Entity Framework, irá focar neste último.
    Mas existem diversas outras soluções, a Enterprise Library é uma por exemplo, que te facilita em alguns pontos e outros fica mais manual. Tudo vai depender do seu projeto.

    sexta-feira, 23 de janeiro de 2009 15:29
  • Olá Brandão tudo bem?

     

    Muito obrigado por ter me ajudado, é que estou começando agora então estou com duvida em algumas coisas.

     

    Por exemplo, quero construir um sistema web em 3 camadas, eu sei que tem as camadas de apresentação, de negocios e de dados. Pois então, como elaborar um bom projeto em camdas?

    Gostaria de ter um exemplo de estrutura em camadas.

    Quanto a camada de dados e que eu tenho lido é isso que você descreveu sobre o Linq e o Entity Framework, mas como o Enttity Framework está em desenvolvimento muitas pessoas estão reclamando.

    Para uma aplicação web você recomendaria na camada de dados o uso de DataSets, DataAdapter e etc..., como mostra no site do Macoratti http://www.macoratti.net/08/02/lnq_usp1.htm e na continuação deste artigo ele mostra o uso do Linq onde que eu começei a me interessar sobre o assunto http://www.macoratti.net/08/02/lnq_usp2.htm .

     

    O que você poderia me recomendar ao que diz respeito a camada de dados?

     

    Agradeço pela ajuda.

     

     

     

    "Eu tenho que ser melhor do que eu ontem"

    sexta-feira, 23 de janeiro de 2009 16:18
  • Para entender o por que de camadas leia MVC e Camadas, e depois as questões relativas ao modelo anêmico leia Fantoches e Evitando VOs e BOs, todos do Phillip Calçado.

     

    Quanto ao EF, ele esta finalizado no SP1, porém o funcionamento dele foi criticado pela comunidade, como você pode ler aqui, o time de desenvolvimento concordou com as observações e esta trabalhando na melhoria para a segunda versão do framework.

     

    Você tem que usar o que for útil para você, se EF for complicado, use DataSet; se DataSet for pesado, principalmente por se tratar de uma arquitetura Web, use POCO com a Enterprise Library.

    sexta-feira, 23 de janeiro de 2009 16:40
  •  

    Cesar,

     

    Existem vários fatores que influenciam na estrutura das suas camadas, podemos colocar como exemplo:

    • Comunicação (Remoting, Web Services ....)
    • Segurança
    • Várias interfaces (Web e Desktop)
    • e assim vai ....

    Cada aplicação tem as suas particularidades por isso é importante saber escolher o que vai usar, lembrando que isso tem que respeitar o prazo, custo e escabiliadde do projeto.

     

    Recomendo você dar uma olhada nesse guide da equipe p&p:

    Application Architecture for .NET: Designing Applications and Services

    http://msdn.microsoft.com/en-us/library/ms954595.aspx

     

    Para ter uma base de desenvolvimento recomendo que você baixe o código do PetShop desenvolvido em .Net disponibilizado pela microsoft.

     

    PetShop 3.0 .NET Sample Application

    http://www.microsoft.com/downloads/details.aspx?FamilyId=E2930625-3C7A-49DC-8655-A8205813D6DB&displaylang=en

     

    []'s

    sexta-feira, 23 de janeiro de 2009 19:19