Subsonic Vs NHibernate

głosy
72

Jaki jest concensus na kiedy używać jednego z tych narzędzi adversed do drugiego? Uważam Subsonic bardzo przydatna w warunkach coraz rzeczy zrobić szybko, ale przy dużych projektach nie ma tendencję do skalowania i jej więzi modelu domeny do modelu bazy danych. To tam Nhibernate przychodzi ponieważ daje lekkie Poços które są niezwiązane z modelu bazy danych, ale czas instalacji jest o wiele dłuższa.

Utwórz 04/08/2008 o 17:29
źródło użytkownik
W innych językach...                            


15 odpowiedzi

głosy
83

I zadawane to pytanie dużo i naprawdę sprowadza się do tego, jak dużo chcesz bawić. Nie mogę powiedzieć, jak szkodliwe komentarze Chris Cyvas w RE poddźwiękowych skalowanie zostały - a ja już odpowiadać na te odkąd :(.

Umowa jest - perf-mądry, SubSonic Wagi bardzo ładnie. Pod względem wzrostu projektu - Każde narzędzie używasz wymaga twojej uwagi. Nawet NHibernate.

Napisałem post na temat korzystania z repozytorium deseń z DI (tak jak z NHIb lub dowolnego narzędzia dla tej sprawy) z poddźwiękowych 2.1:

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

Ja również wypowiedział się na wydajność poddźwiękowych:

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

Mam nadzieję że to pomoże.

Odpowiedział 12/09/2008 o 22:54
źródło użytkownik

głosy
45

Polecam SubSonic jeśli projekt współpracuje z widokiem ActiveRecord że baza danych jest model. Dostaniesz jedną klasę za stołem, a wszystko po prostu magicznie działa. Można oczywiście dostosować i zastąpić rzeczy, ale jeśli (lub projekt) zasadniczo nie zgadza się z podejściem klasa-per-tabeli, będę wyglądać na NHibernate ponieważ rozpoczyna się bardziej złożony (ale bardziej elastyczny) podejścia mapowanie Model domeny do bazy danych.

Jeśli używasz stosunkowo prostą bazę danych, która jest pod kontrolą (jak można zmienić kolumny bez wysyłania osiem form do podziału bazy danych nadzoru Review Board), ja polecam zaczynając SubSonic i przenoszenie do NHibernate jeśli nie SubSonic Poznaj swoje zachcianki.

Odpowiedział 06/08/2008 o 22:47
źródło użytkownik

głosy
31

Na co jej wartości ... miałem możliwość korzystania z obu technologii całkiem odrobinę więcej, ponieważ z tym pytaniem. I muszę się zatrzymać, jeśli te technologie, które wybrać zagadnienia bardzo niewiele. Pewien NHibernate pozwala swoim podmiotów gospodarczych będzie nieco mniej sprzężony swojej strukturze bazy danych, ale nadal uważają, że istnieje wiele sytuacji, w których trzeba jeszcze zginać do woli bazy danych.

Moim zdaniem jedyna prawdziwa droga to całkowicie oddzielne swoją domenę Model z modelu danych jest napisanie własnego DTOs (zasadniczo Poços przekazywania danych wokół), a następnie map je z powrotem do swojego ORM wyboru w warstwie danych. Ale w większości przypadków, takie podejście będzie mi więcej kłopotów niż jego wartości.

Odpowiedział 05/03/2009 o 10:23
źródło użytkownik

głosy
13

Lekko off topic, ale w podobnym duchu. Masz spojrzał na Zamek ActiveRecord jest napisane na górze NHibernate i usuwa potrzebę spędzenia czasu tworzenia odwzorowań XML z kodu do bazy danych. Jak NHibernate można uporządkować swoje obiekty domeny jak chcesz, a później wygenerowanie schematu bazy danych z tej struktury.

Korzystanie ActiveWriter , a przyczyniło narzędzia można łatwo mapować z bazy danych do obiektów domeny.

Odpowiedział 05/08/2008 o 06:07
źródło użytkownik

głosy
9

Można rozważyć patrząc na Fluent NHibernate; to sprawia, że ​​zarządzanie NHibernate proste. Nie wiem, jak trudno byłoby przejście istniejący schemat, ale jeśli budujesz nową aplikację miło jest zdefiniowanie modelu domeny i wygenerować bazę danych w prawie każdym serwerze DB można myśleć. Od przeczytaniu innych komentarzy tutaj, myślę Fluent NHibernate przynosi NHibernate na równi z poddźwiękowych dla ułatwienia konfiguracji.

Odpowiedział 04/03/2009 o 21:17
źródło użytkownik

głosy
7

I napisał na blogu ostatnio o .NET ORMs który ma Subsonic w nim, a ActiveRecord. Z mojego doświadczenia to zależy od tego, co robi projekt, Subsonic działa dużo lepiej, jeśli pochodzą ze środowisk SQL ale NHibernate ma więcej ontop niego. ActiveRecord jest dobre dla mniejszych projektów, nie jestem przekonany, że to szybciej niż w przypadku większych projektów przyklejania do NHibernate.

Odpowiedział 07/10/2008 o 11:10
źródło użytkownik

głosy
7

Nie mogę dać dobre porównanie, ponieważ nie zostały jeszcze faktycznie używany NHibernate nad projektem, ale Użyłem SubSonic i zostały bardzo z niego zadowolony. Jak dotąd, nie podczas używania go uderzyć żadnych większych przeszkód.

Sprawdź ten post z Robem Conery, jednego z twórców poddźwiękowych. Opowiada o tym, jak oddzielić swoje poddźwiękowych kod z resztą aplikacji. On nawet wspomina o tym, że ta architektura pozwoliłaby ci później zamienić się poddźwiękowych jakiegoś innego warstwy dostępu do danych takich jak NHibernate lub LINQ to SQL.

Wiem, że nie właściwie odpowiedzieć na to pytanie, ale mam nadzieję, że to nadal pomaga.

Odpowiedział 04/09/2008 o 20:25
źródło użytkownik

głosy
5

I oceniano zarówno i uważam, że nie byłoby sprawiedliwe, aby polecić jeden nad drugim, nie rozumiejąc, co swoje cele. W swoim pytaniu pan stwierdzono różnic dobrze i wierzę, że musi być twoim czynnikiem decydującym. Osobiście użyłem obu i będzie nadal korzystać zarówno w zależności od projektu.

  • NHibernate jest moim wyborem dla większych projektów skalę, ponieważ jego zastosowań lekki POCO jest. Gdybym kiedykolwiek przełączyć mój ORM „Wierzę” to byłoby znacznie łatwiejsze byłaby.
  • SubSonic jest mój wybór, kiedy mają mniejszą skalę projektu. Wierzę, że wydajność mądry SubSonic skaluje dobrze. Jednak czuję się dobrze w połączeniu z nim, ponieważ jest tak wyryte w moim projekcie. W mniejszym projekcie nadal mogę przełączyć go ponieważ baza kodu jest tak mała, i to naprawdę pomaga mi wyrwać kod jak w reklamie.
Odpowiedział 26/01/2009 o 14:37
źródło użytkownik

głosy
4

Ponownie nieco nie na temat, ale będę drugi Zamek ActiveRecord - zamiast korzystania z bazy danych w modelu (Subsonic podejście) lub spędzać czas w spaghetti XML (podejście NHibernate) wystarczy umieścić atrybuty w klasach modelowych.

Można nawet dostać ActiveRecord do generowania schematu bazy danych dla Ciebie.

Użyliśmy tego podejścia na dość kilka projektów teraz, a korzyści są następujące:

  • Łatwa ścieżka uaktualniania do NHibernate w razie potrzeby w przyszłości
  • Wsparcie dla prostych modeli dziedziczenia - np. Samochód -> Samochód
  • Schemat generuje najprawdopodobniej jak byś stworzył go tak, więc można spędzić więcej czasu na budowanie aplikacji, zamiast martwić się o utrzymanie modelu / db zsynchronizowane.
Odpowiedział 16/09/2008 o 13:15
źródło użytkownik

głosy
4

Myślę, że to dość dużo przybity. Subsonic generuje kod, więc obiektów biznesowych będzie odzwierciedleniem struktury bazy danych. nHibernate używa plików odwzorowań, które mapować obiekty biznesowe do bazy danych dzięki czemu obiekty mogą być skonstruowane jednak chcesz.

Jak duża projektu jest? Czy będzie wsparcie długoterminowe potrzebne? Jest opłacalność Subsonic zamiar zrównoważyć ewentualne problemy skalowania?

Odpowiedział 04/08/2008 o 18:12
źródło użytkownik

głosy
3

Rozważyć swój zespół i wielkość projektu, rozważając ActiveRecord.

Z mojego doświadczenia wynika, ActiveRecord jest abstrakcją na szczycie NHibernate że zacznie przecieka jak sito, gdy próbuje bardziej skomplikowanych scenariuszy.

Jeśli masz do umiarkowanie mocno skomplikowany lub nie prostego schematu, trzymać z NHibernate. Można kroić i kroić go niemal do perfekcji.

Inne miejsce można dostać się w kłopoty jest kiedy trzeba umiarkowanie skomplikowane zapytania. ActiveRecord ukrywa wiele realizacji NHibernate ... ale trzeba go do skomplikowanego zapytania, które staną się bardzo trudne, jeśli jesteś całkowicie zaznajomiony z HQL. Należy uważać, członkowie zespołu nie tylko siekać daleko na krawędziach zamiast nauki NHibernate i HQL.

Odpowiedział 02/10/2008 o 20:26
źródło użytkownik

głosy
3

Mamy bootstrapped z subsonic i teraz starają się ocenić, czy mamy zamiar przejść do NHibernate teraz, że jesteśmy w punktach bólowych subsonic.

Nasza druga opcja jest stworzyć jakiś kompromis gdzie używamy poddźwiękowych kwerendy i załadować dowolne obiekty z ich „Execute jako wpisane liście” funkcjonalności, dokłada mapowania opartą nazwa off dowolnym stylu LINQ instrukcji SQL. Lub spróbować odtworzyć niektóre z nich w NHibernate i byłaby resztę.

Więc mówię subsonic sens w małych aplikacjach, ale utrzymanie na poddźwiękowych aplikacji dostaje dość owłosione, mamy szczególnie ciężkie czasy z nakładającymi kod weryfikacyjny, a pre / post w kodzie wyzwalany wydarzenia. Dla aktywnego rekordu deseń, subsonic jest na pewno 80% tam, ale nie latków w łuszcząca drodze i zatrzymuje cię od żadnej realnej kontroli nad hierarchii dziedziczenia, ponieważ każda klasa musi dziedziczyć tabelę, aby wrócić do tej tabeli.

Odpowiedział 30/08/2008 o 07:18
źródło użytkownik

głosy
2

Uważam, że powinniśmy trzymać się jednego, który można wykorzystać najlepiej. Ostatecznym celem jest wydajność i jakość kodeks dobrych parametrach. Jeśli znasz SubSonic i obecnie potem trzymać się go i jeśli wiesz NHibernate w głębi kij do NHibernate. Jest to bardzo subiektywna kwestia. Należy również wziąć pod uwagę fakt, że to, co twój członek zespołu mają doświadczenie z. Jeśli jesteś dobry w nim będzie można łatwo utrzymać go.

Widziałem dużych projektów za pomocą poddźwiękowych natomiast NHibernate jest już znany i szeroko stosowany.

Decyzja zbierając ORM nie jest zależny wyłącznie od samego ORM.

Odpowiedział 03/11/2009 o 06:52
źródło użytkownik

głosy
2

Embrace niedopasowania impedancji!

Sprawdź to

:)

Lub nie. Jeśli chcesz wydajności, zrób to sam. Jeśli chcesz szybko i łatwo przejść z NHibernate i ActiveRecord. Jeśli podoba Ci się udając, że rzeczywiście wie, co się dzieje na poziomie dostępu do danych, należy użyć NHibernate i siedzieć z XML przez cały dzień, aby uzyskać wiele do wielu dzieje ... Albo po prostu ... eee .. zrób to sam - ADO.Net FTW!

Odpowiedział 08/02/2009 o 02:51
źródło użytkownik

głosy
0

Rada stałam na ten temat jest, że Subsonic nie skaluje się do obsługi bardziej złożonych scenariuszy, a więc jeśli pójdziesz tą drogą będziesz skończyć z pracą próbuje zamienić się w bardziej zaawansowanym ORM.

więc jestem bardziej zainteresowany wykorzystaniem NHibernate dla skomplikowanych przypadkach, zamek Active Record dla prostszych przypadkach i mam na oku Fluent NHibernate która powinna uczynić NHibernate mapowanie wiele łatwiejsze (zwłaszcza gdy wsparcie mapowanie oparciu konwencja jest poprawa).

Odpowiedział 25/10/2008 o 15:20
źródło użytkownik

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