2009-10-20 8 views
15

Czytałem podobne posty, ale nie jest to dla mnie jasne.MEF vs. PRISM. Jaka jest różnica? Co będzie obsługiwane w przyszłości?

Co Chcę utworzyć aplikacje Silverlight jest z kilku zakładek/modułów, że wszystko będzie oddzielne biblioteki DLL.

widzę PRISM posiada skorupę/modułu koncepcje, które wydają się skierowane ku temu UI i znaleźć ładne Demo (pokazując jak szukać digg/twitter).

Ale wygląda na to, że MEF zostanie uwzględniony w VS2010, więc chciałbym skorzystać z tej opcji.

Czy ktokolwiek jakoś wyraźnie wyjaśnia różnice? (Nie jestem zaawansowany programista)

(aktualizacja 1) Więc MEF i jedność są zasadniczo takie same ... i PRISM jest na szczycie tych pojęć i jest specyficzny UI ...

Więc odpowiedzi wydaje się być w użyciu od co PRISM pytam o buduje zerwania aplikacji silverlight w oddzielnych kawałkach UI ..

ktoś zna przyszłość rozwoju PRISM? Czy to się dzieje, czy trwa?

Odpowiedz

21

MEF i Prism służą dwóm bardzo różnym celom.

Prism jest po prostu wytyczne do projektowania aplikacji kompozytowych - gdzie masz skorupę i „regiony”, które są przydzielone dynamicznie i zintegrowane. Zawiera pojemnik IoC (Unity), którego używa do iniekcji.

MEF jest ramy wtrysk zależność - to głównym celem jest „wypełnienie” depedencies w czasie wykonywania dla aplikacji. Pod tym względem wypełnia on ten sam cel, co Jedność w pryzmie (a właściwie można łatwo przerobić Prism, aby używał MEF zamiast Unity).

Pryzmat wypełnia szerszy zakres, pod pewnymi względami, ale tak naprawdę jest ograniczony do aplikacji GUI. MEF wykonuje tylko jedną rzecz (Dep. Injection), ale ma na celu bardziej ogólny cel dla każdego typu aplikacji.


Edycja w odpowiedzi do aktualizacji:

Jak dla życia tych produktów -Nie ma tu żadnej odpowiedzi, ale to jest trochę jak jesteś one opracowywane:

Prism został opracowany przez zespół Patterns and Practices. Celem nie jest koniecznie tworzenie oprogramowania, ale dostarczanie wskazówek.W związku z tym aktualizują (choć nieczęsto) bibliotekę Prism i próbkę, ale Prism nie jest rdzeniem struktury dostarczanej przez Microsoft. To jest naprawdę trzecia biblioteka (mimo że MS dużo jej finansuje, większość osób P & nie jest MS FTE).

MEF z postów na blogu brzmi, jakby planowano zintegrować go z ramami i używać bezpośrednio w projektach MS. Jako taki, staje się coraz intensywniejszy, bezpośrednio od firmy Microsoft i wykorzystywany w swoich produktach.

Ja osobiście przeczytałem dokumentację Prism (i mam książkę) i przejrzałem próbki. Bardzo pomocne jest zrozumienie, jak rozdzielić aplikację, ale tak naprawdę jest to poradnik bardziej niż kompletne, użyteczne ramy. Próbki są bardzo dobre w robieniu tego, do czego są przeznaczone - naucz się architekta, jak zaprojektować złożoną aplikację.

Jeśli twoim celem jest utrzymanie czystego rozdziału obaw w aplikacji silverlight, skupiłbym się bardziej na nauce MVVM niż na używaniu Pryzmatu.

Jeśli chcesz używać MEF, istnieją inne dobre opcje. Na przykład: WPF Application Framework to cała platforma MVVM zbudowana na podstawie użycia MEF i całkiem przyjemna.

+1

Mieszanie obawy tutaj trochę ... podstawowe usługi Prism mają niewiele wspólnego z MVVM ... pakiet poradnictwo popycha MVVM/MVP, ale Prism „Bity "nie można podsumować jako struktura MVVM. –

+0

Tak, zgadzam się. Sugerowałem, że patrzenie na MVVM może być lepszym punktem skupienia niż niekoniecznie patrząc na Prism, biorąc pod uwagę pragnienie PO zbudowania aplikacji "podzielonej na kawałki". Nie próbowałem sugerować, że Prism jest strukturą MVVM. –

+0

Biorąc pod uwagę twoją reprezentację tutaj, pomyślałem tak, to brzmiało tak. Twoja edycja poprawiła się ładnie. :) –

4

Zasadniczo MEF jest ogólnego przeznaczenia rozciągliwość ramy:

Jeśli budujesz rozszerzalne aplikacje, ramy rozszerzalny i rozszerzenia aplikacji, a następnie MEF jest dla ciebie.

natomiast Prism jest głównie do budowania GUI:

kompozytu Client Orientacji aplikacja jest zaprojektowany, aby pomóc Ci łatwiej zbudować modularną Windows Presentation Foundation (WPF) oraz aplikacji klienckich Silverlight.

4

Więc MEF i jedność są zasadniczo takie same ...

No, niezupełnie. MEF koncentruje się bardziej na rozszerzeniach, które nie są znane w czasie kompilacji, podczas gdy kontenery IOC zasadniczo koncentrują się na zależnościach, które są znane w czasie kompilacji. Górna odpowiedź na this question daje dobre wyjaśnienie różnic.

+1

W Unity podajesz rozszerzenia, które chcesz uruchomić podczas wykonywania. Natomiast w przypadku MEF rozszerzenia nie są koniecznie dostarczane przez aplikację, ale można je wykryć, a gdy są dostępne, można je automatycznie włączyć. – Doug

Powiązane problemy