Subsonic Vs NHibernate

stemmer
72

Hva er konsensus om når man skal bruke en av disse verktøyene adversed til den andre? Jeg finner Subsonic svært nyttig i forhold til å få ting gjort raskt, men på store prosjekter det har en tendens til ikke å skalere og sine bånd ditt domenemodell til databasemodellen. Det er der NHibernate kommer inn som det gir deg lette Pocos som ikke er relatert til din database modell, men setup tid er mye lengre.

Publisert på 04/08/2008 klokken 16:29
kilden bruker
På andre språk...                            


15 svar

stemmer
83

Jeg får spørsmål om dette spørsmålet mye og virkelig det kommer ned til hvor mye du ønsker å fele. Jeg kan ikke fortelle deg hvor skadelig Chris Cyvas kommentarer RE SubSonic skalering har vært - og jeg har vært å svare på disse siden den gang :(.

Avtalen er - perf-messig, SubSonic skalerer veldig pent. I forhold til prosjektet vekst - noen verktøy du bruker vil kreve din oppmerksomhet. Selv NHibernate.

Jeg skrev et innlegg om hvordan du bruker Repository mønster med DI (som du ville gjort med NHIb eller noen verktøy for den saks skyld) med SubSonic 2.1:

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

Jeg skrev et innlegg på resultatene av Subsonic:

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

Håper dette hjelper.

Svarte 12/09/2008 kl. 21:54
kilden bruker

stemmer
45

Jeg vil anbefale SubSonic hvis prosjektet fungerer med Active oppfatning at databasen er din modell. Du får én klasse per bord og alt bare magisk fungerer. Du kan selvfølgelig justere og overstyre ting, men hvis du (eller prosjekt) fundamentalt uenig med klassen-per-tabellen tilnærming, vil jeg se på NHibernate siden den starter med de mer komplekse (men mer fleksibel) tilnærming for å kartlegge din domenemodellen til databasen.

Hvis du bruker en relativt enkel database som er under din kontroll (som i, kan du endre kolonner uten å sende åtte skjemaer til en database divisjon forglemmelse Review Board), ville jeg anbefale å starte med SubSonic og flytte til NHibernate hvis SubSonic ikke møte dine behov.

Svarte 06/08/2008 kl. 21:47
kilden bruker

stemmer
31

For hva det er verdt ... Jeg har hatt muligheten til å bruke begge teknologiene ganske abit mer siden spør dette spørsmålet. Og jeg må bo som om disse teknologiene du velger saker svært lite. Sure NHibernate gjør at foretak til å være litt mindre koblet til din database struktur, men jeg fortsatt synes at det er mange tilfeller der du har fortsatt å bøye til vilje databasen.

Etter min mening den eneste sanne måten å fullstendig skille din Domain Model fra Database modellen er å skrive din egen DTOS (egentlig Pocos for bestått data rundt), og deretter kartlegge dem tilbake til ORM av valget i datalaget. Men i de fleste tilfeller, denne tilnærmingen vil meg mer stresset enn det er verdt.

Svarte 05/03/2009 kl. 09:23
kilden bruker

stemmer
13

Litt off topic, men i samme fotspor. Har du sett på Castle Active det er skrevet på toppen av NHibernate og fjerner behovet for å bruke tid på å lage XML kartlegginger fra kode til databasen. Som NHibernate kan du strukturere domenet objekter som du vil, og senere generere en database skjema fra denne strukturen.

Ved hjelp ActiveWriter , et bidro verktøyet kan du enkelt kart fra databasen til domene stedene.

Svarte 05/08/2008 kl. 05:07
kilden bruker

stemmer
9

Du kan vurdere å se på Flytende NHibernate; det gjør administrere NHibernate en lek. Ikke sikker på hvor vanskelig det ville være å gå over et eksisterende skjema, men hvis du bygger en ny søknad er det fint å definere domenemodellen og generere databasen i stort sett alle DB-server du kan tenke på. Fra å lese de andre kommentarene her, tror jeg Flytende NHibernate bringer NHibernate på linje med SubSonic for enkel konfigurasjon.

Svarte 04/03/2009 kl. 20:17
kilden bruker

stemmer
7

Jeg skrev et blogginnlegg nylig om NET Orms som har Subsonic i det, og Active. Fra min erfaring det avhenger av hva prosjektet gjør, Subsonic fungerer mye bedre hvis du kommer fra en SQL-bakgrunn, men NHibernate har mer ontop av det. Active er bra for mindre prosjekter, er jeg ikke overbevist om at det er raskere for større prosjekter enn å holde seg til NHibernate.

Svarte 07/10/2008 kl. 10:10
kilden bruker

stemmer
7

Jeg kan ikke gi en god sammenligning som jeg ikke har ennå faktisk brukes NHibernate på et prosjekt, men jeg har brukt SubSonic og har vært veldig fornøyd med det. Så langt har jeg ikke truffet noen store hindringer når du bruker den.

Sjekk ut dette innlegget fra Rob Conery, en av skaperne av SubSonic. Han snakker om hvordan du kan kople din SubSonic koden fra resten av programmet. Han nevner også at denne arkitekturen vil gjøre det mulig å senere bytte ut SubSonic for noen andre datatilgang lag som NHibernate eller LINQ til SQL.

Jeg vet jeg faktisk ikke svare på spørsmålet ditt, men jeg håper dette fortsatt hjelper.

Svarte 04/09/2008 kl. 19:25
kilden bruker

stemmer
5

Jeg har vurdert begge, og jeg tror det ville ikke være rettferdig å anbefale en over den andre uten å forstå hva dine mål er. I spørsmålet ditt uttalte du forskjellene godt, og jeg tror som må være den avgjørende faktoren. Personlig har jeg brukt begge, og vil fortsette å bruke både avhengig av prosjektet.

  • NHibernate er mitt valg for større prosjekter fordi bruk av lettvekts POCO tallet. Hvis jeg skulle noen gang slå ut min ORM "Jeg tror" dette ville være mye lettere å refactor.
  • SubSonic er mitt valg når jeg har en mindre skala prosjekt. Jeg tror at ytelsen kloke SubSonic skalerer godt. Men jeg føler meg tett sammen med det fordi det er så inngravert i mitt prosjekt. I mindre prosjekt kan jeg fortsatt bytte den ut fordi kodebasen er så liten og det virkelig hjelper meg rive ut kode som annonseres.
Svarte 26/01/2009 kl. 13:37
kilden bruker

stemmer
4

Igjen litt off-topic, men jeg vil andre Castle Active - istedenfor å bruke databasen som modell (Subsonic tilnærming) eller bruke timevis i XML spaghetti (NHibernate approach) du bare plass attributter på modellklassene.

Du kan også få Active å generere databaseskjema for deg.

Vi har brukt denne metoden på ganske mange prosjekter nå og fordelene er som følger:

  • Enkel oppgradering til NHibernate om nødvendig i fremtiden
  • Støtte for enkle arve modeller - f.eks. Bil -> Kjøretøy
  • Skjemaet den genererer er mest sannsynlig hvordan du ville ha skapt det likevel, slik at du kan bruke mer tid på å bygge programmet heller enn å bekymre deg for å holde din modell / db synkronisert.
Svarte 16/09/2008 kl. 12:15
kilden bruker

stemmer
4

Jeg tror du ganske mye spikret det. Subsonic genererer kode, slik at virksomhetens objekter vil være representative for din database struktur. NHibernate bruker kartlegging filer som kartforretningsobjekter i databasen slik at objekter kan være strukturert slik du vil.

Hvor stor av et prosjekt er dette? Vil det være langsiktig støtte som trengs? Er kostnadseffektivitet av Subsonic kommer til å oppveie eventuelle skaleringsproblemer?

Svarte 04/08/2008 kl. 17:12
kilden bruker

stemmer
3

Tenk på din team og prosjektets størrelse når de vurderer Active.

I min erfaring, er Active en abstraksjon på toppen av NHibernate som begynner å lekke som en sil når du prøver mer kompliserte scenarier.

Hvis du har en moderat til kraftig komplisert eller ikke-enkelt skjema, stokk med NHibernate. Du kan dele opp det til nær perfeksjon.

Det andre stedet du kan komme i problemer er når du trenger en moderat komplisert spørring. Active skjuler mye NHibernate implementering ... men du trenger det for en komplisert spørring, som vil bli veldig vanskelig hvis du er helt ukjent med HQL. Vær forsiktig gruppemedlemmer ikke bare hacke bort på kantene i stedet for å lære NHibernate og HQL.

Svarte 02/10/2008 kl. 19:26
kilden bruker

stemmer
3

Vi bootstrapped med Subsonic og prøver nå å vurdere om vi skal bytte til NHibernate nå som vi er på smertepunkter Subsonic.

Vår andre alternativet er å lage noen mellomting hvor vi bruker Subsonic til å søke og laste opp vilkårlige gjenstander med sine "utføre som skrev list" funksjonalitet som gjør et navn basert kartlegging av av en vilkårlig LINQ stil sql statement. Eller for å prøve og gjenskape noe av det i NHibernate og refactor resten.

Så jeg sier Subsonic er fornuftig i små apps, men vedlikehold på subsoniske apps blir ganske hårete, vi har spesielt harde tider med overlappende valideringskoden, og pre / post i kode utløste hendelser. For en aktiv posten mønster, er Subsonic definitivt 80% der, men gjør somethings i en eksentrisk måte, og stopper deg fra å ha noen reell kontroll over arvehierarkiet, siden hver klasse må arve et bord for å komme tilbake til det bordet.

Svarte 30/08/2008 kl. 06:18
kilden bruker

stemmer
2

Jeg tror du bør holde seg til en som du kan utnytte det beste. Det ultimate målet er produktivitet og god utfører kvalitet kode. Hvis du vet SubSonic ut og så holde seg til det, og hvis du vet NHibernate i dybden pinne til NHibernate. Dette er veldig subjektivt spørsmål. Du bør også vurdere det faktum at hva din team-medlem har kompetanse. Hvis du er god på det du vil være i stand til enkelt å vedlikeholde den.

Jeg har sett store prosjekter ved hjelp av SubSonic mens NHibernate er allerede kjent og brukes mye.

Beslutningen om å plukke ORM ikke utelukkende avhenger av ORM selv.

Svarte 03/11/2009 kl. 05:52
kilden bruker

stemmer
2

Omfavne Impedans Mismatch!

Sjekk ut dette

:)

Eller ikke. Hvis du ønsker ytelse, gjør det selv. Hvis du vil ha det raskt og enkelt, gå med NHibernate og Active. Hvis du liker å late som om du faktisk vet hva som skjer på datatilgang nivå, bruker NHibernate og sitte med XML hele dagen for å få en mange til mange går ... Eller bare ... err .. gjør det selv - ADO.Net FTW!

Svarte 08/02/2009 kl. 01:51
kilden bruker

stemmer
0

Rådene jeg har fått om emnet er at Subsonic ikke skalere opp til å håndtere mer komplekse scenarioer og så hvis du går ned den veien du vil ende opp med en jobb å prøve å bytte over til en mer avansert ORM.

Jeg er derfor mer interessert i å bruke NHibernate for komplekse saker, Castle Active Record for enklere saker, og jeg holder et øye med Flytende NHibernate som bør gjøre NHibernate kartlegge mye enklere (spesielt når konvensjonen basert kartlegging støtte er forbedret).

Svarte 25/10/2008 kl. 14:20
kilden bruker

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