„Mvvmcross“ ir „Xamarin.formos“ yra dvi skirtingos technologijos, naudojamos kuriant įvairių platformų programų mobiliesiems plėtrai, kiekviena tarnauja skirtingiems tikslams ir siūlo unikalius pranašumus.
„Xamarin.Forms“ apžvalga
„Xamarin.Forms“ yra „Microsoft“ sukurta sistema, leidžianti kūrėjams kurti įvairių platformų programas, naudojant bendrą C# kodų bazę ir „XAML“ vartotojo sąsajai. Tai leidžia kūrėjams vieną kartą rašyti ir paleisti keliose platformose, įskaitant „iOS“, „Android“ ir UWP. „Xamarin.Forms“ yra idealus projektams, kuriuose norima nuoseklios UI platformose, ir tai supaprastina kūrimo procesą, pateikdamas vieningą UI komponentų API. Tačiau šis nuoseklumas kainuoja lankstumą, nes vartotojo sąsaja apsiriboja kiekvienos platformos bendrų elementų pogrupiu, kuris gali sukelti apribojimus siekiant natūralios išvaizdos ir pojūčio ar patobulinimo UI pritaikymo [4] [7].
„MVVMCross“ apžvalga
„MVVMCross“ yra kryžminio platformos MVVM („Model-View-Viewmodel“) sistema, palaikanti „Xamarin.ios“, „Xamarin.android“, „Xamarin.Forms“ ir kitas platformas. Daugiausia dėmesio skiriama verslo logikos atskyrimui nuo vartotojo sąsajos, leidžiančią kūrėjams pasidalyti didelę savo kodo dalį įvairiose platformose. „MVVMCross“ pateikia tokias funkcijas kaip duomenų surišimas, navigacija, valdymo inversija ir priklausomybės injekcija, palengvinanti sudėtingų programų kūrimą. Skirtingai nuo „Xamarin.Forms“, „MVVMCross“ nevykdo konkrečios vartotojo sąsajos sistemos; Vietoj to, tai leidžia kūrėjams pasirinkti, kaip jie nori įdiegti vartotojo sąsają kiekvienai platformai, siūlant daugiau lankstumo siekiant vietinės UI patirties [7] [10].
Pagrindiniai skirtumai
1. UI diegimas:
- „Xamarin.Forms“: naudoja bendrą UI sluoksnį tarp platformų, o tai supaprastina plėtrą, tačiau gali apriboti pritaikymą ir natūralų vaizdą.
- „Mvvmcross“: leidžia įgyvendinti vietinę vartotojo sąsają kiekvienoje platformoje arba bendrinti vartotojo sąsają su „Xamarin.Forms“, suteikiant daugiau lankstumo siekiant konkrečios platformos UI dizaino.
2. Kodo bendrinimas:
- Abi sistemos įgalina kodo bendrinimą, tačiau „MVVMCross“ daugiausia dėmesio skiria verslo logikos („ViewModels“) dalijimui, kartu leidžiant skirtingus UI diegimus. „Xamarin.Forms“ dalijasi tiek vartotojo sąsaja, tiek verslo logika.
3. Naršymo ir duomenų įrišimas:
- „MVVMCross“ suteikia patikimą navigacijos sistemą ir duomenų įrišimo galimybes, veikiančias įvairiose vartotojo sąsajos sistemose, įskaitant „Xamarin.Forms“. „Xamarin.Forms“ priklauso nuo savo navigacijos ir duomenų surišimo mechanizmų.
4. Projekto sudėtingumas:
- Sudėtingiems projektams, kuriems reikalingas pažangias vartotojo sąsajos pritaikymas ar konkrečios platformai būdingos funkcijos, „MvVMCross“ gali būti tinkamesnis dėl jo lankstumo. Paprastesniems projektams, kai pakanka nuoseklios vartotojo sąsajos, „Xamarin.formos“ gali būti tiesmukiškesnės.
5. Plėtros metodas:
- „Xamarin.Forms“ dažnai teikia pirmenybę kūrėjams, susipažinusiems su „XAML“ ir .NET, nes tai suteikia vieningą plėtros patirtį. „MVVMCross“ yra naudingas projektams, kuriuose verslo logiką reikia atsieti nuo vartotojo sąsajos, leidžiančios labiau kontroliuoti UI diegimą kiekvienoje platformoje.
Apibendrinant galima pasakyti, kad nors abi sistemos palaiko įvairių platformų kūrimą, „Xamarin.forms“ daugiausia dėmesio skiria UI sluoksnio dalijimui įvairiose platformose, tuo tarpu MVVMCross pabrėžia dalijimąsi verslo logika ir leidžia lanksčiau UI įgyvendinimo pasirinkimą. Pasirinkimas tarp jų priklauso nuo projekto reikalavimų, susijusių su vartotojo sąsajos pritaikymu, sudėtingumu ir kodo bendrinimo strategija.
Citatos:[1] https://visualstudiomagazine.com/articles/2018/05/08/build-a-xamarin.forms-application.aspx
[2] https://github.com/rogerwcpt/xamarin-mvvvm-frameworks
[3] https://www.mvvmcross.com/documentation/tutorials/TIPCalc/a-xamarin-forms-version
[4] https://stackoverflow.com/questions/38450264/xamarin-forms-vs-xamarin-mvvmcross
[5] https://leaware.com/creating-cross-platform-xamarin-application-sing-the-mvvmcross-framework/
[6] https://canbilgin.wordpress.com/tag/mvvmcross/
[7] https://www.mvvmcross.com/documentation/getting-started/getting-started
[8] https://www.reddit.com/r/csharp/comments/a9mph1/mvc_or_mvvm_for_xamarin/
[9] https://canbilgin.wordpress.com/2017/03/26/xamarin-forms-application-with-mvvmcross/
[10] https://www.suneco.nl/blogs/boost-your-xamarin-native-projects-with-mvvmcross/