MVVMCROSS er et rammeverk på tvers av plattformer som letter utviklingen av applikasjoner ved bruk av Model-View-ViewModel (MVVM) mønsteret. Det lar utviklere lage løst koblede, vedlikeholdbare og testbare mobile løsninger ved å skille applikasjonslogikken i to hoveddeler: kjerneprosjektet og UI -prosjektet.
Core Project
Kjerneprosjektet er vanligvis et .NET -standardbibliotek som inneholder all den delte koden, inkludert:- ViewModels: Disse er ansvarlige for å håndtere brukerinteraksjoner og forretningslogikk.
- Modeller: Representere datastrukturene som er brukt gjennom hele applikasjonen.
- Tjenester: Gi tilgang til data, webtjenester eller andre eksterne ressurser.
- Omformere: Brukes til konvertering av datatype.
- Appklasse: Dette er ansvarlig for å initialisere applikasjonens forretningslogikk og visningsmodeller. Den håndterer også registrering av tilpassede objekter i inversjonen av kontroll (IOC) -beholderen.
- AppStart: Eventuelt brukt til å bestemme hvilken visningsmodell som skal presenteres først når applikasjonen starter.
UI -prosjekt
UI-prosjektet er plattformspesifikt og inneholder brukergrensesnittelementer og plattformspesifikk kode. For hver målplattform (f.eks. IOS, Android) er det et eget UI -prosjekt. Disse prosjektene inkluderer:- Visninger: Hver visning er ansvarlig for å presentere en tilsvarende visningsmodell. Visninger er designet ved hjelp av naturlige plattformverktøy (f.eks. XAML for Xamarin.Forms, AXML for Android).
- Native Application Handler: Dette håndterer innfødte livssyklushendelser. For eksempel, på Android, ville det være en `mainactivity` eller 'mainApplication` -klasse, mens det på iOS ville være en` appdelegate` -klasse.
- Oppsettklasse: Dette er ansvarlig for bootstrapping MVVMCROSS og registrering av plattformspesifikke tjenester. Den initialiserer MVVMCROSS-rammen og setter opp IOC-beholderen med plattformspesifikke implementeringer.
interaksjon mellom kjerne- og brukergrensesnittprosjekter
Samspillet mellom kjernen og UI -prosjektene i MVVMCROSS tilrettelegges av MVVM -mønsteret og rammeverkets IOC -beholder. Slik samhandler de:- ViewModel Binding: UI -prosjektene bruker MVVMCROSS for å binde visninger for å se modeller. Dette gjøres vanligvis ved hjelp av en navnekonvensjon eller ved å dekorere visninger med attributter som `[mvxViewfor (typeof (HomeViewModel))]`.
- Tjenesteinjeksjon: Kjerneprosjektet definerer grensesnitt for tjenester som implementeres annerledes på hver plattform. Disse tjenestene er registrert i IOC-beholderen og injiseres i visningsmodeller, noe som gir mulighet for plattformspesifikk funksjonalitet uten dupliseringskode.
- Navigasjon og presentasjon: MVVMCROSS gir mekanismer for å navigere mellom visningsmodeller og presentere visninger. Rammeverket bruker presentatører (f.eks. `IMVXIOSViewPresenter`,` IMVXandroidViewPresenter`) for å administrere hvordan visninger vises på hver plattform.
Ved å skille applikasjonslogikken i kjerne- og UI-prosjekter, gjør MVVMCROSS utviklerne å maksimere kodebruk på tvers av plattformer, samtidig som det muliggjør plattformspesifikk tilpasning og optimalisering [1] [3] [5].
Sitasjoner:[1] https://www.mvvmcross.com/documentation/getting-started/mvvmcross-overview
[2] https://canbilgin.wordpress.com/tag/mvvmcross/
[3] https://leaware.com/creating-cross-platform-xamarin-applications-sing-the-mvvmcross-ramwork/
[4] https://www.mvvmcross.com/documentation/advanced/customizing-using-apps-av-and-setup
[5] https://www.suneco.nl/blogs/boost-your-xamarin-native-projects-with-mvvmcross/
[6] https://learn.microsoft.com/en-us/archive/msdn-magazine/2014/august/windows-tone-build-mvvm-apps-with-xamarin-and-mvvmcross
[7] https://www.mvvmcross.com/documentation/tutorials/tipcalc/the-core-project
[8] https://canbilgin.wordpress.com/2017/03/26/xamarin-forms-application-with-mvmcross/