Ich entwickle eine Anwendung mit dem MVVM-Modell, habe aber einen Punkt erreicht, an dem ich auswählen muss, welches Framework verwendet werden soll.
Zu den möglichen Optionen gehören:
- MVVM Toolkit
- MVVM Foundation
- WPF Application Framework (WAF)
- Leichte MVVM
- Caliburn
- Cinch
- Prisma
- ReactiveUI
Was ist Ihrer Erfahrung nach besser?
wpf
mvvm
frameworks
Rangel
quelle
quelle
Antworten:
Es hängt wirklich davon ab, was Sie erreichen möchten und wie viel Infrastruktur Sie bereits benötigen, sowie von der Leichtigkeit, mit der Sie Beispiele finden können, die Ihnen helfen. Ich werde hier ein Interesse anmelden, da ich aktiv an mindestens einem MVVM-Framework beteiligt war und über die WPF Disciples-Gruppe Beiträge zu anderen geleistet habe, daher bin ich ein bisschen voreingenommen. Das heißt hier:
Microsoft MVVM Toolkit - dies befindet sich noch im Alpha-Stadium. Als es ursprünglich veröffentlicht wurde, war es den Jüngern ein bisschen grausam, weil es nicht tat. Mit diesen Worten möchte MS dieses Framework verbessern, damit es zu sehen ist - es ist einfach noch nicht fertig.
MVVM Foundation - ah Josh Smiths Version des Frameworks. Josh ist einer der Väter von MVVM und war ein großer Verfechter und Lehrer des Musters. Infolgedessen weist vieles, was Sie in anderen Frameworks finden, überall Joshs Fingerabdrücke auf. Dieses Framework soll die Grundlagen von MVVM vermitteln und nicht einige der esoterischeren Probleme ansprechen. Ursprünglich war dies nur für WPF gedacht, aber Leute wie Laurent Bugnion und ich haben Funktionen / Projekte hinzugefügt, die bedeuten, dass dies auch ein Silverlight-kompatibles Framework sein wird.
WAF - keine Erfahrung damit, also kann ich es leider nicht kommentieren.
MVVM Light - Laurent Bugnion hat es übernommen und gerade auf Version 2 aktualisiert. Dies ist ein sehr gutes Framework, aber auch hier ist nicht beabsichtigt, jeden einzelnen Aspekt von MVVM-Anwendungen abzudecken. Angesichts des Hintergrunds von Laurent bietet es eine sehr starke Unterstützung für Silverlight und Blendability.
Update Laurent hat mich gerade darüber informiert, dass die Versionen .NET 3.5 und .NET 4.0 funktionskompatibel sind. Wau, Laurent zu gehen.
Cinch - Sacha Barbers exzellentes MVVM-Framework nur für WPF. Dies deckt mehr Bereiche ab als die Rahmenbedingungen, über die ich oben gesprochen habe. Es ist ein ausgezeichnetes Framework und nutzt die Konzepte von Bill Kempfs ausgezeichnetem Onyx- Projekt. Onyx soll MVVM-Frameworks ergänzen und Funktionen hinzufügen, die für Benutzer in MVVM / WPF normalerweise schwierig sind. Onyx, ursprünglich nur für WPF gedacht, hat die SL-Kompatibilität wieder aufgenommen - eine Arbeit, an der ich besonders stolz bin.
Prisma - Ich habe es wieder nie benutzt, aber ich habe viele gute Dinge darüber gehört.
Ocean - Karl Shifflett, Programmmanager im Cider-Team, hat kürzlich ein voll funktionsfähiges WPF MVVM-Framework veröffentlicht. Auch dies ist ein ausgezeichneter Rahmen und hat viel zu empfehlen.
Unter dem Strich laden Sie die verschiedenen Frameworks herunter, schauen Sie sie sich an und finden Sie heraus, welches am intuitivsten zu Ihrer Denkweise und Ihren Anforderungen passt. Wenn Sie der Meinung sind, dass Sie Silverlight aus derselben Codebasis unterstützen möchten, sollten die WPF-Frameworks nur rabattiert werden.
quelle
Ich fand diesen Artikel sehr nützlich http://www.japf.fr/2009/10/a-quick-tour-of-existing-mvvm-frameworks/ Damit ich ihn für kommende Benutzer hierher bringe
Ich aktualisiere den Cinch-Abschnitt und füge seinen Funktionen Silverlight-Unterstützung hinzu
Die lange Geschichte tut mir leid
Gemeinsamkeiten:
Cinch
MVVM Light Toolkit
MVVM-Helfer
MVVM Foundation
Caliburn
Onyx
Kalzium
nRoute
Nito MVVM
Ozean
Grundlegendes MVVM-Framework
Gutes Licht
quelle
Ich versuche die Frameworks zu beschreiben, die in Petes großartiger Antwort fehlen:
MVVM Toolkit (Microsoft) ist eine sehr einfache Bibliothek mit Visual Studio-Projektvorlagen, die Anfänger mit diesem Muster unterstützen sollen. Wenn Microsoft ein gutes Feedback für sein Toolkit erhält, wird es möglicherweise als neue Visual Studio-Projektvorlage (möglicherweise 2010) implementiert.
Prism (Microsoft P & P) ist ein Framework, das mehr als die Unterstützung für das MVVM-Muster bietet. Das Hauptziel dieses Projekts ist es, Ihnen beim Erstellen modularer WPF- und / oder Silverlight-Anwendungenzu helfen. Wenn Sie nur das MVVM-Muster implementieren müssen oder Anfänger in .NET / WPF sind, werde ich dieses Projekt nicht empfehlen. Siehe auch: Link .
WPF Application Framework (WAF) ist ein leichtes Framework, mit dem Sie WPF-Apps mit MVVM erstellen können. Es ist nur für WPF und unterstützt daher Silverlight nicht. Mit der Einführung von Controllern geht es etwas anders als bei den meisten anderen MVVM-Frameworks. Sie sind für den Anwendungsworkflow verantwortlich und vermitteln zwischen verschiedenen ViewModels.
quelle
Meh. Mvvm benötigt nicht wirklich ein komplettes Framework, um IMO zu unterstützen. Wenn Sie das Konzept verstehen, ist es ziemlich einfach, mit einer sauberen VM-Basisklasse zu beginnen, die INotify implementiert, und einfach von dort fortzufahren.
quelle
Schauen Sie sich auch an:
Caliburn & Onyx !
quelle
Mischen Sie Ihre eigenen!
Ich habe EventAggregator von PRISM verwendet, ViewModelBase von MVVM Foundation und so weiter. Ich habe auch den RelayCommand (DelegateCommand an einigen Stellen aufgerufen) optimiert, um auch andere Daten zu akzeptieren, und so weiter.
Ich würde nicht nur ein Framework per se empfehlen.
quelle
Ich wette auf Caliburn und MVVMlight. Es scheint, dass nicht viele dieser MVVM-Frameworks Silverlight unterstützen. Ich kann davon ausgehen, dass mehr MVVM-Frameworks zur Auswahl stehen als die IoC-Frameworks, da es schwieriger ist, die Feature-Grenze zum mvvm-Framework festzulegen. Ich denke, der beste Weg, um herauszufinden, welches besser zu Ihrem Projekt passt, ist das Auflisten / Vergleichen der Funktionen.
Schauen Sie sich auch Mix10 an. Ich lerne viel aus dem Vortrag: Erstellen Ihres MVVM-Frameworks.
quelle
Auch Cocktail und DevForce Framework von Ideablade
quelle
Ich benutze Prisma und mag es. Eines der großen Dinge für mich war, dass es andere Leute geben würde, die mir bei Bedarf helfen könnten, und gute Beispiele. Sobald Sie die Grundlagen zum Laufen gebracht haben, benötigen Sie eine ganze Reihe von Erweiterungen für Ihre App, und es ist viel einfacher, wenn Sie mit demselben Framework wie andere arbeiten.
quelle
Alles in allem bin ich zu 90% durch meine Anwendung und alles, was ich von MVVM Toolkit verwendet habe, ist die Factory-Funktion, die einen Befehl für mich erstellt, der eine Delegate-Funktion zum Starten in Execute enthält. Ich denke, ich könnte in ein paar Stunden zu einem anderen Framework oder keinem Framework wechseln.
quelle
Ein weiterer zu berücksichtigender Punkt ist MEFedMVVM . Ich habe es für einige Projekte verwendet und es ist leicht, nicht aufdringlich und unterstützt Silverlight und WPF. Es ist auch in der Lage, Entwurfszeitdaten in Blend für diejenigen zu unterstützen, die dieses Produkt verwenden.
quelle
Wenn Sie nach Erweiterbarkeit (der Möglichkeit zum Schreiben von Add-Ins) über einem WPF / MVVM-Anwendungsframework suchen, ist der Haftungsausschluss von SoapBox Core möglicherweise für Sie von Interesse : Ich habe ihn geschrieben . Es ist Open Source, und selbst wenn Sie es nicht verwenden, gibt es möglicherweise einige gute Ideen für Sie. Es verwendet MEF sowohl für Extensibility als auch für IoC.
quelle
Es gibt auch nRoute
Ein wirklich schönes Anwendungsframework für WPF / Silverlight, das MVVM unterstützt
quelle