Entity Framework vs. nHibernate for Performance, Lernkurven-Gesamtfunktionen

8

Ich weiß, dass das schon mehrmals gefragt wurde und ich habe auch alle Beiträge gelesen, aber alle sind sehr alt. In Anbetracht der Fortschritte in den Versionen und Versionen hoffe ich, dass es neue Ansichten geben könnte.

Wir erstellen eine neue Anwendung für ASP.NET MVC und müssen diese mit einem ORM-Tool abschließen. Wir haben ORM vorher noch nie benutzt und sind ziemlich auf zwei heruntergekommen - nHibernate & amp; Entity Framework.

Ich brauche wirklich einen Rat von jemandem, der diese beiden Tools benutzt hat und auf Erfahrung basierend empfehlen kann. Es gibt drei Punkte, auf die ich mich konzentrieren möchte -

  1. Leistung
  2. Lernkurve
  3. Gesamtfähigkeit

Ihr Rat wird sehr geschätzt.

Beste Grüße,

    
hadi 20.05.2010, 13:45
quelle

4 Antworten

10

Ich würde Nhibernate verwenden. Ich würde Sharp Architecture als ein großartiges Framework abholen, das NHibernate, ASP.NET MVC und eine Reihe weiterer Open-Source-Tools zu einem kohärenten Ganzen zusammenfasst wird Ihnen eine solide architektonische Grundlage geben.

Nhibernate ist reifer als EF4. Es wird von der Gemeinschaft gut unterstützt. Solange Sie bereit sind, Ihre Hände von Zeit zu Zeit schmutzig zu machen, werden Sie es mögen. Die Unterstützung für LINQ ist momentan etwas schwach, aber es wird immer besser. Die Lernkurve ist nicht schlecht, aber Dinge wie Session-Management können zunächst etwas verwirrend sein. Einer der Gründe, warum ich Sharp Architecture mag, ist, dass sie all die Dinge von NHibernate, die Sie benötigen, und viele Anleitungen zur richtigen Verwendung in einem ASP.NET MVC-Projekt enthalten.

EF4 hat den MS-Prüfsiegel. Es ist jetzt ziemlich gut, aber immer noch hinter NHibernate. Es ist eine vollkommen gute Wahl und Sie werden viele Dokumente von MS, MS-Support und eventuell mehr Entwicklern finden, die sich mit den Details auskennen. Ich sollte auch erwähnen, dass die Sharp Architecture-Leute Unterstützung für EF4 zu ihrem Gesamtrahmen hinzufügen. Sie werden weiterhin NHibernate unterstützen, aber Sie können EF4 verwenden, wenn Sie möchten.

    
Tom Cabanski 20.05.2010, 13:51
quelle
2

Ich denke, es braucht mehr Zeit, um NHibernate zu lernen.

EF bietet grafischen Designer , leider hat NHibernate keinen generischen Designer. Übrigens ist es kein Problem. Wenn Sie domänengesteuert (DDD) gestalten, werden Sie zuerst Ihre Entitäten entwerfen und Sie interessieren sich nicht für die Datenbankstruktur (wie Sie es gewohnt sind), NHibernate wird das für Sie übernehmen.

EF 4 kam näher an NHibernate heran. Ich würde nicht mit EF 3.5 arbeiten, es fehlen viele Features.

Wenn Sie denken, dass NHibernate auf den ersten Blick zu kompliziert ist, können Sie mit Frameworks starten, die auf NHibernate basieren. ActiveRecords und Sharp Architect sind gute Beispiele.

AFAIR EF 3.5 unterstützt nur SQL Server 2000 . Es konnte die neuen Datentypen von SQL Server 2005 nicht verarbeiten. Ich habe keine Informationen zu EF 4, aber ich nehme an, dass es diese Verbesserungen unterstützt.

Wenn Sie NHibernate in echten Wortanwendungen verwenden, müssen Sie eine Infrastruktur erstellen . Z.B. Ich habe die Einheit von Arbeits- und Repository-Mustern implementiert, um Tests schreiben und Ebenen in meiner Anwendung erstellen zu können. Sie müssen dasselbe mit EF erwarten. Das Entfernen und Anhängen von Entitäten in EF 3.5 war keine leichte Sache, ich musste schwierige Erweiterungsmethoden schreiben, um Felder zu markieren, und so weiter. Ich hoffe, sie haben es in EF 4 gelöst. Es gibt kein Problem mit NHibernate.

Sie müssen keine HQL-Abfragen in NHibernate schreiben. Sie können den LINQ-Provider verwenden. Ich denke, es ist sehr wichtig. :)

Alles in allem NHibernate ist ein ausgereiftes Produkt mit guter Community- und kommerzieller Unterstützung . EF ist jung, wird aber von Microsoft stark unterstützt. Oh, und EF ist nur eine Microsoft-Sache, während Sie Ihr NHibernate-Wissen auch nach Java portieren können. Das zählt für dich.

    
artur02 20.05.2010 15:05
quelle
2

Ich versuche das zu untersuchen ... Nach dem Erstellen von Apps in beiden, ist NHibernate definitiv leistungsfähiger, aber es ist auch ziemlich klobig, wo EF sehr sauber ist. Und nach der Arbeit mit Rails / ActiveRecord sind beide im Vergleich sehr funktionsreich, also würde es definitiv funktionieren!

Ich habe bemerkt, dass NHibernate verfolgt, was es gerade ausgeführt hat, und wenn es nur eine Anweisung ausführt, wird es nicht erneut ausgeführt, so dass eine richtig gestaltete App minimale Datenbankanweisungen ausführt. Ich weiß, dass EF nicht gerade langsam ist, aber ich bin mir nicht sicher, ob es Aussagen und Ergebnisse auf die gleiche Weise zwischenspeichert. Für eine große App könnte dies einige Datenbankressourcen sparen!

Kurz gesagt, NHibernate für Funktionalität und Konfigurierbarkeit und EF 4.0 für Sauberkeit und eine schnelle Lernkurve. Außerdem sollte man EF in der nächsten Version erwarten, oder zwei sollten NHibernate in der Funktionalität überholen oder sogar übertreffen, so dass es sinnvoll sein kann, mit beiden vertraut zu sein.

    
Dean 25.07.2012 01:22
quelle
0

Sehen Sie sich das an Ссылка

    
Mohsen 23.07.2011 06:25
quelle