MEF und Prism dienen zwei sehr unterschiedliche Ziele.
Prism ist im Grunde eine Anleitung zum Entwerfen von Verbundanwendungen - wo Sie eine Shell und "Regionen" haben, die dynamisch zugewiesen und integriert werden. Es enthält einen IoC-Container (Unity), den es für seine Injektion verwendet.
MEF ist ein Abhängigkeitsinjektions-Framework - es ist das Hauptziel, Abhängigkeiten zur Laufzeit für eine Anwendung "auszufüllen". In dieser Hinsicht erfüllt es das gleiche Ziel wie Unity innerhalb von Prism (und tatsächlich könnte man Prism ziemlich einfach überarbeiten, um MEF anstelle von Unity zu verwenden).
Prism füllt in mancher Hinsicht einen größeren Bereich, ist aber auch wirklich auf GUI-Anwendungen beschränkt. MEF macht nur eine Sache (Dep. Injection), aber für allgemeine Zwecke, für jede Art von Anwendung.
bearbeiten als Antwort zu aktualisieren:
Was die Lebensdauer dieser Produkte -es keine Antwort hier ist, aber das ist eine Art, wie sie entwickelt sind zu werden:
Prism entwickelt wurde vom Team Muster und Praktiken. Ziel ist nicht, Software zu machen, sondern Anleitung zu geben.Daher aktualisieren sie (wenn auch etwas selten) die Prism-Bibliothek und das Beispiel, aber Prism ist kein Kernbestandteil des von Microsoft gelieferten Frameworks. Es ist wirklich eine Third-Party-Bibliothek (obwohl MS eine Menge davon finanziert, die meisten der P-Leute sind nicht MS FTE).
MEF, von den Blog-Posts klingt, wie es geplant ist, in den Rahmen integriert werden, und direkt innerhalb von MS-Projekten verwendet werden. Als solches wird es direkt von Microsoft stark entwickelt und in seinen Produkten verwendet.
Ich persönlich habe durch die Prism-Dokumentation lesen (und haben das Buch), und haben durch die Proben verschwunden. Es ist sehr hilfreich zu verstehen, wie man eine Anwendung zerlegt, aber es ist wirklich mehr als ein komplettes, brauchbares Framework. Die Beispiele sind sehr gut darin, das zu tun, was sie tun sollen - einen Architekten darin auszubilden, wie man eine zusammengesetzte Anwendung gestaltet.
Wenn Ihr Ziel nur ist, um eine saubere Trennung von Bedenken in einer Silverlight-Anwendung zu halten, würde ich mehr konzentrieren MVVM auf dem Lernen als unbedingt nur Prism verwenden.
Wenn Sie MEF verwenden, gibt es andere gute Möglichkeiten. Zum Beispiel ist das WPF Application Framework ein ganzes MVVM-Framework, das auf der Verwendung von MEF aufbaut und ziemlich nett ist.
Misch betrifft hier ein wenig ... Prism Kerndienste wenig mit MVVM zu tun haben ... drückt die Führung Paket MVVM/MVP, aber Prism „Die Bits "kann nicht als MVVM-Framework zusammengefasst werden. –
Ja, ich stimme zu. Ich schlage vor, dass der Blick auf MVVM ein besserer Fokus sein könnte, als unbedingt auf Prism zu schauen, angesichts des Wunsches des OP, eine App "in Stücke gebrochen" zu bauen. Ich habe nicht versucht zu sagen, dass Prism ein MVVM-Framework ist. –
Angesichts Ihrer Wiederholung hier dachte ich so viel, es klang einfach so. Ihre Bearbeitung hat die Dinge aufgeräumt. :) –