Subsonic Vs NHibernate

hlasů
72

Jaký je konsenzu o tom, kdy použít jeden z těchto nástrojů adversed na druhou? Považuji Subsonic velmi užitečné, pokud jde o získání něco udělat rychle, ale na velké projekty mají tendenci není v měřítku, a její vazby model domény modelu databáze. Že je místo, kde přichází v NHibernate protože vám dává lehké Pocos, které nesouvisí s modelu databáze, avšak nastavení času je mnohem delší.

Položena 04/08/2008 v 17:29
zdroj uživatelem
V jiných jazycích...                            


15 odpovědí

hlasů
83

Já si tuto otázku hodně a opravdu jde o to, kolik chcete manipulovat. Nemohu vám říct, jak škodlivé komentáře Chrise Cyvas re podzvukových měřítka byli - a byl jsem reagovat na ně od té doby :(.

Dohoda je - perf-moudrý, podzvukový váhy velmi pěkně. Z hlediska růstu projektu - každý nástroj používáte bude vyžadovat vaši pozornost. Dokonce NHibernate.

Napsal jsem příspěvek o tom, jak používat úložiště vzor s DI (stejně jako u NHIb nebo jakéhokoliv nástroje na to přijde) s podzvukový 2,1:

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

Také jsem napsal příspěvek na výkon podzvukových:

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

Snad to pomůže.

Odpovězeno 12/09/2008 v 22:54
zdroj uživatelem

hlasů
45

Doporučoval bych podzvukových pokud váš projekt pracuje s názorem, ActiveRecord, že databáze je váš model. Dostanete jednu třídu na stůl a vše jen zázrakem funguje. Samozřejmě si můžete vyladit a přepsat věci, ale pokud jste (nebo váš projekt) zásadně nesouhlasí s přístupem class-per-tabulky, tak bych se podívat na NHibernate protože začíná složitější (ale pružnější) přístupu mapování vašich model domény do databáze.

Pokud používáte poměrně jednoduchou databázi, která je pod kontrolou (jak v, můžete změnit sloupce bez odeslání osm formulářů do divize databáze dohledu etickou komisí), doporučoval bych počínaje podzvukovou a pohybuje se NHibernate pokud podzvukový není vyhovovat vašim potřebám.

Odpovězeno 06/08/2008 v 22:47
zdroj uživatelem

hlasů
31

Z jakého své jmění ... Měl jsem možnost používat obě technologie docela abit víc, protože touto otázkou. A musím zůstat, která v případě těchto technologií zvolíte záleží jen velmi málo. Sure NHibernate umožňuje vaše podnikatelské subjekty, aby bylo o něco méně spojený s databázové struktuře, ale přesto jsem zjistil, že existuje mnoho příležitostí, kde si ještě muset ohýbat k vůli databáze.

Podle mého názoru je jediná správná cesta, aby to zcela oddělit svůj doménový model od modelu databáze je napsat svůj vlastní DTO (v podstatě Pocos pro předávání dat kolem), a pak mapovat zpět do ORM volby ve vaší datové vrstvy. Ale ve většině případů se tento přístup bude mi víc potíží, než je jeho hodnota.

Odpovězeno 05/03/2009 v 10:23
zdroj uživatelem

hlasů
13

Trochu mimo téma, ale v podobném duchu. Už jste se podíval na zámku ActiveRecord je napsáno v horní části NHibernate a odstraňuje nutnost trávit čas vytváření mapování XML z kódu do databáze. Stejně jako NHibernate můžete uspořádat své domény objekty, jak chcete, a následně vygenerovat schéma databáze z této struktury.

Používání ActiveWriter , je přispěl nástroj, můžete snadno map z databáze na objekty domény.

Odpovězeno 05/08/2008 v 06:07
zdroj uživatelem

hlasů
9

Můžete zvážit při pohledu na Fluent NHibernate; to dělá řídícímu NHibernate hračkou. Nejste si jisti, jak těžké by bylo, aby přechod existující schéma, ale když stavíte nové aplikace je fajn definovat model domény a vytvářet databáze v skoro jakémkoliv serveru DB na co si vzpomenete. Odtud čtení další připomínky, myslím, Fluent NHibernate přináší NHibernate na stejné úrovni s podzvukovou pro snadnou konfiguraci.

Odpovězeno 04/03/2009 v 21:17
zdroj uživatelem

hlasů
7

I napsal blogu nedávno o .NET ORMS která má Subsonic v něm, a ActiveRecord. Z vlastní zkušenosti vím, že záleží na tom, co je projekt dělá, Subsonic funguje mnohem lépe, pokud pocházejí z SQL pozadí, ale NHibernate má více tý z nich. ActiveRecord je vhodný pro menší projekty, nejsem přesvědčen o tom, že je to rychlejší, u větších projektů, než se držet NHibernate.

Odpovězeno 07/10/2008 v 11:10
zdroj uživatelem

hlasů
7

Nemohu dát dobré srovnání, jak jsem dosud skutečně použitého NHibernate na projektu, ale jsem použil podzvukový a byli s ním velmi spokojen. Zatím jsem se při jeho použití hit žádné zásadní překážky.

Podívejte se na tento příspěvek z Rob Conery, jeden z tvůrců podzvukových. Mluví o tom, jak oddělit svou podzvukový kód od zbytku aplikace. Dokonce se zmiňuje o tom, že tato architektura by vám umožní později vyměnit podzvukových pro jinou datovou vrstvu jako NHibernate nebo LINQ to SQL.

Vím, že jsem nebyl ve skutečnosti odpověď na vaši otázku, ale já doufám, že to ještě pomůže.

Odpovězeno 04/09/2008 v 20:25
zdroj uživatelem

hlasů
5

I vyhodnotili jak a věřím, že by to nebylo fér se Vám jeden přes druhého, aniž by pochopení toho, co jsou vaše cíle. Ve vaší otázce dobře uvedl rozdíly a jsem přesvědčen, že musí být vaše rozhodujícím faktorem. Osobně jsem používal oba a bude i nadále používat jak v závislosti na projektu.

  • NHibernate je moje volba pro projekty ve větším měřítku, protože její využití lehký POCO je. Kdybych měl někdy přejít na můj ORM „Domnívám se,“ to by bylo mnohem jednodušší refaktorovat.
  • Podzvukových je moje volba, když mám projekt v menším měřítku. Domnívám se, že výkon moudrý podzvukovou váhy dobře. Nicméně se domnívám, pevně spojený s ním, protože je tak vyryto v mém projektu. V menším projektu ještě mohu přepnout, protože kód základna je tak malý, a to opravdu pomáhá mi vytrhnout kód jak inzeroval.
Odpovězeno 26/01/2009 v 14:37
zdroj uživatelem

hlasů
4

Opět mírně off-topic, ale budu druhý Castle ActiveRecord - spíše než s využitím databáze jako model (Subsonic přístup), nebo trávit hodiny v XML špagety (NHibernate přístup) jednoduše atributů místo na modelu tříd.

Můžete dokonce získat ActiveRecord na generování schématu databáze pro vás.

Použili jsme tento přístup na poměrně málo projektů nyní a výhody jsou následující:

  • Snadná možnost upgradu na NHibernate v případě potřeby v budoucnu
  • Podpora jednoduchých modelů dědičnosti - např. Car -> Vehicle
  • Schéma generuje je s největší pravděpodobností, jak byste si přesto vytvořili to, takže můžete strávit více času budování aplikací spíše než starostí o udržení svého modelu / db synchronizované.
Odpovězeno 16/09/2008 v 13:15
zdroj uživatelem

hlasů
4

Myslím si, že do značné míry přibitý. Podzvukové vygeneruje kód, takže vaše obchodní objekty budou odrazem databázové struktuře. NHibernate používá mapování souborů, které mapují své podnikatelské objekty do databáze, takže vaše objekty mohou být strukturovány jak se vám zlíbí.

Jak velký projekt, je to? Bude existovat dlouhodobá podpora zapotřebí? Je efektivita nákladů podzvukového bude kompenzovat případné problémy měřítka?

Odpovězeno 04/08/2008 v 18:12
zdroj uživatelem

hlasů
3

Vezměme si svůj tým a velikost projektu při zvažování ActiveRecord.

Podle mých zkušeností ActiveRecord je abstrakce na vrcholu NHibernate že začne unikající jako síto, když se snaží složitější scénáře.

Pokud máte mírně až silně komplikované nebo non-jednoduché schéma, držet se NHibernate. Můžete rozčlenit do blízké dokonalosti.

Druhým místem, které by vás mohly dostat do problémů je, když budete potřebovat mírně komplikovaný dotaz. ActiveRecord skrývá spoustu realizace NHibernate to ... ale vy ji budete potřebovat pro komplikovaný dotaz, který se stane velmi obtížné, pokud jste zcela obeznámeni s HQL. Dávejte pozor, členové týmu nemají prostě proniknout dál na okrajích místo učení NHibernate a HQL.

Odpovězeno 02/10/2008 v 20:26
zdroj uživatelem

hlasů
3

bootstrapped jsme se podzvukové a nyní se snaží posoudit, zda chceme přejít na NHibernate teď, že jsme v místech bolesti v podzvukové.

Naše Druhou možností je vytvořit nějakou střední cestu, kde používáme podzvukový dotazovat a naložit libovolné objekty s jejich „spustit jako zadaný seznam“ funkce, která dělá mapování založené na název off libovolného LINQ stylu příkazu SQL. Nebo aby se pokusila obnovit některé z nich v NHibernate a refactor zbytek.

Tak říkám podzvukové smysl v malých aplikacích, ale údržba podzvukových aplikací dostane docela chlupatý, máme zejména těžké časy s přesahem ověřovací kód, a pre / post v kódu spustí události. Pro aktivní záznam vzoru, podzvukové je tam určitě 80%, ale dělá něco v šupinovitý způsobem, a zastaví vás od mít žádnou skutečnou kontrolu nad vaší hierarchii dědičnosti, protože každá třída musí dědit tabulku dostat se zpátky do tabulky.

Odpovězeno 30/08/2008 v 07:18
zdroj uživatelem

hlasů
2

Věřím, že byste se měli držet ten, který můžete využít to nejlepší. Konečným cílem je produktivita a dobrá kvalita výkonnější kód. Pokud víte, podzvukový dovnitř a ven pak držet se ho, a pokud víte, NHibernate do hloubky holí do NHibernate. To je velmi subjektivní otázka. Také byste měli vzít v úvahu skutečnost, že to, co váš tým-člen mají zkušenosti s. Pokud jste dobrý na to budete moci snadno udržovat.

Viděl jsem velké projekty s využitím podzvukový, zatímco NHibernate již známé a široce používán.

Rozhodnutí vychystávání ORM není závislý pouze na samotném ORM.

Odpovězeno 03/11/2009 v 06:52
zdroj uživatelem

hlasů
2

Obejmout Impedance Neshoda!

Koukni na tohle

:)

Nebo ne. Pokud chcete, výkon, to udělat sám. Pokud se chcete rychle a snadno, jít s NHibernate a ActiveRecord. Máte-li rádi předstírat, že jste skutečně vědět, co se děje na úrovni přístup k datům pomocí NHibernate a sedět s XML celý den dostat mnoho mnoho děje ... Nebo jen ... ehm .. to udělat sami - ADO.Net FTW!

Odpovězeno 08/02/2009 v 02:51
zdroj uživatelem

hlasů
0

Rad jsem se dostal na toto téma je, že Subsonic není měřítko až zvládnout složitější scénáře, a tak když jdete touto cestou, budete skončit s prací se snaží vyměnit více než na pokročilejší ORM.

Jsem tím větší zájem o využití NHibernate pro komplexní případy, zámek Active Record pro jednodušší případy a jsem dávat pozor na Fluent NHibernate který by měl NHibernate mapování mnohem jednodušší (zvláště poté, co podpora mapování na základě konvence je zlepšený).

Odpovězeno 25/10/2008 v 15:20
zdroj uživatelem

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