„MVVMCross“ yra įvairių platformų sistema, palengvinanti programų kūrimą, naudojant modelio-View-Viewmodel (MVVM) modelį. Tai leidžia kūrėjams sukurti laisvai sujungtus, prižiūrimus ir išbandomus mobiliuosius sprendimus, atskirdami programos logiką į dvi pagrindines dalis: pagrindinį projektą ir UI projektą.
Pagrindinis projektas
Pagrindinis projektas paprastai yra .NET standartinė biblioteka, kurioje yra visas bendras kodas, įskaitant:- „ViewModels“: jie yra atsakingi už vartotojų sąveikos ir verslo logikos tvarkymą.
- Modeliai: Atspindi duomenų struktūras, naudojamas visoje programoje.
- Paslaugos: suteikite prieigą prie duomenų, interneto paslaugų ar kitų išorinių išteklių.
- Konverteriai: naudojami duomenų tipo konversijoms.
- Programos klasė: Tai yra atsakinga už programos verslo logikos ir peržiūros modelių inicijavimą. Tai taip pat tvarko pasirinktinių objektų registraciją inversijoje valdymo (IOC) konteineryje.
- „AppStart“: pasirinktinai naudojamas nustatyti, kurį rodinio modelį pirmiausia pristatyti, kai tik pradedama programa.
UI projektas
UI projektas yra specifinis platformai ir jame yra vartotojo sąsajos elementų ir konkrečios platformos kodas. Kiekvienai tikslinei platformai (pvz., „IOS“, „Android“) yra atskiras UI projektas. Šie projektai apima:- Vaizdai: Kiekvienas vaizdas yra atsakingas už atitinkamo vaizdo modelio pateikimą. Vaizdai yra sukurti naudojant „Native Platform Tools“ (pvz., „XAML“, skirtas „Xamarin.forms“, „AXML for Android“).
- „Native Application Handler“: tai tvarko vietinius gyvenimo ciklo įvykius. Pvz., „Android“ tai būtų „mainactivity“ arba „mainapplication“ klasė, o „iOS“ tai būtų „appdelegate“ klasė.
- Sąrankos klasė: Tai yra atsakinga už „MVVMCross“ įkrovos ir registravimo platformai skirtas paslaugas. Jis inicijuoja „MVVMCross“ sistemą ir nustato IOC konteinerį su konkrečiai platformos diegimais.
Core ir UI projektų sąveika
„MVVMCross“ pagrindinių ir UI projektų sąveiką palengvina MVVM modelis ir „Framework“ IOC konteineris. Štai kaip jie sąveikauja:- „ViewModel“ įrišimas: UI projektai naudoja MVVMCross, norėdami surišti rodinius modeliams peržiūrėti. Paprastai tai daroma naudojant įvardijimo konvenciją arba dekoravimo vaizdus su atributais, tokiais kaip `[MVXViewFor (TypeOF (HomeViewModel))]]`.
- Paslaugų injekcija: Pagrindinis projektas apibrėžia paslaugų sąsajas, kurios kiekvienoje platformoje įgyvendinamos skirtingai. Šios paslaugos yra užregistruotos IOC konteineryje ir įšvirkščiamos į „View“ modelius, leidžiančias atlikti konkrečios platformos funkcijas be kopijavimo kodo.
- Naršymas ir pateikimas: „MVVMCross“ pateikia naršymo tarp rodinių modelių ir rodinių pateikimo mechanizmus. Framewore naudojami pranešėjai (pvz., „IMVXIOSViewPresenter“, „IMVXandroidViewPresenter“), kad būtų galima valdyti, kaip rodomi kiekvienoje platformoje.
Atskirdama programos logiką į pagrindinius ir UI projektus, „MVVMCross“ suteikia galimybę kūrėjams maksimaliai padidinti kodo pakartotinį naudojimą visose platformose, kartu leidžiant pritaikyti platformai ir optimizuoti [1] [3] [5].
Citatos:[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-application-using-the-mvvmcross-framework/
[4] https://www.mvvmcross.com/documentation/advanced/customizing-using-app ir-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-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/