2009-06-16 11 views
27

Przygotowujemy się do rozpoczęcia przebudowy dużej, starzejącej się wewnętrznej aplikacji dla przedsiębiorstw. Zdecydowaliśmy się użyć ASP.NET MVC, ale pod uwagę brane jest to, które Object Relational Mapping (ORM) do wyboru. Oczywiście dostępnych jest wiele otwartych i płatnych implementacji ORM. Jednak wydaje się, że ma największą moc umysłu, podczas gdy Entity Framework jest nową goryczą od Microsoftu.Wybór ASP.NET MVC i ORM

Podczas gdy prowadzimy badania i bawimy się z obydwoma, chcieliśmy przekazać je społeczności, które ORM (NHibernate, Entity Framework lub inne) wolą i dlaczego.

nieco podobne pytania StackOverflow

Dodatkowe .NET ORM Reading

+0

Bez urazy, ale wydaje się to został poproszony wcześniej: http://stackoverflow.com/search?q= .net + orm. http://stackoverflow.com/questions/380620/what-object-mapper-solution-would-you-recommend-for-net-closed został zamknięty jako duplikat. –

+0

Wow, nie wiem, jak nie znalazłem tego pytania, kiedy szukałem. Nie powiodło mi się zarówno wyszukiwanie w Google, jak i w SO. Żadna uraza nie została podjęta w związku z zamknięciem, ponieważ inaczej nie zadałbym pytania. :) – ahsteele

+0

Ponieważ zgadzam się, że powinno to być prawdopodobnie zamknięte, czy lepiej jest usunąć pytanie lub głosować, że zostanie ono zamknięte? – ahsteele

Odpowiedz

13

Trzeba spojrzeć na Sharp Architecture ramy aplikacji ASP.NET MVC, która wykorzystuje NHibernate.

Użyłem kilku O/RM w ciągu ostatnich kilku lat i nie ma sposobu, by wybrać coś innego niż NHibernate.

  1. Jest najbardziej dojrzały.
  2. Ma ogromny zestaw funkcji.
  3. Za tym stoi dobra społeczność.
  4. Ma kilka fantastycznych projektów pomocniczych, takich jak Fluent NHibernate.

Nie wiem, jakie dodatkowe informacje będą dostępne dla osób, które są w stanie podać Państwu więcej.

+2

Odsyłacze do nieistniejącej domeny – Storm

+0

@Storm Dzięki, wygląda jak zgnilizna łącza. Zaktualizowałem adres URL, aby wskazać repozytorium github. –

2

Szalona odpowiedź: brak.

To nie znaczy, że ORM nie są świetnymi elementami technologii, gdy są używane prawidłowo. Ale w 2011 roku szybko stają się uniwersalnym młotem, w którym nie wszystkie problemy są gwoździami. I dzieje się tak wiele w nowoczesnych ORMach, że szczególnie w przypadku ludzi, którzy nie są w nich dobrze zorientowani, mogą zmylić rzeczy bardziej niż pomóc. Lub, czasami, rzeczy są na tyle proste, że prosty SQL jest lepszą alternatywą. Bez względu na to, jak dobry jest ORM, w pewnym momencie nastąpi wyciek abstrakcji.

Drugą stroną, na którą należy spojrzeć, jest cały ruch NoSQL. Technologia jest wciąż trochę nowa, ale w przypadku nowej pracy jest to strategia dostępu do danych, którą należy wziąć pod uwagę, ponieważ zajmuje dużo miejsca poza tworzeniem aplikacji.

+3

PO wyraźnie stwierdził, że przeprojektowywali swoje aplikacje korporacyjne, nie zaczynając czegoś się uczyć. A gdy chcesz zachować trwałość, najczęściej ORM jest najłatwiejszym rozwiązaniem. –

0

Krótka odpowiedź: użyć zarówno (i tak naprawdę nie używać obu) ...

Z ORM istnieje wiele możliwości, wszystko zależy od tego, co chcesz.

W rzeczywistym ORM odwzorowujący gorąco recomment NHibernate i FLUENT NH mapowania. Trzeba wiele badań, aby stworzyć ładną architekturę, ale wtedy nic nie stoi na przeszkodzie. Przy minimalnym kompromisie uzyskujesz prawdziwą elastyczność.

EF6x (rdzeń nie jest gotowy do produkcji IMHO) nazywa się ORM, ale to, co generuje, jest bardziej zbliżone do DAL. Jest coś, czego nie można skutecznie zrobić z EF6. Mimo to jest to moje ulubione narzędzie do odczytu modelu, podczas gdy ja łączę go z NHibernate (gdzie NH używam dla modelu DDD/zapisu).

Teraz do wydajność - jego zawsze pro i przeciw. Jeśli zagłębisz się w ORM architektura (zobacz mój artykuł: avoid ORM bad habits), wówczas intuicyjnie znajdziesz sposoby na przyspieszenie. Oto mój kolejny artykuł na temat jak zrobić EF6x 5x szybciej (przynajmniej w sytuacjach odczyt): EF6.x 5x faster