Palyginus MVVMCross naudojimą su „Xamarin.forms“ ir „Xamarin Native“, atsiranda keli pagrindiniai skirtumai, visų pirma atsižvelgiant į vartotojo sąsajos lankstumą, kodo dalijimąsi ir kūrimo metodu.
UI lankstumas ir valdymas
- „Xamarin.Forms“: Ši sistema pateikia bendrą UI sluoksnį visose platformose, o tai supaprastina plėtrą, leisdamas jums vieną kartą parašyti UI kodą ir diegti jį keliose platformose. Tačiau ši bendra vartotojo sąsaja gali apriboti pritaikymą konkrečioms platformai būdingoms funkcijoms, reikalaujančioms patobulintų UI elementų pateiktų pateikėjų [7] [9]. „MVVMCross“ gali būti naudojamas su „Xamarin.Forms“ verslo logikai ir navigacijai valdyti, tačiau UI išlieka standartizuota visose platformose [1] [10].
- „Xamarin Native“: Kai naudojate „Xamarin Native“ su MVVMCross, jūs visiškai valdote kiekvienos platformos vartotojo sąsają. Tai leidžia įgyvendinti konkrečią platformos vartotojo sąsają, maksimaliai padidinti kiekvienos platformos vietinę išvaizdą ir pojūtį. Nors šis požiūris reikalauja daugiau pastangų, norint sukurti atskirus „iOS“ ir „Android“ vartotojo sąsajos sluoksnius, jis siūlo didesnį lankstumą ir pritaikymą [7] [9].
kodo dalijimasis ir pakartotinis naudojimas
- „Xamarin.Forms“: naudodami „Xamarin.Forms“, galite bendrinti ne tik verslo logiką (per MVVMCross), bet ir UI kodą visose platformose. Tai supaprastina plėtrą ir sumažina jūsų reikalingo kodo kiekį. Tačiau vartotojo sąsaja apsiriboja įprastu elementų rinkiniu, kuris veikia visose platformose [4] [10].
- „Xamarin Native“: Natūralioje „Xamarin“ sąrankoje su „MVVMCross“ galite pasidalyti verslo logika („ViewModels“) visose platformose, tačiau kiekvienai platformai turite įdiegti vartotojo sąsają atskirai. Šis metodas leidžia daugiau pakartotinai naudoti kodų pateikimo sluoksnį ir UI logiką, kai naudojama MVVMCross, tačiau vis tiek reikia konkrečios platformos UI kūrimui [9].
Plėtros metodas
- „Xamarin.Forms“: „Xamarin.Forms“ ir „MVVMCross“ plėtrai dažnai teikia pirmenybė kūrėjams, neturintiems didelės mobiliojo ryšio patirties, nes tai supaprastina įvairių platformų UI kūrimą. Sistema tvarko didžiąją dalį pagrindinio sudėtingumo, leisdamas kūrėjams sutelkti dėmesį į bendrą logiką ir vartotojo sąsają [4] [10].
-Gimtoji „Xamarin“: „Gimtojo„ Xamarin “plėtrą naudojant MVVMCross paprastai teikia pirmenybę kūrėjams, norintiems smulkiagrūdis UI kontrolę ir kuriems patogu tobulinti platformą. Šis požiūris reikalauja daugiau žinių apie vietinę „iOS“ ir „Android“ plėtrą, tačiau jis suteikia didesnį lankstumą kuriant ir įgyvendinant UI projektavimą [7] [9].
navigacija ir įrišimas
- „Xamarin.Forms“ su MVVMCROSS: Naršymas „Xamarin.Forms“ su MVVMCross yra valdomas „ViewModel“ lygyje, leidžiančiu švariai atskirti susirūpinimą. „MVVMCross“ suteikia sustiprintas surišimo galimybes, tokias kaip atsarginės vertės, nors jai trūksta tam tikrų funkcijų, tokių kaip šaltinio savybė, rasta standartinėje „Xamarin.forms“ įrišimuose [2] [10].
- „Xamarin Native“ su „MVVMCross“: „Native Xamarin Projects“, „MVVMCross“ tvarko navigaciją ir „View/ViewModel“ porą, leidžiančią pastovią MVVM architektūrą visose platformose. Ši sąranka leidžia kūrėjams panaudoti konkrečios platformos navigacijos modelius, išlaikant bendrą verslo loginio sluoksnį [3] [9].
Apibendrinant galima pasakyti, kad nors abu metodai gali panaudoti MVVMCross, skirtą MVVM architektūrai, „Xamarin.Forms“ siūlo bendrą vartotojo sąsajos sluoksnį, turintį mažiau kontroliuojant platformos specifines UI funkcijas, tuo tarpu „Xamarin Native“ suteikia visišką UI pritaikymo kontrolę, tačiau reikalauja daugiau atskiruose UI įgyvendinimo pastangų.
Citatos:[1] https://www.mvvmcross.com/documentation/platform/xamarin.forms/xamarin-forms
[2] https://www.xamarinhelp.com/use-xamarin-forms-mvvm-framework/
[3] https://canbilgin.wordpress.com/tag/mvvmcross/
[4] https://www.mvvmcross.com/documentation/getting-started/getting-started
[5] https://www.reddit.com/r/androiddev/comments/6cseds/what_are_the_disadvantages_of_xamarin_for_android/
[6] https://canbilgin.wordpress.com/2017/03/26/xamarin-forms-application-with-mvvmcross/
[7] https://stackoverflow.com/questions/38450264/xamarin-forms-vs-xamarin-mvvmcross
[8] https://mentormate.com/blog/6-Reasons-mvvmcross-spartus-xamarin-development-personalizes-ux/
[9] https://www.suneco.nl/blogs/boost-your-xamarin-native-projects-with-mvvmcross/
[10] https://visualstudiomagazine.com/articles/2018/05/08/build-a-xamarin.forms-application.aspx