prisma vs mvvm Licht für UWP-Anwendung

8

Wir haben ein Arbeitsprojekt in Windows 8.1, das mit Win 10 kompatibel gemacht wird. Jetzt ist es erforderlich, dieses Projekt in UWP umzuwandeln. In dem früheren Projekt haben wir PRISM als Rahmen für MVVM verwendet. Jetzt ist das Problem, dass für UWP-Anwendung die neue Version für Prism noch nicht freigegeben ist und wir erwägen, MVVMLight zu verwenden.

Ich bin neu in beiden Frameworks, dh PRISM und MVVMLight. Jetzt ist meine Frage, wie schwierig es sein wird, die Codebasis von PRISM nach MVVMLight zu verschieben. Wenn es schwierig wird, sollte warten, bis PRISM neuere Version veröffentlicht wird. Und wenn wir zu MVVMLight wechseln sollten, müssen die wichtigsten Änderungen vorgenommen werden.

Nach meiner Beobachtung ist die Codebasis stark mit PRISM gekoppelt, wo im gesamten Code Schnittstellen wie IResourceLoader, ISessionStateService und so weiter verwendet werden. Außerdem habe ich gelesen, dass PRISM eine Lernkurve hat, MVVMLight dagegen nicht. Wenn wir also zu MVVMLight wechseln, muss ich zuerst PRISM lernen, um die Codebasis zu verstehen, und dann MVVMLight lernen, die Codebasis zu portieren. Wenn wir uns entscheiden, auf eine neuere Version von PRISM zu warten, die irgendwann in dieser Woche veröffentlicht wird, wird es dann wichtige Codeänderungen geben?

Wie wird Unit Testing in Bezug auf beide Frameworks unterstützt?

Da ist nicht viel Zeit für diese Aufgabe, die am effizientesten Weg sein wird, um damit fortzufahren?

    
Aakansha 23.09.2015, 07:43
quelle

2 Antworten

10

TL; DR: Kompilieren Sie den neuesten Prism-Code in Erwartung der neuen NuGet-Pakete.

Zuerst ein kleines Intro auf Prism, um alle auf den gleichen Fuß zu bringen. Prism ist ein MVVM-Leitfaden / Framework, der von Microsoft Patterns & amp; Praktiken. Sie wurden bis Version 5 für WPF / Silverlight veröffentlicht. Außerdem veröffentlichten sie Prism für Windows Runtime für Windows 8 und später für Win8.1 / WP8.1 RT. Dies sind 2 verschiedene Codebasen, wobei die zweite im Hinblick auf Regionen usw. leichter ist, aber eine sehr nützliche Unterstützung für das Application Lifecycle Management bietet. Es ist ein gängiges Missverständnis zu denken, dass sie gleich sind.

Im März wurde das Eigentum an Prism als Open-Source-Projekt auf die Community übertragen und ist auf GitHub verfügbar. Sie beschlossen, den gemeinsamen Code in einer PCL-Kernbaugruppe zusammenzuführen und Unterstützung für Xamarin Forms hinzuzufügen.

Ab heute gibt es noch keine RTM-Version von Prism 6 für UWP . Die Codebasis ist ziemlich kurz davor, mit nur ein paar kleinere Probleme zu öffnen , aber nichts, was die meisten Benutzer daran hindert, die Bits bereits zu verwenden. Zu diesem Zeitpunkt würde ich Ihnen empfehlen, das GitHub-Repository zu klonen, die Assemblys zu kompilieren und mit der Portierung Ihrer App zu beginnen. Es gibt ein paar brechende Änderungen (hauptsächlich Namespaces), aber Sie sollten in kürzester Zeit einsatzbereit sein. Sobald die RTM-Pakete verfügbar sind, löschen Sie die harten Referenzen und verwenden Sie NuGet.

Ich habe bereits eine unserer kleineren Apps portiert und plane, eines der größeren LOBs (über 60 Bildschirme) an diesem Wochenende zu portieren.

Um zu der Diskussion zurückzukehren, welches MVVM-Framework zu verwenden ist. Wenn Sie eine App mit nur wenigen Seiten haben, verwenden Sie kein Framework und halten Sie Ihren MVVM einfach. Wenn Sie komplexe LOB-Apps verwenden, haben diese Frameworks ihre Vorteile (und natürlich Nachteile). Es gibt viele Möglichkeiten (MVVM Light, Prisma, Caliburn Micro, ...) und alle sind gut.

Die Tatsache, dass sich Ihre Kollegen für Prism entscheiden, könnte einen Grund haben, den Depechie erwähnt hat. An erster Stelle denke ich an das Application Lifecycle Management, bei dem Prism weit bessere Unterstützung bietet.

Bei korrekter Verwendung von Basisklassen sollten Sie in der Lage sein, die meisten Abhängigkeiten von jedem einzelnen ViewModel umzuformen, falls Sie schließlich zu einem anderen Framework wechseln wollen.

Die Hauptunterschiede zwischen Prism für Windows Runtime und MVVM Light, die Sie beim Wechsel beachten müssen, sind VisualStateAwarePages, ViewModelLocator (Auto vs Eigenschaft für jede Ansicht), BindableBase für INotifyPropertyChanged und alles über den Anwendungslebenszyklus Management. Beide Frameworks sind gut, aber ich würde nicht empfehlen, eine voll entwickelte LOB-Anwendung zwischen ihnen zu wechseln, da es einfach zu viel Arbeit ist (mögliche Fehler werden vorgestellt).

    
Bart 23.09.2015, 17:37
quelle
3

Windows 10 UWP-Apps sind für jedes der von Ihnen genannten Frameworks weit weniger geeignet. Aufgrund ihrer reichhaltigen Navigationsfunktionen und anpassungsfähigen Layouts ist es schwer zu erkennen, wie gut Prism für Sie funktioniert. Was MVVMLight betrifft, bietet es sehr wenig darüber, dass Sie Ihre eigenen Ansichtsmodelle rollen, und indem Sie es vermeiden, können Sie der Möglichkeit eines fiesen Lock-in ausweichen, der Sie später beißen wird (was es oft tut)

    
Dean Chalk 23.09.2015 16:00
quelle

Tags und Links