MVVMCROSS forbedrer igen kodeudvendelse i cross-platform-apps ved at udnytte Model-View-ViewModel (MVVM) arkitektonisk mønster. Sådan opnår det dette:
1. Adskillelse af bekymringer: MVVMCROSS fremmer en klar adskillelse af bekymringer ved at opdele applikationen i to hoveddele: kernen og brugergrænsefladen. Kerneprojektet, typisk et bærbart klassebibliotek (PCL) eller .NET Standard Library, indeholder alle ViewModels, Models og Business Logic. Dette giver mulighed for maksimal kode genbrug på tværs af forskellige platforme, da forretningslogikken afkobles fra platformspecifik kode [1] [2] [7].
2. ViewModels in Core Project: Ved at placere ViewModels i kerneprojektet giver MVVMCROSS udviklere mulighed for at dele disse komponenter på tværs af flere platforme. Dette betyder, at logikken til håndtering af brugerinteraktioner, datamanipulation og navigation kan genbruges uden ændring på forskellige platforme som iOS, Android og Windows [1] [3] [9].
3. Databinding: MVVMCROSS understøtter databinding, som automatisk opdaterer UI, når ændringer forekommer i ViewModel. Denne funktion er afgørende for at opretholde konsistens på tværs af platforme og reducere behovet for manuelle UI-opdateringer, hvilket yderligere forbedrer kode genbrug [4] [5].
4. Afhængighedsinjektion og plugins: MVVMCROSS inkluderer en plug-in arkitektur og afhængighedsinjektion (DI) kapaciteter. Disse funktioner giver udviklere mulighed for at implementere platformspecifikke funktionaliteter på en måde, som de let kan fås adgang til og genbruges fra kerneprojektet. Dette betyder, at selvom UI-laget skal være platformspecifikt, kan mange underliggende funktionaliteter stadig deles [3] [9].
5. Navigations- og visningspræsentanter: MVVMCROSS giver et kraftfuldt ViewModel-First Navigation System, der giver mulighed for orkestrering af applikationsnavigation fra kerneprojektet. Dette betyder, at strømmen af brugerinteraktioner og skærmovergange kan styres centralt, hvilket reducerer behovet for platformspecifik navigationskode [7].
6. Effektiv projektstruktur: MVVMCROSS tilskynder til en struktureret tilgang til projektorganisation med en klar adskillelse mellem platform-agnostisk kode i kernen og platformspecifik kode i UI-projekterne. Denne struktur letter lettere vedligeholdelse og udvidelse af applikationer på tværs af platform [2] [9].
Generelt forbedrer MVVMCROSS-kode genbrug ved at centralisere forretningslogik, udnytte databinding og tilvejebringe værktøjer til styring af platformspecifikke funktionaliteter på en samlet måde. Denne tilgang reducerer mængden af duplikeret kode markant og fremskynder app-udviklingen på tværs af platform.
Citater:[1] https://learn.microsoft.com/en-us/archive/msdn-magazine/2014/august/windows-thone-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/
)
[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/
)
[10] https://stackoverflow.com/questions/22409697/maximizing-ui-code-reuse-with-xamarin-mvvmcross