none
Arquitetura de Acesso a Dados RRS feed

  • Discussão Geral

  • Pessoal,

    Sei que este assunto já foi discutido vastamente, mas apenas lendo as dicussões aqui do Fórum não consegui tomar uma decisão ainda.
    Estou envolvido em um projeto de médio porte e como de costume nos projetos de desenvolvimetno de software, não temos tempo hábil para desenvolver da forma como gostaríamos.
    Estou em busca de opiniões que possam me ajudar a decidir qual é seria a forma mais produtiva de desenvolver a camada de persistencia atualmente, levando em conta que nunca tivemos contato com nenhum framework de ORM a não ser o Enterprise Library(não sei se pode ser considerado um Framework).

    Compensa utilizar NHibernate se o cronograma está bem apertado? Ou aprender o Entity Framework?

    Nesta condição, qual seria a melhor opção na opinião de vcs?

    Muito obrigado pela força!
    quarta-feira, 20 de maio de 2009 19:09

Todas as Respostas

  • Fábio,

    NHibernate possui uma curva de aprendizado maior do que Entity Framework.
    Com pouco tempo hábil e sem um contato anterior com NH, o EF me parece uma opção menos arriscada.

    Acredito que vale a pena investir neste ou em algum outro ORM, pois certamente reduzirá o tempo que seria utilizado com acesso a dados na mão, além de melhorar a qualidade do código.

    Faço apenas a ressalva de que ORM é o caminho mais produtivo, mas não necessariamente o mais fácil.

    Se optar por um ORM lembre-se de verificar a compatibilidade com banco de dados. Se a demada for apenas de SqlServer não tem erro.
    Rafael Noronha
    Software Developer
    quarta-feira, 20 de maio de 2009 22:17
  • Apertado é a situação de 90% dos cronogramas. A questão é: quanto de apertado?
    Além disso, qual o perfil do time?
    Qual o tempo do projeto?
    Qual o tamanho do projeto?

    EF vai te atender em alguns casos, e é mais rápido de aprender.
    NH vai te atender em bem mais casos, e demora mais pra aprender.

    Sem um cenário mais claro fica dificil opinar.
    Giovanni Bassi, Microsoft MVP, MCSD, MCPD, CSM, Arquiteto de software - http://www.giovannibassi.com
    quarta-feira, 20 de maio de 2009 23:52
    Moderador
  • Somos em 2 desenvolvedores, nunca desenvolvemos formalmente em um framework de ORM, apenas utilizamos o Enterprise Library.
    O prazo é de cerca de 1 mes para implementar um sistema de pedido de serviços e produtos, similar a uma loja virtual.
    Já temos toda a analise orientada a objetos pronta, junto com o diagrama de classes, e agora vamos iniciar a fase de codificação, daí as dúvidas sobre a camada de persistencia.

    Quais critéios vcs utilizam pra definir um projeto como grande, medio ou pequeno?

    Técnicamente falando, vamos utilizar ASP.NET 2.0, com banco de dados SQL Server 2005, e existirá ainda segundo banco legado em 2000.

    Eu acredito que NH não seria a melhor opção para o momento, uma vez que a curva de aprendizado é mais demorada, e este framwork abrange muito mais que o necessário para minha aplicação, que ao meu ponto de vista é simples pois na sua maioria são interações com um único banco de dados Sql Server.

    quinta-feira, 21 de maio de 2009 11:19
  • Fabio,
    Então sua resposta já está dada!
    É isso mesmo, um mês é pouco se você não vê espaço para investir no conhecimento. NH vai exigir este investimento.
    Agora.. um mês... é muito pouco para um projeto deste! Depois me conta se deu para atender?
    []!
    Giovanni Bassi, Microsoft MVP, MCSD, MCPD, CSM, Arquiteto de software - http://www.giovannibassi.com
    quinta-feira, 21 de maio de 2009 21:20
    Moderador
  • 1 mes é pouco pra qualquer coisa.

    Se voce achar que PODE atingir a meta nesse periodo, usa o mais simples. 
    Mas nao se esqueca: Sacrificar arquitetura por conta de prazo pode significar fazer duas vezes.

    Se da pra atingir a meta e não houver requisitos de ORM, ( o Giovanni vai querer me bater. rs ) mas usa DataSet ou ADO.NET puro. 

    Se o problema for so acesso a dados ambos vao te atender bem. Se voce quiser realmente desenvolver seu sistema orientado a objetos, voce ainda pode usar o ADO.NET puro e o Pattern Repository http://www.martinfowler.com/eaaCatalog/repository.html. Da uma pesquisada que vale a pena. "Manutencao muito melhor".

    Outra alternativa é o framework da Castle para Active Record: http://www.castleproject.org/activerecord/index.html
    Com ele vc usa nhibernate mas com uma curva "MEGA menor". E é um excelente framework de persistencia com nhibernate.


    sábado, 23 de maio de 2009 18:13
  • É verdade, o AR da Castle tem uma produtividade bem legal.
    E nada contra Dataset e Comamnds. Aliás, só a favor. O único problema é facilidade de manutenção.
    Giovanni Bassi, Microsoft MVP, MCSD, MCPD, CSM, Arquiteto de software - http://www.giovannibassi.com
    segunda-feira, 25 de maio de 2009 05:26
    Moderador