MVVMCROSS verbetert aanzienlijk hergebruik van code in cross-platform-apps door gebruik te maken van het architecturale patroon van het Model-View-ViewModel (MVVM). Hier is hoe het dit bereikt:
1. Scheiding van zorgen: MVVMCross bevordert een duidelijke scheiding van zorgen door de toepassing in twee hoofdonderdelen te delen: de kern en de gebruikersinterface. Het kernproject, meestal een Portable Class Library (PCL) of .NET Standard Library, bevat alle weergavemodellen, modellen en bedrijfslogica. Dit zorgt voor maximale code hergebruik op verschillende platforms, omdat de bedrijfslogica ontkoppeld is van platformspecifieke code [1] [2] [7].
2. ViewModels in Core Project: door ViewModels in het kernproject te plaatsen, stelt MVVMCross ontwikkelaars in staat om deze componenten op meerdere platforms te delen. Dit betekent dat de logica voor het verwerken van gebruikersinteracties, gegevensmanipulatie en navigatie kan worden hergebruikt zonder aanpassing op verschillende platforms zoals iOS, Android en Windows [1] [3] [9].
3. Gegevensbinding: MVVMCross ondersteunt gegevensbinding, die de gebruikersinterface automatisch bijwerkt wanneer er wijzigingen plaatsvinden in het ViewModel. Deze functie is cruciaal voor het handhaven van de consistentie tussen platforms en vermindert de behoefte aan handmatige UI-updates, waardoor het code opnieuw wordt verbeterd [4] [5].
4. Afhankelijkheidsinjectie en plug-ins: MVVMCross bevat een plug-in architectuur en afhankelijkheidsinjectie (DI). Met deze functies kunnen ontwikkelaars platformspecifieke functionaliteiten implementeren op een manier waarop ze gemakkelijk kunnen worden toegankelijk en hergebruikt vanuit het kernproject. Dit betekent dat hoewel de UI-laag platformspecifiek moet zijn, veel onderliggende functionaliteiten nog steeds kunnen worden gedeeld [3] [9].
5. Navigatie- en weergavepresentatoren: MVVMCross biedt een krachtig ViewModel-eerste navigatiesysteem, dat de orkestratie van toepassingsnavigatie van het kernproject mogelijk maakt. Dit betekent dat de stroom van gebruikersinteracties en schermovergangen centraal kan worden beheerd, waardoor de behoefte aan platformspecifieke navigatiecode wordt verminderd [7].
6. Efficiënte projectstructuur: MVVMCross moedigt een gestructureerde benadering van projectorganisatie aan, met een duidelijke scheiding tussen platform-agnostische code in de kern- en platformspecifieke code in de UI-projecten. Deze structuur vergemakkelijkt eenvoudiger onderhoud en uitbreiding van platformonafhankelijke toepassingen [2] [9].
Over het algemeen verbetert MVVMCross code-hergebruik door bedrijfslogica te centraliseren, gegevensbinding te gebruiken en hulpmiddelen te bieden voor het beheren van platformspecifieke functionaliteiten op een uniforme manier. Deze aanpak vermindert de hoeveelheid gedupliceerde code aanzienlijk en versnelt de ontwikkeling van platformoverschrijdende app-apps.
Citaten:[1] https://learn.microsoft.com/en-us/archive/msdn-magazine/2014/august/window-phone-build-mvvm-apps-with-xamarin-and-mvvmcross
[2] https://www.toptal.com/xamarin/cross-platform-apps-with-xamarin
[3] https://www.suneco.nl/blogs/Boost-your-xamarin-native-projects-with-Mvvmcross/
[4] https://tiefenauer.github.io/blog/mobile-app-development-with-xamarin-and-mvvmcross-part-1-introductie/
[5] https://www.mvvmcross.com/documentation/fundamentals/data-binding
[6] https://diglib.tugraz.at/download.php?id=576A78335451D&location= BROWSE
[7] https://www.mvvmcross.com/documentation/getting-started/mvvmcross-overview
[8] https://www.reddit.com/r/swift/comments/yrqlhu/is_crossplatform_the_future_of_mobile_development/
[9] https://lealware.com/creating-cross-platform-xamarin-applications-using-the-mvvmcross-framework/
[10] https://stackoverflow.com/questions/22409697/maximizing-ui-code-reuse-with-xamarin-mvvmcross