Was ist Prisma für WPF?


137

Ich bin in letzter Zeit oft auf etwas gestoßen , das Prisma heißt . Microsoft, der das Projekt ausführt, beschreibt es als

Richtlinien für Verbundanwendungen in WPF und Silverlight.

Selbst nachdem ich die detaillierteren Beschreibungen gelesen habe, habe ich leider keine Ahnung, worum es eigentlich geht.

Ich hoffe hier, dass mir jemand eine klare, prägnante Erklärung geben kann, was Prisma eigentlich ist und warum ich es lernen sollte. Ich bin seit ein paar Jahren ein WPF-Entwickler, habe MVVM zu meinem fairen Anteil genutzt und bin in letzter Zeit auf Leute gestoßen, die Prism verwenden, aber ich persönlich fühle mich hier ein bisschen aus dem Ruder gelaufen.

Insbesondere wundere ich mich über folgende Punkte:

  • Ist Prism buchstäblich nur (oder hauptsächlich) eine Broschüre, wie sie auf der MSDN-Website angegeben ist ? Enthält es Bibliotheken, wenn ja, wofür genau?

  • Ist Prism ein MVVM-Framework? Sollte ich es als "offizielles Microsoft MVVM-Framework" gegenüber anderen oder meinen eigenen verwenden?

  • Bietet es eine Abhängigkeitsinjektion? Bezieht es sich überhaupt auf diese Weise auf MEF?

  • Alles andere sollte ich wissen, was Prism als WPF / Silverlight-Entwickler macht.


5
Eigentlich ist es auch eine ziemlich komplexe Sache - Prism versucht, viele Bedürfnisse zu befriedigen, daher ist es schwierig, eine einzige "richtige" Antwort zu finden, wenn Sie versuchen, ihren Zweck herauszufinden. Es macht wirklich mehrere Dinge.
Reed Copsey

1
Diese ähnliche Frage, die von mir gestellt wurde, hat auch einige gute Antworten auf diese Frage - stackoverflow.com/questions/6251821/…
akjoshi

9
noch ein trüber Sumpf von P & P. Jedes Mal, wenn sie so etwas veröffentlichen, muss ich zu SO oder Wikipedia gehen, um herauszufinden, was das Ding eigentlich ist. warum muss es immer so kryptisch sein?
Adam Ralph

1
Wenn Sie möchten, ist dies eine Art Dokumentation, die Sie bei der Implementierung des MVVM-Musters in Ihren WPF / Silverlight-Anwendungen unterstützt. Es gibt auch eine Bibliothek von CodePlex, für die ich nicht sicher bin, wofür sie genau ist. Eine gute Dokumentation über PRISM finden Sie unter dem folgenden Link. Es lohnt sich, einen Blick darauf zu werfen: Prism 4.1 - Entwicklerhandbuch für Microsoft Prism - MSDN
user3353518

Antworten:


92

Prism ist die offizielle Anleitung des Microsoft Patterns and Practices Teams zum Erstellen von "Verbundanwendungen" in WPF und Silverlight.

Es soll eine Anleitung zu den Best Practices für die Erstellung umfangreicher Anwendungen geben, die hinsichtlich Entwicklung und Wartbarkeit flexibel sind.

Dies umfasst Anleitungen zur Abhängigkeitsinjektion (über Unity oder MEF), zum Layout (einschließlich der Verwendung von MVVM), zur Behandlung zusammengesetzter Ereignisse usw.


Ist Prism buchstäblich nur (oder hauptsächlich) eine Broschüre, wie sie auf der MSDN-Website angegeben ist? Enthält es Bibliotheken, wenn ja, wofür genau?

Es ist ein Buch, enthält aber auch die Bibliotheken zur Unterstützung (auf der GitHub- Site).

Ist Prism ein MVVM-Framework? Sollte ich es als "offizielles Microsoft MVVM-Framework" gegenüber anderen oder meinen eigenen verwenden?

Ja und nein. Es enthält Anleitungen zur Verwendung von MVVM, ist jedoch weit mehr als ein MVVM-Framework. Es ist an und für sich wirklich kein "MVVM-Framework" - obwohl es MVVM-Anleitungen enthält.

Bietet es eine Abhängigkeitsinjektion? Bezieht es sich überhaupt auf diese Weise auf MEF?

Ja. Es enthielt ursprünglich Unity, aber die neueste Version beinhaltet die Verwendung von MEF für DI.

Alles andere sollte ich wissen, was Prism als WPF / Silverlight-Entwickler macht.

Es lohnt sich, einen Blick darauf zu werfen, wie sie Dinge tun. Sie haben ein sehr ausgeklügeltes "Region" -Konzept sowie eine gute Unterstützung bei der Ereignisaggregation. Es enthält auch bewährte Methoden für die gleichzeitige Entwicklung gegen WPF, Silverlight und Windows Phone.


1
Danke für die Antwort. Dies gibt mir einen guten Überblick, denke ich. Um ganz klar zu sein: Gibt es tatsächlich MVVM-bezogenen Code oder sogar eine Bibliotheks-DLL?
Noldorin

4
@Noldorin: Ich gehe davon aus, dass Sie nach Prism fragen ... Es gibt eine gewisse Unterstützung für MVVM, aber ehrlich gesagt erfordert MVVM als Muster fast keine Bibliotheksunterstützung. Prism hat ein gutes Benachrichtigungsobjekt und Befehlsunterstützung, was wirklich das einzige ist, was in der BCL fehlt, die Sie wirklich für MVVM benötigen. Es bietet auch Unterstützung für den Service Locator, der hilfreich ist, wenn Sie DI / Shared Services für die VM <-> VM-Kommunikation verwenden möchten. Es gibt nicht einige der "zusätzlichen" Dinge, die von einigen MVVM "Frameworks" bereitgestellt werden, wie z. B. ein Messaging-Framework usw.
Reed Copsey

1
Um den Prism-Richtlinien zu folgen, müssen die Bibliotheken installiert sein.
dios231

18

Es ist ein Framework zum Erstellen von WPF- und Silverlight-Apps.

http://compositewpf.codeplex.com/

Früher hieß es "Prism", bevor Microsoft es in "CompositeWPF" umbenannte.

Antworten:

1) Prism ist ein MVVM-Framework, das als Grundlage für Ihre Anwendungen dient

2) Ich schlage dies in Abhängigkeit von Ihren spezifischen Anforderungen vor. Sie sollten eine weitere Frage mit bestimmten Details posten, damit Sie bestimmte Antworten erhalten.

3) Prisma verwendet die Abhängigkeitsinjektion (Unity), "liefert" sie jedoch nicht

4) Imo, Prism bietet viele Funktionen, ist aber sehr lernintensiv. Für kleine Projekte mit Ihnen als alleinigem Entwickler benötigen Sie möglicherweise nicht die darin enthaltenen Abstraktionen und Tools.


3
Ich bin mit Ihrer Aussage Nr. 1 etwas nicht einverstanden - Prisma enthält MVVM-Anleitungen, aber viele der Anleitungen (die meisten Beispiele) sind überhaupt nicht MVVM. Es wird eher als eine Option dargestellt, die beim Erstellen von Verbundanwendungen verwendet werden kann.
Reed Copsey

1
Ich denke, ich habe immer mit dem MVVM-Muster verwendet
Rboarman
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.