MVVMCross verbessert die Wiederverwendung von Code in plattformübergreifenden Apps signifikant, indem das architektonische Muster des Modell-View-ViewModel (MVVM) eingesetzt wird. So erreicht es dies:
1. Bedenken Trennung: MVVMCross fördert eine klare Trennung von Bedenken, indem die Anwendung in zwei Hauptteile unterteilt wird: den Kern und die Benutzeroberfläche. Das Kernprojekt, in der Regel eine tragbare Klassenbibliothek (PCL) oder .NET -Standardbibliothek, enthält alle ViewModels, Modelle und Geschäftslogik. Dies ermöglicht eine maximale Wiederverwendung von Code über verschiedene Plattformen hinweg, da die Geschäftslogik aus plattformspezifischem Code entkoppelt ist [1] [2] [7].
2. ViewModels im Kernprojekt: Durch die Platzierung von ViewModels in das Kernprojekt ermöglicht MVVMCross Entwicklern, diese Komponenten auf mehreren Plattformen zu teilen. Dies bedeutet, dass die Logik für den Umgang mit Benutzerinteraktionen, Datenmanipulation und Navigation ohne Änderung auf verschiedenen Plattformen wie iOS, Android und Windows wiederverwendet werden kann [1] [3] [9].
3. Datenbindung: MVVMCross unterstützt die Datenbindung, die die Benutzeroberfläche automatisch aktualisiert, wenn Änderungen im ViewModel auftreten. Diese Funktion ist entscheidend für die Aufrechterhaltung der Konsistenz über Plattformen hinweg und reduziert die Bedarf an manuellen UI-Updates, wodurch die Wiederverwendung von Code weiter verbessert wird [4] [5].
4. Abhängigkeitsinjektion und Plugins: MVVMCross enthält eine Plug-in-Architektur- und Abhängigkeitsinjektionskapazität (DI). Diese Funktionen ermöglichen es Entwicklern, plattformspezifische Funktionen so zu implementieren, dass sie leicht aus dem Kernprojekt zugreifen und wiederverwendet werden können. Dies bedeutet, dass die UI-Schicht zwar plattformspezifisch sein muss, aber viele zugrunde liegende Funktionen geteilt werden können [3] [9].
5. Navigations- und View-Moderatoren: MVVMCross bietet ein leistungsstarkes ViewModel-First Navigation System, das die Orchestrierung der Anwendungsnavigation aus dem Kernprojekt ermöglicht. Dies bedeutet, dass der Fluss von Benutzerinteraktionen und Bildschirmübergängen zentral verwaltet werden kann, wodurch die Notwendigkeit des plattformspezifischen Navigationscodes verringert werden [7].
6. Effiziente Projektstruktur: MVVMCross fördert einen strukturierten Ansatz für die Projektorganisation mit einer klaren Trennung zwischen plattform-agnostischen Code im Kern- und Plattform-spezifischen Code in den UI-Projekten. Diese Struktur erleichtert eine leichtere Wartung und Erweiterung der plattformübergreifenden Anwendungen [2] [9].
Insgesamt verbessert MVVMCross die Wiederverwendung von Code durch Zentralisierung der Geschäftslogik, die Nutzung von Datenbindung und die Bereitstellung von Tools zum Verwalten plattformspezifischer Funktionen auf einheitliche Weise. Dieser Ansatz reduziert die Menge an doppelten Code erheblich und beschleunigt die plattformübergreifende App-Entwicklung.
Zitate:[1] https://learn.microsoft.com/en-us/archive/msdn-magazine/2014/august/windows-phone-build-mvm-apps-apps-with-xamarin-and-mvmcross
[2] https://www.toptal.com/xamarin/cross-platform-apps-with-xamarin
[3] https://www.suneco.nl/blogs/boost-your-xamarin-native-projects-with-mvmcross/
[4] https://tiefenauer.github.io/blog/mobile-app-development-with-xamarin-and-mvmcross-part-1-introduction/
[5] https://www.mvmcross.com/documentation/fundamentals/data-binding
[6] https://diglib.tugraz.at/download.php?id=576a78335451d&location=browse
[7] https://www.mvmcross.com/documentation/getting-started/mvmcross-overview
[8] https://www.reddit.com/r/swift/comments/yrqlhu/is_crosplatform_the_future_of_mobile_development/
[9] https://leaware.com/creating-cross-platform-xamarin-anapplications-using-the-mvmcross-framework/
[10] https://stackoverflow.com/questions/22409697/maximizing-ui-code-resewith-xamarin-mvmcross