Subsonic Vs NHibernate

stimmen
72

Was ist der Konsensus auf, wenn eines dieser Tools auf den anderen adversed zu benutzen? Ich finde Subsonic sehr nützlich in Bezug auf den Dinge immer schnell erledigt, aber bei großen Projekten neigt es nicht maßstäblich, und seine Beziehungen Ihr Domänenmodell zu Ihrem Datenbank-Modell. Das ist, wo Nhibernate kommen in, wie es Ihnen leichten POCOs gibt, die auf Ihr Datenbankmodell nicht verwandt sind, aber die Setup-Zeit ist viel länger.

Veröffentlicht am 04/08/2008 um 17:29
quelle vom benutzer
In anderen Sprachen...                            


15 antworten

stimmen
83

Ich bekomme diese Frage viel gefragt und es kommt wirklich darauf an, wie viel Sie Geige wollen. Ich kann Ihnen nicht sagen, wie schädlich Chris Cyvas Kommentare SubSonic Skalierung RE haben - und ich habe da :( auf diese jemals zu reagieren.

Der Deal ist - perf-weise, SubSonic sehr gut skaliert. In Bezug auf dem Projekt Wachstums - jedes Werkzeug Sie verwenden erfordert Ihre Aufmerksamkeit. Auch NHibernate.

Ich schrieb einen Beitrag, wie Sie die Repository-Muster mit DI verwenden (wie bei NHIb oder irgendeinem Werkzeug für diese Angelegenheit) mit SubSonic 2.1:

http://blog.wekeroad.com/blog/subsonic-writing-decoupled-testable-code-with-subsonic-2-1/

Ich schrieb auch einen Beitrag über die Leistung von Subsonic:

http://blog.wekeroad.com/blog/subsonic-scaling/

Hoffe das hilft.

Beantwortet am 12/09/2008 um 22:54
quelle vom benutzer

stimmen
45

Ich würde empfehlen, SubSonic, wenn Ihr Projekt mit der Active Ansicht funktioniert, dass die Datenbank Ihr Modell ist. Sie werden eine Klasse pro Tisch bekommen und alles funktioniert einfach magisch. Sie können natürlich zwicken und Dinge außer Kraft setzen, aber wenn Sie (oder Ihr Projekt) grundsätzlich mit dem Klasse-per-Tabelle Ansatz nicht einverstanden ist, ich NHibernate aussehen würde, da es mit dem komplexeren beginnt (aber flexibler) Ansatz der Abbildung Ihres Domänenmodell zu Ihrer Datenbank.

Wenn Sie eine relativ einfache Datenbank verwenden, die unter Ihrer Kontrolle ist (wie in, können Sie Spalten ändern, ohne acht Formen in eine Datenbank Abteilung Aufsicht Review Board senden), würde ich empfehlen, mit SubSonic beginnen und den Übergang zu NHibernate wenn SubSonic nicht der Fall ist entspricht deinen Bedürfnissen.

Beantwortet am 06/08/2008 um 22:47
quelle vom benutzer

stimmen
31

Für das, was ihren Wert ... Ich hatte die Gelegenheit, beiden Technologien zu verwenden, ganz abit mehr, da diese Frage. Und ich muss bleiben, die, wenn diese Technologien Sie Fragen sehr wenig Auswahl. Sicher NHibernate ermöglicht Ihre Geschäftseinheiten etwas weniger auf Ihre Datenbank-Struktur gekoppelt sein, aber ich finde immer noch, dass es viele Gelegenheiten, wo man noch auf den Willen der Datenbank zu beugen hat.

Meiner Meinung nach ist es der einzig wahre Weg , um Ihre Domain Model aus Ihrem Datenbank - Modell völlig zu trennen ist Ihr eigenes schreiben DTOS ( im Wesentlichen POCOs für Übergabe von Daten um), und sie dann auf Ihre ORM der Wahl in der Datenschicht Karte zurück. Aber in den meisten Fällen ist dieser Ansatz wird mir mehr Mühe als sein Wert.

Beantwortet am 05/03/2009 um 10:23
quelle vom benutzer

stimmen
13

Ein wenig off topic, aber in ähnlicher Weise. Haben Sie sah Castle Active es auf der geschrieben wird NHibernate und beseitigt die Notwendigkeit , Zeit mit der Erstellung von XML - Mappings von Code in die Datenbank zu verbringen. Wie NHibernate können Sie Ihre Domain - Objekte strukturieren , wie Sie wollen und später ein Datenbankschema aus dieser Struktur erzeugen.

Mit ActiveWriter , ein beigetragen Tool können Sie leicht aus Ihrer Datenbank Domain - Objekte abzubilden.

Beantwortet am 05/08/2008 um 06:07
quelle vom benutzer

stimmen
9

Sie können prüfen, bei Fluent NHibernate suchen; es macht die Verwaltung NHibernate ein Kinderspiel. Nicht sicher, wie schwierig es wäre ein vorhandenes Schema zu überführen, aber wenn Sie eine neue Anwendung Gebäude sind ist es schön, das Domänenmodell zu definieren und die Datenbank in so ziemlich jedem DB-Server erzeugen Sie sich vorstellen können. Aus der Lektüre hier die anderen Kommentare, ich glaube, Fluent NHibernate NHibernate gleichauf mit SubSonic für eine einfache Konfiguration bringt.

Beantwortet am 04/03/2009 um 21:17
quelle vom benutzer

stimmen
7

Ich schrieb einen Blog - Post vor kurzem über .NET ORMs , die in ihm Subsonic hat, und Active. Aus meiner Erfahrung hängt es davon ab , was das Projekt tut, Subsonic viel besser funktioniert , wenn Sie aus einem SQL - Hintergrund kommen aber NHibernate hat mehr ontop davon. Active für kleinere Projekte gut ist, ich bin nicht überzeugt , dass es für größere Projekte schneller ist als auf NHibernate kleben.

Beantwortet am 07/10/2008 um 11:10
quelle vom benutzer

stimmen
7

Ich kann nicht einen guten Vergleich geben, wie ich habe noch nicht wirklich NHibernate an einem Projekt verwendet, aber ich habe verwendet SubSonic und habe mit ihm sehr zufrieden. Bisher habe ich keine großen Hindernisse treffen, wenn es zu benutzen.

Schauen Sie sich diesen Beitrag von Rob Conery, einer der Schöpfer von SubSonic. Er spricht darüber , wie Ihr SubSonic Code aus dem Rest der App zu entkoppeln. Er erwähnt auch die Tatsache , dass diese Architektur , die Sie später ermöglichen würde SubSonic tauschen für eine andere Datenzugriffsschicht wie NHibernate oder LINQ to SQL.

Ich weiß, ich habe nicht wirklich Ihre Frage beantworten, aber ich hoffe, das hilft immer noch.

Beantwortet am 04/09/2008 um 20:25
quelle vom benutzer

stimmen
5

Ich habe beide ausgewertet und ich glaube, es wäre nicht fair übereinander zu empfehlen, ohne zu verstehen, was Ihre Ziele sind. In Ihrer Frage angegeben Sie die Unterschiede gut und ich glaube, braucht Ihr entscheidender Faktor zu sein. Persönlich habe ich beide verwendet und wird auch weiterhin sowohl für das Projekt je verwenden.

  • NHibernate ist meine Wahl für größere Projekte, weil seine Verwendung von leichten POCO. Wenn ich meine ORM war immer das Gerät, „Ich glaube,“ so viel einfacher wäre, Refactoring.
  • SubSonic ist meine Wahl, wenn ich einen kleineren Maßstab Projekt. Ich glaube, dass Leistung klug SubSonic skaliert gut. Allerdings fühle ich mich eng mit ihm verbunden ist, weil es so in meinem Projekt eingraviert ist. In kleinerem Projekt kann ich es immer noch wechseln, weil die Code-Basis so klein ist, und es hilft mir wirklich Code ausreißen wie in der Werbung.
Beantwortet am 26/01/2009 um 14:37
quelle vom benutzer

stimmen
4

Wieder etwas off-topic, aber ich werde zweit Castle Activerecord - anstatt die Datenbank als Modell (Subsonic - Ansatz) oder stundenlang im XML - Spaghetti (NHibernate Ansatz) unter Verwendung von einfach Sie Platz Attribute auf Ihren Modellklassen.

Sie können sogar erhalten Active das Datenbankschema zu generieren für Sie.

Wir haben diesen Ansatz auf ganz wenige Projekte jetzt und die Vorteile sind wie folgt:

  • Einfacher Upgrade-Pfad zu NHibernate wenn in der Zukunft erforderlich
  • Unterstützung für einfache Vererbung Modelle - zB. Auto -> Fahrzeug
  • Das Schema erzeugt es ist höchstwahrscheinlich, wie Sie es ohnehin geschaffen hätte, so können Sie mehr Zeit mit dem Aufbau der App verbringen, anstatt sich Gedanken über Ihr Modell / db synchron zu halten.
Beantwortet am 16/09/2008 um 13:15
quelle vom benutzer

stimmen
4

Ich glaube, Sie ziemlich viel es genagelt. Subsonic generiert Code, so dass Ihre Business-Objekte werden von Ihrer Datenbankstruktur reflektierend sein. nHibernate verwendet Mapping-Dateien, die Ihre Business-Objekte in der Datenbank abzubilden, so dass Ihre Objekte strukturiert werden können, wie Sie wollen.

Wie groß ein Projekt ist das? Wird es langfristige Unterstützung erforderlich sein? Ist die Kostenwirksamkeit des Subsonic geht alle möglichen Skalierungsprobleme zu kompensieren?

Beantwortet am 04/08/2008 um 18:12
quelle vom benutzer

stimmen
3

Betrachten Sie Ihr Team und Projektgröße bei Active Berücksichtigung.

Nach meiner Erfahrung Active ist eine Abstraktion oben auf NHibernate, die wie ein Sieb undicht werden, wenn kompliziertere Szenarien versuchen.

Wenn Sie ein mäßig bis stark kompliziert oder nicht-einfach-Schema haben, Stick mit NHibernate. Sie können es fast bis zur Perfektion Zerhäckseln.

Der andere Ort, den Sie in Schwierigkeiten geraten könnte, ist, wenn Sie eine mäßig komplizierte Abfrage benötigen. Active verbirgt sich eine Menge NHibernate Implementierung ... aber Sie werden es für eine komplizierte Abfrage benötigen, was sehr schwierig sein wird, wenn Sie mit HQL völlig fremd sind. Seien Sie vorsichtig, Teammitglieder hacken nicht nur an den Rändern entfernt statt NHibernate und HQL des Lernens.

Beantwortet am 02/10/2008 um 20:26
quelle vom benutzer

stimmen
3

Wir Bootstrap mit Subsonic und versuchen nun zu beurteilen, ob wir nhibernate jetzt wechseln gehen, dass wir bei den Schmerzpunkten Unterschall sind.

Unsere andere Möglichkeit ist es, einige Mittelwege zu schaffen, in dem wir unterschall zum Abfragen und beliebige Objekte mit ihrer „Ausführen als typisierte Liste“ -Funktionalität zu laden, die einen Namen einer beliebigen Linq Stil SQL-Anweisung tut basierten Mapping-off. Oder, um zu versuchen und einen Teil davon in nhibernate und Refactoring den Rest neu zu erstellen.

Also sage ich Unterschall macht Sinn, in kleinen Anwendungen, aber die Wartung auf Unterschall apps wird ziemlich behaart, wir haben besonders harte Zeiten mit überlappenden Validierungscode und Pre / Post in Code Ereignisse ausgelöst. Für ein Active Record, unterschall ist auf jeden Fall 80% da, aber tut Somethings in schuppenartiger Weise und hält Sie davon ab, eine wirkliche Kontrolle über die Vererbungshierarchie, da jede Klasse einen Tisch zu dieser Tabelle, um wieder erben müssen.

Beantwortet am 30/08/2008 um 07:18
quelle vom benutzer

stimmen
2

Ich glaube, Sie zu einem festzuhalten, die Sie am besten nutzen können. Das ultimative Ziel ist die Produktivität und mit guter Leistung Qualitätscode. Wenn Sie in SubSonic kennen und aus dann dabei bleiben, und wenn Sie NHibernate in der Tiefen Stick NHibernate wissen. Dies ist sehr subjektive Frage. Sie sollten auch die Tatsache, dass das, was Ihr Team-Mitglied ist, mit Know-how mit. Wenn man es gut sind Sie in der Lage sein, um es leicht zu pflegen.

Ich habe große Projekte gesehen SubSonic mit der Erwägung, dass NHibernate bereits bekannt ist und weit verbreitet.

Die Entscheidung der Kommissionierung ORM nicht allein auf die sich ORM abhängen.

Beantwortet am 03/11/2009 um 06:52
quelle vom benutzer

stimmen
2

Umfassen Sie die Impedance Mismatch!

check this out

:)

Oder nicht. Wenn Sie die Leistung wollen, do it yourself. Wenn Sie es schnell und einfach wollen, gehen Sie mit NHibernate und Active. Wenn Sie wie die vorgeben, dass Sie wirklich wissen, was auf Datenzugriffsebene los ist, verwenden NHibernate und sitzen mit XML den ganzen Tag, um eine viele zu viele bekommen gehen ... Oder ... err .. do it yourself - ADO.Net FTW!

Beantwortet am 08/02/2009 um 02:51
quelle vom benutzer

stimmen
0

Der Rat, den ich zu dem Thema bekommen habe, ist, dass Subsonic Scale-up nicht komplexere Szenarien zu handhaben und so, wenn Sie diesen Weg gehen Sie mit einem Job am Ende dann versuchen, zu einem fortgeschritteneren ORM zu vertauschen.

Ich bin also mehr daran interessiert, mit NHibernate für komplexe Fälle, Castle Active Record für einfachere Fälle und ein Auge bin halten auf Fluent NHibernate, die NHibernate Mapping viel einfacher (vor allem, wenn die Konvention basierte Mapping-Unterstützung verbessert wird) machen sollte.

Beantwortet am 25/10/2008 um 15:20
quelle vom benutzer

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more