BD VS. C#

WILLVIDAL 14/02/2015 13:19:47
#444517
Boa tarde pessoal,

Sou novato em C# e estou estudando qual tecnologia utilizar em meus projetos, estava entre os bancos MSSQLServer e PostgreSQL e depois de alguma pesquisa optei pelo Postgres. Para o pessoal que já tem alguma experiência nisso, o que seria melhor utilizar ? NHibernate ou Entity com o postgres, me parece o entity é mais lento. Gostaria da opinião de quem já tem alguma experiência em C# coim Postgres e, se possível, indicar um bom material de estudo.

Att,
PROFESSOR 17/02/2015 18:13:51
#444576
Olá, WILLVIDAL

Sobre performance, é preciso saber antes qual o seu foco de comparação. Qualquer desenvolvimento que se dê com base em abstração sempre gera diminuição de performance em comparação com o acesso direto aos dados. E essa perda é maior ou menor considerando a complexidade do modelo de abstração.

Pessoalmente, eu prefiro a Microsoft Entity Framework porquê uso Visual Studio como IDE e com isso, não preciso [Ô]sair de casa[Ô] (Microsoft) por uma ORM.

No caso da Microsoft Entity Framework ou da NHibernate, ambas são modelos de abstração do tipo ORM, ou seja, que mantém o relacionamento entre as entidades. Em um estudo comparativo entre ambas, a NHibernate apresentou vantagem nas operações de carga de objetos por ID e exclusão de objetos, enquanto a Microsoft Entity Framework levou vantagem na gravação, na carga de entidades relacionadas e nas atualizações de dados. Há algum tempo, com o [Ô]Code First[Ô] FluentAPI, a Microsoft Entity Framework conseguiu ainda melhorar o desempenho na carga por ID, o que, em teoria, a tornaria [Ô]melhor[Ô] no quesito desempenho. A versão 6.0.2 inclui muitas melhorias, e não tenho muitas informações sobre a última versão da MHibernate, mas estou certo de que ela continua sem dever nada.

Ainda assim, na média, ambas possuem desempenho similar, independente do mecanismo de dados, mas, óbvio, visceralmente dependente da complexidade dos modelos.

Então, é sempre o seu modelo conceitual que terá o papel fundamental no desempenho final de sua aplicação. E tenha em mente, quando comparados os métodos de acesso direto aos dados e os métodos de abstração, onde há OOP sempre terá o desempenho menor, ainda que alguém lhe venda que não.
PEDROPIMENTEL 03/03/2015 13:27:22
#444902
Olá WILLVIDAL,

também sou iniciante em C#.
Recentemente iniciei um projeto e todo tratamento com meu BD estou fazendo na mão mesmo, com as classes do ADO.NET (SqlCommand, SqlConnection)

Quando iniciei não sabia da existência do Hibernate (e pra C# o NHibernate) e só agora com sua dúvida descobri o que é Entity.
Nunca coloquei nenhuma das duas em prática, porque como disse, sou iniciante e tenho muito pouco conhecimento.

Li sobre as duas frameworks em questão, posso estar enganado, mas o Entity me pareceu mais simples e dinâmico.
Se fosse pra eu começar meu projeto hoje, provavelmente escolheria Entity mesmo só para aprender por alta e poder colocar o projeto em ação, mas sem abrir mão de num futuro próximo aprender sobre NHibernate.

Não sei qual o nível de seu conhecimento e nem a complexidade do seu projeto, mas caso vc já tenha alguma base de NHibernate, acho válido colocá-lo em prática.
Muitas das vagas de Java tem como requisito Hibernate e deixar de aprendê-lo talvez não seja uma boa ideia.

Abraços.
Faça seu login para responder