RSS

Blog

Projektowanie oprogramowania w świecie .NET. Agile, OOP, wzorce projektowe, DDD, ORM, TDD, AOP i inne...

Wotum nieufności dla Entity Framework

14 września 2008 Odsłon: 3304

Parę tygodni temu ukazał się Service Pack do .NET Framework 3.5, a wraz z nim kilka zupełnie nowych technologii. Jedną z nich jest ADO.NET Entity Framework, czyli długo oczekiwany O/R mapper Microsoft, posiadający parę unikalnych zalet, ale też kilka poważnych braków. I to właśnie te braki wywołały ostatnio w środowisku burzę.

Akcja zainicjowana została przez społeczność ALT.NET, której przedstawiciele przygotowali specjalną petycję pt. "ADO .NET Entity Framework Vote of No Confidence". Pod listem udało się zebrać ponad 500 podpisów, w tym od wielu uznanych autorytetów w dziedzinie projektowania aplikacji. W gronie sygnatariuszy znaleźli się też liczni MVP, m.in. David Laribee, Jeremy D. Miller, Ayende Rahien czy Marc Clifton.

Dobry designer to za mało - potrzebna jest jeszcze elastyczna architektura.

Co spowodowało aż tak zdecydowaną reakcję społeczności? Otóż twórcy Entity Framework przegapili nasilającą się w ostatnich latach tendencję, zgodnie z którą aplikacje należy projektować w oparciu o model niezależny od infrastruktury, bierny, enkapsulujący całą logikę biznesową - według wzorca Domain Model. Źródłem tej koncepcji jest m.in. postulat POCO/POJO (Plain Old CLR/Java Objects), czyli rezygnacji z umieszczania w modelu kodu specyficznego dla wybranej technologii dostępu do danych, a także jakiejkolwiek innej, związanej z infrastrukturą. Owoce tego trendu zostały usystematyzowane przez Erica Evansa w książce "Domain-Driven Design: Tackling Complexity in the Heart of Software" (czym jest DDD można dowiedzieć się wstępnie np. z mojej prezentacji na LDI 2008).

Jak można się domyślić, Entity Framework ze wsparciem dla Domain-Driven Design ma poważne problemy. Żeby O/R mapper mógł być sensownie zastosowany do DDD, musi spełniać kryterium określane jako Persistence Ignorance (o którym napiszę szczegółowo wkrótce). W porównaniu do jednego z najpopularniejszych obecnie rozwiązań, czyli NHibernate, Entity Framework wypada pod tym względem blado. Co więcej, EF przegrywa tutaj także z LINQ to SQL! A to już jest bardzo dziwne...

Na szczęście jednak petycja poskutkowała. Zespół ADO.NET zaprosił do konsultacji kilka poważnych osobistości i poinformował, że w następnej wersji EF poziom Persistence Ignorance zostanie wyraźnie zwiększony. Microsoft musi się jednak spieszyć. Kilka dni temu ukazała się wersja 2.0 NHibernate, a do wersji 2.1 twórcy zapowiedzieli oficjalne wsparcie dla LINQ, co zneutralizuje główną przewagę Entity Framework. A już dzisiaj można korzystać z nieoficjalnej implementacji LINQ to NHibernate, dzięki pracy Ayende Rahiena.

Na koniec ciekawostka: Entity Framework można częściowo przystosować do DDD wykorzystując PostSharpa i techniki AOP. Szczegóły na blogu Ruurda Boeke.

Komentarze

Aktualizacja danych...
Aktualizacja danych...

Kontakt CV

Ja

Rafał Barszczewski
rb07 at interia.pl
gg: 1242248

Sonda

Jakiego O/R mappera używasz najczęściej w .NET?







Aktualizacja danych...

RSS

20 września 2008

Jak widać, spore zmiany. Zaimplementowałem najważniejsze funkcjonalności, które powinien mieć każdy silnik blogów, a których do tej pory u mnie brakowało. Chodzi mi tu przede wszystkim o tagi i RSS. Poza tym strona startowa bloga będzie teraz wyświetlać najnowszego posta, a na panelu bocznym pojawiła się lista ostatnich wpisów.

Ponadto, postanowiłem wznowić pisanie postów (a właściwie je rozpocząć - bo na dobrą sprawę nigdy poważnie nie zacząłem). W końcu w jakimś celu to wszystko zaprogramowałem ;) Tematyka, którą będę chciał w najbliższym czasie poruszyć, obejmuje zagadnienia związane z projektowaniem i testowaniem aplikacji oraz metodykami i narzędziami, które te procesy wspomagają. Zapewne najwięcej będzie o Domain-Driven Design i Test-Driven Development, choć spróbuję podejść do tych tematów bardzo pragmatycznie (technicznie). Mam też plan, żeby w miarę pisania kolejnych części powstawała konkretna, przykładowa aplikacja, która mogłaby posłużyć jako case-study. Co z tego wszystkiego wyjdzie - zobaczymy niebawem.

13 kwietnia 2007

Nie doszedł (na razie) żaden nowy wpis, ale za to przeorganizowałem trochę ten dział. Na głównej podstronie znajdują się teraz same nagłówki wpisów, a całość możemy przeczytać (i skomentować) po przejściu do szczegółów.

21 października 2006

Pierwszy, historyczny wpis w moim blogu. Od tej pory postaram się regularnie dodawać nowe posty. A już niedługo - moje wrażenia z Microsoft Technology Summit (24-25.10).