MVVMCROSS forbedrer kode-gjenbruk betydelig i apper på tvers av plattformer ved å utnytte modell-view-viewmodell (MVVM) arkitektonisk mønster. Slik oppnår det dette:
1. Separasjon av bekymringer: MVVMCROSS fremmer en klar separasjon av bekymringer ved å dele applikasjonen i to hoveddeler: kjernen og brukergrensesnittet. Kjerneprosjektet, typisk et bærbart klassebibliotek (PCL) eller .NET Standard Library, inneholder alle ViewModels, Models and Business Logic. Dette gir mulighet for maksimal bruk av kode på tvers av forskjellige plattformer, ettersom forretningslogikken er koblet fra plattformspesifikk kode [1] [2] [7].
2. ViewModels in Core Project: Ved å plassere ViewModels in the Core Project, gjør MVVMCROSS utviklerne å dele disse komponentene på flere plattformer. Dette betyr at logikken for håndtering av brukerinteraksjoner, datamanipulering og navigasjon kan gjenbrukes uten modifisering på forskjellige plattformer som iOS, Android og Windows [1] [3] [9].
3. Databinding: MVVMCROSS støtter databinding, som automatisk oppdaterer brukergrensesnittet når endringer skjer i ViewModel. Denne funksjonen er avgjørende for å opprettholde konsistens på tvers av plattformer og reduserer behovet for manuelle UI-oppdateringer, noe som ytterligere forbedrer gjenbruk av kode [4] [5].
4. Avhengighetsinjeksjon og plugins: MVVMCROSS inkluderer en plug-in-arkitektur og avhengighetsinjeksjonsinnsprøytning (DI). Disse funksjonene gjør det mulig for utviklere å implementere plattformspesifikke funksjoner på en måte som de lett kan nås og gjenbrukes fra kjerneprosjektet. Dette betyr at selv om UI-laget må være plattformspesifikt, kan mange underliggende funksjonaliteter fremdeles deles [3] [9].
5. Navigasjons- og visningspresentanter: MVVMCROSS gir et kraftig ViewModel-First Navigation System, som gir mulighet for orkestrering av applikasjonsnavigasjon fra kjerneprosjektet. Dette betyr at strømmen av brukerinteraksjoner og skjermoverganger kan administreres sentralt, noe som reduserer behovet for plattformspesifikk navigasjonskode [7].
6. Effektiv prosjektstruktur: MVVMCROSS oppmuntrer til en strukturert tilnærming til prosjektorganisasjon, med en klar skille mellom plattform-agnostisk kode i kjerne- og plattformspesifikk kode i UI-prosjektene. Denne strukturen letter enklere vedlikehold og utvidelse av applikasjoner på tvers av plattformer [2] [9].
Totalt sett forbedrer MVVMCROSS-gjenbruk ved å sentralisere forretningslogikk, utnytte databinding og gi verktøy for å håndtere plattformspesifikke funksjoner på en enhetlig måte. Denne tilnærmingen reduserer mengden duplisert kode betydelig og fremskynder apputviklingen på tvers av plattformer.
Sitasjoner:[1] https://learn.microsoft.com/en-us/archive/msdn-magazine/2014/august/windows-tone-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-apputelopment-with-xamarin-and-mvmcross-part-1-introduction/
[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://leaware.com/creating-cross-platform-xamarin-applications-sing-the-mvvmcross-ramwork/
[10] https://stackoverflow.com/questions/22409697/maximizing-ui-code-reuse-with-xamarin-mvmcross