2008-10-19 11 views
66

Zostało powiedziane w blogosferze i przez samego Microsoft, że MEF nie jest innym pojemnikiem IoC.Dlaczego dokładnie nie ma MEF kontenera DI/IoC?

OK ... ale dlaczego? Wydaje mi się to samo. Może to nie jest tak dobre jak Unity lub Castle Windsor, ale nadal pasuje do definicji, prawda?

Dlaczego MEF nie jest kontenerem IoC takim jak Unity lub Castle Windsor?

+2

Mogłeś przynajmniej pozwól mi zachować upvote za link do wywiadu kodu pasterstwo :) – Kev

+0

Sure Kev. Przepraszam, ale odpowiedzi na bloki Glen w Hanselminutes były dużo bardziej szczegółowe. Wywiad, który wysłałeś, był dobry, ale pozostawił mi więcej pytań niż odpowiedzi. – CVertex

+1

Opisaliśmy to w ostatnim odcinku hanselminutes. http://www.hanselminutes.com/default.aspx?showID=166 –

Odpowiedz

8

W moim świecie DI opiera się na trzech wymiarach, składzie obiektu, zarządzaniu na całe życie i przechwyceniu. To właśnie ułatwia inne pojemniki DI, takie jak Unity, Castle Windsor i Ninject. MEF obsługuje tylko jeden wymiar, Skład obiektu. Robi to całkiem nieźle, ale pozostałe dwa wymiary nie są obsługiwane w MEF.

+3

Zarządzanie na całe życie zostało znacznie ulepszone w MEF 2.0 w wersji 4.5/4.0 na nugecie, oprócz posiadania modelu konfiguracji opartego na konwencjach. Nie ma intercepcji, chociaż MEF Contrib ma rozszerzenie do AOP/Interception. –

9

MEF ma potencjalnego, ale jako kontener DI, brakuje:

  1. Kodeksu jako Konfiguracja rejestracji
  2. konfiguracyjnym XML
  3. Auto (nie tak ważne dla mnie)
  4. niestandardowe wcieleń
  5. Przechwycenie

Te rzeczy są dość ważne.

Dla Lifestyle brakuje:

  1. Na wykresie
  2. Web Zapytanie Kontekst
  3. Kontekst Temat
  4. Session Context
  5. Zbiorcza
  6. scoped
  7. niestandardowy Reference

Referencje: - rezerwacja Mark Seemann za "Dependency Injection w .NET"

Powiązane problemy