Subsonic Vs NHibernate

stemmen
72

Wat is de consensus over wanneer een van deze tools ongunstig over naar de andere te gebruiken? Ik vind Subsonic erg handig in termen van het krijgen van dingen snel gedaan, maar op grote projecten heeft het de neiging niet op schaal, en de banden van uw domein model om uw database model. Dat is waar NHibernate komt in als het geeft je lichtgewicht POCOS die niets met uw database model zijn, maar de setup-tijd is veel langer.

De vraag is gesteld op 04/08/2008 om 17:29
bron van user
In andere talen...                            


15 antwoorden

stemmen
83

Ik krijg deze vraag veel gevraagd en eigenlijk komt het neer op hoeveel u wilt knoeien. Ik kan je niet vertellen hoe schadelijk reacties Chris Cyvas's RE SubSonic scaling zijn geweest - en ik heb het reageren op deze sindsdien :(.

De deal is - perf-wise, SubSonic schalen zeer mooi. In termen van groei project - een tool die u gebruikt uw aandacht vereisen. Zelfs NHibernate.

Ik schreef een post over hoe de Repository patroon met DI gebruiken (zoals je zou doen met NHIb of enig hulpmiddel voor die kwestie) met Subsonic 2.1:

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

Ook schreef ik een post op de prestaties van de subsonische:

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

Ik hoop dat dit helpt.

antwoordde op 12/09/2008 om 22:54
bron van user

stemmen
45

Ik zou Subsonic aanraden als je project werkt met de ActiveRecord opvatting dat de database is uw model. Je zult een klasse per tafel te krijgen en alles gewoon op magische wijze werkt. Uiteraard kunt u tweaken en overschrijven dingen, maar als u (of uw project) het fundamenteel oneens met de aanpak klasse per-table-, zou ik kijk naar NHibernate omdat het begint met de meer complexe (maar meer flexibel) benadering van het in kaart brengen van uw domein model aan uw database.

Als u gebruik maakt van een relatief eenvoudige database die onder uw controle (zoals in, kunt u kolommen te wijzigen zonder het te verzenden acht vormen om een ​​database divisie toezichtsbeoordeling board), zou ik aanraden te beginnen met Subsonic en de verhuizing naar NHibernate als SubSonic niet doet aan uw behoeften te voldoen.

antwoordde op 06/08/2008 om 22:47
bron van user

stemmen
31

Voor wat het waard is ... Ik heb de gelegenheid om beide technologieën gebruiken nogal een beetje meer, omdat deze vraag gehad. En ik moet blijven die, als deze technologieën u kiest zaken heel weinig. Zeker NHibernate kan uw bedrijf entiteiten zijn iets minder gekoppeld aan de database structuur, maar ik vind nog steeds dat er veel gelegenheden waar je nog moet buigen voor de wil van de database.

Naar mijn mening de enige echte manier om uw Domein Model volledig scheiden van uw database model is om je eigen te schrijven DTOS (in wezen POCOS ongeveer het passeren van gegevens), en vervolgens in kaart te brengen terug naar uw ORM van keuze in uw gegevens laag. Maar in de meeste gevallen, zal ik meer moeite dan de moeite waard deze aanpak.

antwoordde op 05/03/2009 om 10:23
bron van user

stemmen
13

Een beetje off topic, maar in dezelfde geest. Hebt u gekeken naar het kasteel ActiveRecord het is geschreven op de top van NHibernate en verwijdert de noodzaak om tijd het maken van XML-toewijzingen besteden van code aan de database. Net als NHibernate kunt u uw domein objecten te structureren als je wilt en later het genereren van een database schema van deze structuur.

Met behulp van ActiveWriter , een bijdrage geleverd tool, kunt u gemakkelijk in kaart uit uw database naar domein objecten.

antwoordde op 05/08/2008 om 06:07
bron van user

stemmen
9

U kunt overwegen om te kijken naar Vloeiend NHibernate; Het maakt het beheren van NHibernate een briesje. Ik weet niet zeker hoe moeilijk het zou zijn om een ​​bestaande schema overgang, maar als je een nieuwe applicatie aan het bouwen bent is het leuk om het domein model te definiëren en het genereren van de database in vrijwel elke DB server die u kunt bedenken. Na het lezen van de andere opmerkingen hier, ik denk dat Vloeiend NHibernate brengt NHibernate op gelijke voet met SubSonic voor het gemak van de configuratie.

antwoordde op 04/03/2009 om 21:17
bron van user

stemmen
7

Ik schreef een blog post onlangs over NET ORM die Subsonic in, en ActiveRecord heeft. Vanuit mijn ervaring het hangt af van wat het project aan het doen is, Subsonic werkt veel beter als je uit een SQL-achtergrond, maar NHibernate heeft meer ontop daarvan. ActiveRecord is goed voor kleinere projecten, ik ben niet van overtuigd dat het sneller bij grotere projecten dan vasthouden aan NHibernate.

antwoordde op 07/10/2008 om 11:10
bron van user

stemmen
7

Ik kan niet geven een goede vergelijking aangezien ik nog niet daadwerkelijk hebt gebruikt NHibernate aan een project, maar ik heb Subsonic gebruikt en zijn er erg blij mee geweest. Tot nu toe heb ik geen grote obstakels te raken bij het gebruik ervan.

Check deze post uit Rob Conery, een van de makers van SubSonic. Hij praat over hoe u uw Subsonic code los te koppelen van de rest van de app. Hij vermeldt ook het feit dat deze architectuur in staat zou stellen om later uit ruilen SubSonic voor een aantal andere toegang tot de gegevens laag, zoals NHibernate of LINQ to SQL.

Ik weet dat ik niet echt antwoord op uw vraag, maar ik hoop dat dit nog helpt.

antwoordde op 04/09/2008 om 20:25
bron van user

stemmen
5

Ik heb zowel geëvalueerd en ik denk dat het zou niet eerlijk zijn om een ​​over de ander raden zonder te begrijpen wat je doelen zijn. In uw vraag stelde u de verschillen goed en ik denk dat moet je beslissende factor zijn. Persoonlijk heb ik allebei gebruikt en zal blijven gebruiken, zowel afhankelijk van het project.

  • NHibernate is mijn keuze voor grootschaliger projecten, omdat het gebruik van lichtgewicht POCO's. Als ik ooit schakelen mijn ORM "Ik geloof" dat zou veel makkelijker om refactoren zijn.
  • Subsonic is mijn keuze als ik een kleinschaliger project. Ik ben van mening dat de prestaties wijs SubSonic schalen goed. Echter, voel ik me nauw verbonden met het omdat het zo is gegrift in mijn project. In kleinere project kan ik nog steeds zet hem uit, omdat de code base is zo klein en het is echt helpt me uitrukken code zoals geadverteerd.
antwoordde op 26/01/2009 om 14:37
bron van user

stemmen
4

Weer licht off-topic, maar ik zal de tweede Kasteel ActiveRecord - in plaats van gebruik te maken van de database als uw model (Subsonic benadering) of urenlang in XML spaghetti (NHibernate benadering) je gewoon plaats kenmerken van het model klassen.

U kunt zelfs ActiveRecord om de database schema te genereren voor je.

We hebben deze aanpak op een flink nu weinig projecten en de voordelen zijn als volgt:

  • Eenvoudig te upgraden pad naar NHibernate indien nodig in de toekomst
  • Ondersteuning voor eenvoudige erfenis modellen - bijvoorbeeld. Car -> Voertuig
  • Het schema genereert het meest waarschijnlijk is hoe je het hoe dan ook zou hebben gecreëerd, zodat u meer tijd besteden aan het bouwen van de app in plaats van zorgen te maken over het houden van uw model / db in sync.
antwoordde op 16/09/2008 om 13:15
bron van user

stemmen
4

Ik denk dat je vrij veel genageld het. Subsonic genereert code, zodat uw business objects zal een afspiegeling is van uw database structuur. NHibernate gebruikt mapping-bestanden die uw bedrijf objecten in kaart aan de database, zodat uw objecten kan worden gestructureerd zoals jij dat wilt.

Hoe groot van een project is dit? Zal er termijn ondersteuning op lange nodig? Wordt de kosteneffectiviteit van Subsonic gaan om eventuele schalingsproblemen compenseren?

antwoordde op 04/08/2008 om 18:12
bron van user

stemmen
3

Denk aan je team en de omvang van het project bij het overwegen van ActiveRecord.

In mijn ervaring, ActiveRecord is een abstractie op de top van NHibernate die gaat lekken als een zeef wanneer het proberen ingewikkelder scenario's.

Als u een matig tot zwaar ingewikkeld of niet eenvoudig schema, stok met NHibernate. U kunt opdelen het aan de buurt van perfectie.

De andere plaats waar je zou kunnen krijgen in de problemen is wanneer u een matig ingewikkelde vraag nodig. ActiveRecord verbergt vele uitvoeringen NHibernate ... maar je zult het nodig hebben voor een ingewikkelde vraag, die zeer moeilijk zal worden als je helemaal niet bekend zijn met HQL bent. Wees voorzichtig teamleden niet alleen hack weg bij de randen in plaats van het leren NHibernate en HQL.

antwoordde op 02/10/2008 om 20:26
bron van user

stemmen
3

We bootstrapped met subsonische en proberen nu om te evalueren of we gaan nu dat we op de pijnpunten van de subsonische schakelen naar nhibernate.

Onze andere optie is om een ​​aantal middenweg waar we, gebruik subsonische op te vragen en laden willekeurige objecten met hun "uit te voeren als getypte lijst" functionaliteit die een naam gebaseerd mapping doet off van een willekeurig LINQ stijl sql statement te maken. Of om te proberen en opnieuw een deel van het in nhibernate en refactoren de rest.

Dus ik zeg subsonische zinvol in kleine apps, maar onderhoud aan subsonische apps krijgt behoorlijk harige, we hebben vooral moeilijke tijden met overlappende validatie code en pre / post in de code gebeurtenissen geactiveerd. Voor een actief record patroon, subsonische is er zeker 80%, maar doet nog wat in een schilferige manier, en stopt u van het hebben van een echte controle over uw overervingshiërarchie, omdat elke klasse een tafel om terug naar die tafel te krijgen moeten erven.

antwoordde op 30/08/2008 om 07:18
bron van user

stemmen
2

Ik denk dat je moet vasthouden aan degene die je het beste kunt gebruiken. Het uiteindelijke doel is de productiviteit en goed presterende kwaliteit code. Als u weet dat Subsonic in en uit dan vasthouden aan het en als je weet dat NHibernate in de diepte vasthouden aan NHibernate. Dit is zeer subjectieve vraag. Je moet ook rekening houden met het feit dat wat uw teamleden hebben expertise. Als je goed in bent u in staat zullen zijn om gemakkelijk te onderhouden.

Ik heb grote projecten met behulp van SubSonic terwijl NHibernate is al bekend en op grote schaal gebruikt gezien.

De beslissing van het kiezen van ORM is niet alleen afhankelijk zijn van de ORM zelf.

antwoordde op 03/11/2009 om 06:52
bron van user

stemmen
2

Geniet van de impedantie Mismatch!

check this out

:)

Of niet. Als u wilt dat de prestaties, doe het zelf. Als u wilt dat het snel en gemakkelijk, ga met NHibernate en ActiveRecord. Als je van te doen alsof dat je eigenlijk weet wat er gaande is op toegang tot de gegevens niveau, gebruik NHibernate en zitten met XML de hele dag naar een veel te krijgen voor veel gaan ... Of gewoon ... err .. doe het zelf - ADO.Net FTW!

antwoordde op 08/02/2009 om 02:51
bron van user

stemmen
0

Het advies dat ik heb gekregen over het onderwerp is dat Subsonic niet opschalen om meer complexe scenario's en zo te behandelen als je naar beneden gaan die weg zul je eindigen met een baan proberen over te ruilen voor een meer geavanceerde ORM.

Ik ben dus meer geïnteresseerd in het gebruik NHibernate voor complexe gevallen, Kasteel Active Record voor eenvoudiger gevallen en ik ben een oogje op Vloeiend NHibernate die moet maken NHibernate in kaart brengen van een stuk gemakkelijker (vooral als het verdrag op basis van mapping-ondersteuning is verbeterd).

antwoordde op 25/10/2008 om 15:20
bron van user

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