MVVMCROSS un XAMARIN.Forms ir divas atšķirīgas tehnoloģijas, ko izmanto dažādu platformu mobilo lietotņu izstrādē, katrs kalpo dažādiem mērķiem un piedāvā unikālas priekšrocības.
Xamarin.forms pārskats
Xamarin.Forms ir Microsoft izstrādāts ietvars, kas ļauj izstrādātājiem izveidot starpplatformu lietojumprogrammas, izmantojot koplietotu C# CodeBase un XAML lietotāja interfeisam. Tas ļauj izstrādātājiem rakstīt vienreiz un palaist vairākās platformās, ieskaitot iOS, Android un UWP. Xamarin.Forms ir ideāli piemērots projektiem, kur ir vēlama konsekventa lietotāja saskarne dažādās platformās, un tas vienkāršo attīstības procesu, nodrošinot vienotu API UI komponentiem. Tomēr šī konsekvence nāk uz elastības rēķina, jo lietotāja saskarne ir ierobežota ar kopīgu elementu apakškopu no katras platformas, kas var izraisīt ierobežojumus vietējā izskata un sajukuma vai uzlabotas lietotāja interfeisa pielāgošanas sasniegšanā [4] [7].
MVVMCROSS pārskats
MVVMCROSS ir savstarpēja platforma MVVM (modeļa-View-ViewModel) ietvars, kas atbalsta Xamarin.ios, Xamarin.android, Xamarin.Forms un citas platformas. Tas koncentrējas uz biznesa loģikas atdalīšanu no lietotāja saskarnes, ļaujot izstrādātājiem dalīties ievērojamā daļu no sava koda dažādās platformās. MVVMCROSS nodrošina tādas funkcijas kā datu saistīšana, navigācija, kontroles inversija un atkarības injekcija, kas atvieglo sarežģītu lietojumprogrammu attīstību. Atšķirībā no Xamarin.forms, MVVMCross neīsteno noteiktu UI sistēmu; Tā vietā tas ļauj izstrādātājiem izvēlēties, kā viņi vēlas ieviest UI katrai platformai, piedāvājot lielāku elastību vietējās lietotāja saskarnes pieredzes sasniegšanā [7] [10].
Galvenās atšķirības
1. UI ieviešana:
- Xamarin.Forms: izmanto kopīgu lietotāja saskarnes slāni dažādās platformās, kas vienkāršo attīstību, bet var ierobežot pielāgošanu un vietējo izskatu un sajūtu.
- MVVMCROSS: ļauj iegūt vietējo lietotāja saskarni katrā platformā vai koplietotajai UI ar Xamarin.Forms, nodrošinot lielāku elastību, lai sasniegtu platformai specifisku lietotāja saskarnes dizainu.
2. koda koplietošana:
- Abi ietvari nodrošina kodu koplietošanu, bet MVVMCross koncentrējas uz biznesa loģikas (ViewModels) koplietošanu, vienlaikus ļaujot dažādām lietotāja saskarnes ieviešanām. Xamarin.Forms dalās gan ar UI, gan biznesa loģiku.
3. Navigācija un datu saistīšana:
- MVVMCROSS nodrošina stabilu navigācijas sistēmu un datu saistīšanas iespējas, kas darbojas dažādos UI ietvaros, ieskaitot Xamarin.Forms. Xamarin.Forms paļaujas uz saviem navigācijas un datu saistīšanas mehānismiem.
4. Projekta sarežģītība:
- Sarežģītiem projektiem, kuriem nepieciešama uzlabota lietotāja saskarnes pielāgošana vai platformai raksturīgas funkcijas, MVVMCROSS varētu būt piemērotāks tā elastības dēļ. Vienkāršākiem projektiem, kur pietiek ar konsekventu lietotāja saskarni, Xamarin.Forms var būt vienkāršāk ieviest.
5. Attīstības pieeja:
- Xamarin.Forms bieži dod priekšroku izstrādātājiem, kas pazīstami ar XAML un .NET, jo tas nodrošina vienotu attīstības pieredzi. MVVMCROSS ir labvēlīgs projektiem, kur biznesa loģika ir jāatkāpj no lietotāja saskarnes, ļaujot vairāk kontrolēt UI ieviešanu katrā platformā.
Rezumējot, lai gan abi ietvari atbalsta starpplatformu izstrādi, Xamarin.Forms koncentrējas uz lietotāja saskarnes slāņa koplietošanu dažādās platformās, turpretī MVVMCross uzsver biznesa loģikas apmaiņu un ļauj veikt elastīgāku lietotāja saskarnes ieviešanas izvēli. Izvēle starp tām ir atkarīga no projekta prasībām attiecībā uz lietotāja saskarnes pielāgošanu, sarežģītību un kodu apmaiņas stratēģiju.
Atsauces:[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-applications-using-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-for-form-application-with-mvvmcross/
[10] https://www.suneco.nl/blogs/boost-your-xamarin-native-projects-with-mvvmcross/