MVVMCross is een platformonafhankelijke framework dat de ontwikkeling van toepassingen vergemakkelijkt met behulp van het Model-View-ViewModel (MVVM) -patroon. Het stelt ontwikkelaars in staat om losjes gekoppelde, onderhoudbare en testbare mobiele oplossingen te maken door de applicatielogica te scheiden in twee hoofdonderdelen: het Core Project en het UI -project.
Core Project
Het kernproject is meestal een .NET -standaardbibliotheek die alle gedeelde code bevat, inclusief:- ViewModels: deze zijn verantwoordelijk voor het omgaan met gebruikersinteracties en bedrijfslogica.
- Modellen: vertegenwoordigen de gegevensstructuren die in de hele toepassing worden gebruikt.
- Services: bieden toegang tot gegevens, webservices of andere externe bronnen.
- Converters: gebruikt voor conversies van gegevenstype.
- APP -klasse: dit is verantwoordelijk voor het initialiseren van de bedrijfslogica van de applicatie en weergave modellen. Het behandelt ook de registratie van aangepaste objecten in de inversie van controle (IOC) container.
- AppStart: Optioneel gebruikt om te bepalen welk weergavemodel moet worden gepresenteerd wanneer de applicatie start.
UI -project
Het UI-project is platformspecifiek en bevat de gebruikersinterface-elementen en platformspecifieke code. Voor elk doelplatform (bijvoorbeeld iOS, Android) is er een afzonderlijk UI -project. Deze projecten omvatten:- Weergaven: elke weergave is verantwoordelijk voor het presenteren van een bijbehorend weergavemodel. Weergaven zijn ontworpen met behulp van native platformtools (bijv. XAML voor Xamarin.Forms, AXML voor Android).
- Native Application Handler: dit behandelt native lifecycle -gebeurtenissen. Op Android zou het bijvoorbeeld een klasse `mainactiviteit 'of` mainapplication' zijn, terwijl het op iOS een klasse 'AppDelegate' zou zijn.
- Setup-klasse: dit is verantwoordelijk voor Bootstrapping MVVMCross en het registreren van platformspecifieke services. Het initialiseert het MVVMCross-framework en stelt de IOC-container in met platformspecifieke implementaties.
Interactie tussen kern- en UI -projecten
De interactie tussen de kern- en UI -projecten in MVVMCross wordt vergemakkelijkt door het MVVM -patroon en de IOC -container van het framework. Hier is hoe ze op elkaar inwerken:- ViewModel Binding: de UI -projecten gebruiken MVVMCross om weergaven te binden om modellen te bekijken. Dit wordt meestal gedaan met behulp van een naamgevingsconventie of door uitzichten te decoreren met attributen zoals `[mvxviewfor (typeof (HomeViewModel))]]`.
- Service -injectie: het kernproject definieert interfaces voor services die op elk platform anders worden geïmplementeerd. Deze services zijn geregistreerd in de IOC-container en geïnjecteerd in weergavemodellen, waardoor platformspecifieke functionaliteit mogelijk is zonder duplicerende code.
- Navigatie en presentatie: MVVMCross biedt mechanismen voor het navigeren tussen weergavemodellen en het presenteren van weergaven. Het framework maakt gebruik van presentatoren (bijv. `ImvxiosViewPresenter`,` imvxandroidViewPresenter`) om te beheren hoe weergaven op elk platform worden weergegeven.
Door de applicatielogica te scheiden in kern- en UI-projecten, stelt MVVMCross ontwikkelaars in staat om code hergebruik te maximaliseren tussen platforms, terwijl het nog steeds platformspecifieke aanpassing en optimalisatie mogelijk maakt [1] [3] [5].
Citaten:[1] https://www.mvvmcross.com/documentation/getting-started/mvvmcross-overview
[2] https://canbilgin.wordpress.com/tag/mvvmcross/
[3] https://lealware.com/creating-cross-platform-xamarin-applications-using-the-mvvmcross-framework/
[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/
[6] https://learn.microsoft.com/en-us/archive/msdn-magazine/2014/august/window-phone-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-mvvmcross/