MVVMCROSS støtter plattformspesifikk kode gjennom flere mekanismer, slik at utviklere kan lage applikasjoner på tvers av plattformer mens de fremdeles utnytter innfødte plattformfunksjoner. Her er en detaljert oversikt over hvordan MVVMCROSS letter plattformspesifikk kode:
1. Separasjon av bekymringer **
MVVMCROSS-applikasjoner er vanligvis strukturert i to hoveddeler: et kjerneprosjekt og plattformspesifikke UI-prosjekter. Kjerneprosjektet, ofte implementert som et bærbart klassebibliotek (PCL) eller .NET standardbibliotek, inneholder forretningslogikken, modeller, visningsmodeller og grensesnitt for plattformspesifikke tjenester. Denne separasjonen muliggjør maksimal kode gjenbruk på tvers av plattformer mens du holder plattformspesifikk kode isolert i UI-prosjektene [2] [7].2. Inversjon av kontroll (IOC) og avhengighetsinjeksjon **
MVVMCROSS bruker en IOC -beholder for å administrere avhengigheter. Dette gjør det mulig for utviklere å registrere plattformspesifikke tjenester i de plattformspesifikke prosjektene og injisere dem i kjerneprosjektets visningsmodeller. For eksempel, hvis en applikasjon trenger å få tilgang til kameraet, kan kjerneprosjektet definere et grensesnitt for kameratilgang, og hvert plattformspesifikt prosjekt kan gi sin egen implementering av dette grensesnittet. IOC-beholderen løser deretter disse avhengighetene ved kjøretid, og sikrer at riktig plattformspesifikk tjeneste brukes [2] [8] [11].3. plattformspesifikke tjenester **
Plattformspesifikke tjenester implementeres i de opprinnelige UI-prosjektene. Disse tjenestene er registrert i installasjonsklassen for hvert plattformprosjekt. Oppsettklassen er ansvarlig for å bootstrapping MVVMCROSS og registrere plattformspesifikke tjenester med IOC-beholderen. Dette lar visningsmodeller i kjerneprosjektet bruke plattformspesifikk funksjonalitet uten direkte å referere til plattformspesifikke API-er [2] [7].4. Plugin Framework **
MVVMCROSS inkluderer et plugin-rammeverk som lar utviklere enkelt integrere plattformspesifikke funksjoner i applikasjonene sine. Plugins kan gi funksjonaliteter som GPS -plassering, lokalisering, sensorer og mer. Disse plugins er registrert med IOC-beholderen, slik at visningsmodeller kan få tilgang til plattformspesifikke funksjoner gjennom avhengighetsinjeksjon. Dette rammeverket støtter også spotte implementeringer for testformål [4] [11].5. Tilpassbar bindingsmotor **
MVVMCROSS gir en tilpassbar bindingsmotor som lar utviklere lage tilpassede bindinger for plattformspesifikke visninger. Denne funksjonen er spesielt nyttig når du jobber med native kontroller som ikke støtter standard databindingsmekanismer. Ved å definere tilpassede bindinger, kan utviklere sikre at visningsmodellene deres er riktig koblet til plattformspesifikke visninger [4].6. Platformpresentanter **
MVVMCROSS bruker plattformspesifikke presentatører (f.eks. `IMVXIOSViewPresenter`,` IMVXandroidViewPresenter`) for å administrere hvordan visninger vises på hver plattform. Disse presentatørene tillater tilpasning av presentasjonslogikken, slik at utviklere kan tilpasse UI -atferden til den spesifikke plattformens krav [3].Oppsummert støtter MVVMCROSS plattformspesifikk kode ved å gi en strukturert tilnærming til å skille forretningslogikk fra plattformspesifikk implementering, utnytte IOC og avhengighetsinjeksjon for tjenestestyring, og tilby tilpassbar binding og plugin-rammer for integrering av innfødte funksjoner. Dette gjør at utviklere kan maksimere gjenbruk av kode mens de fremdeles leverer plattformspesifikke brukeropplevelser.
Sitasjoner:[1] https://www.suneco.nl/blogs/boost-your-xamarin-native-projects-with-mvvmcross/
[2] https://dev.to/christian1006/creating-cross-platform-xamarin-applications-sing-the-mvvmcross-ramework-2920
[3] https://canbilgin.wordpress.com/tag/mvvmcross/
[4] https://github.com/mvvmcross/mvvmcross
[5] https://www.codeproject.com/articles/863695/introduction-to-mvvmcross-platform
[6] https://mentormate.com/blog/6-reasons-mvvmcross-speeds-xamarin-development-personalizes-ux/
[7] https://www.mvvmcross.com/documentation/getting-started/mvvmcross-overview
[8] https://stackoverflow.com/questions/14337063/platform-spesific-ioc-in-mvvmcross
[9] https://www.mvvmcross.com/documentation/getting-started/getting-started
[10] https://leaware.com/creating-cross-platform-xamarin-applications-sing-the-mvvmcross-ramwork/
[11] https://learn.microsoft.com/en-us/archive/msdn-magazine/2014/august/windows-tone-build-mvvm-apps-with-xamarin-and-mvvmcross