2009-10-20 3 views
15

Ich habe ähnliche Beiträge gelesen, aber mir ist es nicht klar.MEF gegen PRISM. Was ist der Unterschied? Was wird in Zukunft unterstützt?

Was ich erstellen möchte, ist eine Silverlight-Anwendungen mit ein paar Tabs/Module, die alle separate DLLs sein werden.

Ich sehe PRISM hat die Shell/Modul-Konzepte, die auf die Benutzeroberfläche ausgerichtet sind, und ich finde eine nette Demo (zeigt, wie Sie digg/twitter suchen).

Aber es klingt wie MEF wird in VS2010 enthalten sein, also würde ich gerne mit dieser Option gehen.

Kann jemand irgendwie die Unterschiede erklären? (Ich bin kein fortgeschrittener Programmierer)

(Update 1) So MEF und Einheit ist im Grunde die gleiche ... und PRISM ist oben auf diese Konzepte und UI spezifische ...

So die Antworten scheint zu sein, PRISM zu verwenden, da, was ich über building breche, eine silverlight APP in den verschiedenen UIstücken zu brechen.

Weiß jemand die Zukunft von PRISM Entwicklung? Ist es getan oder geht es weiter?

Antwort

21

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.

+1

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. –

+0

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. –

+0

Angesichts Ihrer Wiederholung hier dachte ich so viel, es klang einfach so. Ihre Bearbeitung hat die Dinge aufgeräumt. :) –

4

Grundsätzlich ist MEF ein Allzweck- erweiterbares Framework:

Wenn Sie erweiterbare Anwendungen bauen, erweiterbare Frameworks und Anwendungserweiterungen, dann MEF für Sie.

während Prism ist vor allem für GUIs Aufbau:

Der Composite-Client-Anwendung Guidance soll Ihnen leichter bauen modulare Windows Presentation Foundation (WPF) und Silverlight-Client-Anwendungen zu helfen.

4

So MEF und Einheit sind im Grunde die gleichen ...

Nun, nicht ganz. MEF konzentriert sich mehr auf Erweiterungen, die zur Kompilierungszeit nicht bekannt sind, während IOC-Container im Allgemeinen auf Abhängigkeiten fokussieren, die zur Kompilierungszeit bekannt sind. Die obere Antwort auf this question gibt eine gute Erklärung der Unterschiede.

+1

In Unity geben Sie an, welche Erweiterungen Sie während der Ausführung ausführen möchten. Bei MEF hingegen werden die Erweiterungen nicht unbedingt von Ihrer Anwendung bereitgestellt, sind aber erkennbar und können, wenn verfügbar, automatisch einbezogen werden. – Doug

Verwandte Themen