Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Kan du förklara interaktionen mellan kärn- och UI -projekten i MVVMCross


Kan du förklara interaktionen mellan kärn- och UI -projekten i MVVMCross


MVVMCROSS är ett ram för plattformar som underlättar utvecklingen av applikationer med hjälp av Model-View-ViewModel (MVVM) -mönstret. Det gör det möjligt för utvecklare att skapa löst kopplade, underhållbara och testbara mobillösningar genom att separera applikationslogiken i två huvuddelar: kärnprojektet och UI -projektet.

Kärnprojekt

Kärnprojektet är vanligtvis ett .NET -standardbibliotek som innehåller all delad kod, inklusive:
- ViewModels: Dessa är ansvariga för att hantera användarinteraktioner och affärslogik.
- Modeller: Representerar de datastrukturer som används under hela applikationen.
- Tjänster: Ge åtkomst till data, webbtjänster eller andra externa resurser.
- Omvandlare: Används för konverteringar av datatyp.
- Appklass: Detta ansvarar för att initialisera applikationens affärslogik och visningsmodeller. Den hanterar också registreringen av anpassade objekt i Inversion of Control (IOC) behållare.
- AppStart: Valfritt används för att bestämma vilken visningsmodell som ska presenteras först när applikationen startar.

UI -projekt

UI-projektet är plattformsspecifikt och innehåller användargränssnittselement och plattformsspecifik kod. För varje målplattform (t.ex. iOS, Android) finns det ett separat UI -projekt. Dessa projekt inkluderar:
- Visningar: Varje vy är ansvarig för att presentera en motsvarande visningsmodell. Vyer är designade med hjälp av infödda plattformsverktyg (t.ex. XAML för Xamarin.Forms, AXML för Android).
- Native Application Handler: Detta hanterar infödda livscykelevenemang. Till exempel på Android skulle det vara en "MainActivity" eller "MainApplication" -klass, medan på iOS skulle det vara en "AppDelegate" -klass.
- Installationsklass: Detta ansvarar för bootstrapping MVVMCross och registrera plattformsspecifika tjänster. Den initialiserar MVVMCross-ramverket och ställer in IOC-behållaren med plattformsspecifika implementeringar.

Interaktion mellan kärn- och UI -projekt

Interaktionen mellan kärn- och UI -projekten i MVVMCross underlättas av MVVM -mönstret och ramverkets IOC -behållare. Så här interagerar de:
- ViewModel Binding: UI -projekten använder MVVMCross för att binda vyer för att se modeller. Detta görs vanligtvis med hjälp av en namnkonvention eller genom att dekorera vyer med attribut som `[mvxviewfor (typeof (HomeViewModel))]`.
- Serviceinjektion: Kärnprojektet definierar gränssnitt för tjänster som implementeras annorlunda på varje plattform. Dessa tjänster är registrerade i IOC-behållaren och injiceras i visningsmodeller, vilket möjliggör plattformsspecifik funktionalitet utan duplikeringskod.
- Navigering och presentation: MVVMCross tillhandahåller mekanismer för att navigera mellan visningsmodeller och presentera vyer. Ramverket använder presentatörer (t.ex. `IMVXIOSVIEWPRESENTER`,` IMVXandroidViewPresenter ') för att hantera hur vyer visas på varje plattform.

Genom att separera applikationslogiken i kärn- och UI-projekt gör MVVMCross att utvecklare maximera kodåteranvändning över plattformar samtidigt som de möjliggör plattformsspecifik anpassning och optimering [1] [3] [5].

Citeringar:
[1] https://www.mvvmcross.com/documentation/geting-started/mvvmcross-overview
[2] https://canbilgin.wordpress.com/tag/mvvmcross/
]
[4] https://www.mvvmcross.com/documentation/advanced/customizing-using-app-and-setup
[5] https://www.suneco.nl/blogs/boost-your-xamarin-native-projects-with-mvvmcross/
]
[7] https://www.mvvmcross.com/documentation/tutorials/tipcalc/the-core-project
[8] https://canbilgin.wordpress.com/2017/03/26/xamarin-forms-application-with-mvvmcross/