2009-07-20 7 views
6

Wer arbeitet hier mit Subsonic3 und Entity Framework, wer kann mir die Vor- und Nachteile sagen? Dies ist mein erstes Mal versucht, diese zu versuchen. Subsonic lässt sich einfach als Entity Framework einrichten. Ich bin nicht sicher, ob Entity Framework mit anderen Datenbanken wie SubSonic wie MySql PGsql usw. funktioniert? Ich habe diesen Beitrag (http://www.timacheson.com/Blog/2009/jun/entity_framework_vs_subsonic) gelesen, der überzeugend genug ist, um Entity Framework über SubSonic zu wählen. Aber ich wollte eine zweite Öffnung.Subsonic 3 VS Entity Framework

+2

Tims Benchmarks sind keine typischen Perf-Tests - es dauert nicht lange, bis SubSonic geladen wird. http://blog.wekeroad.com/subsonic/subsonic-scaling/ –

Antwort

17

Nun, diese beiden sind ganz andere Bestien!

Subsonic 3 ist ein großartiges Werkzeug, um einfach und leicht eine Datenbankstruktur 1: 1 in Objektklassen zu mappen, wobei jede Klasse eine exakte Darstellung der Tabelle in der zugrunde liegenden Datenbank ist (wie bei Linq- zu-SQL auch).

Entity Framework hingegen zielt auf viel komplexere Szenarien ab, bei denen Ihr Domänen- oder Objektmodell (Ihre Klassen) nicht notwendigerweise 1: 1 auf Datenbanktabellen abgebildet wird. Aus diesem Grund gibt es in der EF eine Trilogie von XML-Dateien - eine beschreibt die konzeptionelle Ebene (Ihre Domänenobjekte), eine die Speicherebene (das Datenbanklayout) und die Zuordnung zwischen diesen beiden.

IMHO, Subsonic 3 und Linq-to-SQL sind ideal für schnelle, kleine bis mittelgroße Projekte, bei denen Ihre Datenbank flexibel genug ist, um sie bei Bedarf zu ändern . EF glänzt in großen Unternehmensanwendungen, in denen Ihre Datenbankebene möglicherweise in Stein gemeißelt ist und Sie sie nicht ändern können - oder Ihre App muss "überleben", selbst wenn sich die Undering-Datenbank ändert.

Völlig andere Bestien - meiner Meinung nach ein völlig anderes Publikum.

Marc

PS: Ich frage mich, ob Tim wirklich Subsonic 3 in diesem Vergleich verwendet wurde, und was genau er tat. Mein Bauchgefühl wäre gewesen, dass EF der "größere" Overhead wäre und somit etwas weniger performant (aber flexibler und in Enterprise-Szenarien Gold wert, selbst wenn man etwas Leistung dafür opfert).

+0

Danke für die tolle Antwort. – Shuaib

+0

Weiter zu deinem PS sagt der Artikel "Subsonic 2.1 (ähnliche Ergebnisse produziert mit 3.0)". Wie Sie, ich hätte gedacht, dass der leichtere SubSonic wäre schneller gewesen. Und ich weiß, dass ich etwas Leistung mit SS vs Basic-Codierung verschenke, aber die Flexibilität ist es definitiv wert. – kevinw

3

Falls dies hilft, habe ich in meinen Benchmarks Subsonic 2.1 (wie angegeben) verwendet und Datenzugriffsschichten in einem Szenario mit moderater Last (Methodologie wie angegeben) verglichen. Ich habe Code zur Verfügung gestellt, so dass mein Test einfach repliziert werden kann.

Wenn Sie das System laden und die Bedingungen in einer Webanwendung während der Verwendung reproduzieren, zeigt EF eine deutlich bessere Leistung. Belastungstests der gesamten Webanwendung bestätigen dies. In komplexeren Tests können die Optimierungsfunktionen von EF wie Lazy-Loading gegenüber Subsonic noch größere Leistungsvorteile bieten.

Wenn Sie einzelne Datenzugriffsvorgänge vergleichen, z. In einem einfachen Komponententest scheint Subsonic schneller zu sein. Insbesondere wurde Subsonic schneller initialisiert.

Ich würde Fluent NHibernate oder Entity Framework empfehlen, wenn Leistung eine Schlüsselüberlegung ist.