Pri primerjavi uporabe MVVMcross z Xamarin.Forms in Xamarin Native se pojavi več ključnih razlik, predvsem v smislu prilagodljivosti uporabniškega vmesnika, delitve kode in pristopa pri razvoju.
UI Prilagodljivost in nadzor
- Xamarin.Forms: Ta okvir ponuja skupni sloj uporabniškega vmesnika po platformah, ki poenostavi razvoj, tako da omogoča, da enkrat napišete kodo uporabniškega vmesnika in jo namestite na več platform. Vendar lahko ta skupni uporabniški vmesnik omeji prilagajanje funkcijam, specifičnim za platformo, ki zahtevajo upodabljalce po meri za naprednejše elemente uporabniškega vmesnika [7] [9]. MVVMcross se lahko uporablja z Xamarin.Forms za upravljanje poslovne logike in navigacije, vendar uporabniški vmesnik ostane standardiziran na platformah [1] [10].
- Xamarin Native: Pri uporabi Xamarin Native z mvvmcrosjem imate popoln nadzor nad uporabniškim vmesnikom za vsako platformo. To omogoča izvedbo uporabniškega vmesnika, specifične za platformo, kar maksimira domači videz in občutek vsake platforme. Čeprav ta pristop zahteva več truda za razvoj ločenih plasti uporabniškega vmesnika za iOS in Android, ponuja večjo prožnost in prilagoditev [7] [9].
Skupna raba in ponovna uporaba kode
- xamarin.forms: Z xamarin.forms lahko delite ne samo poslovno logiko (prek MVVMcross), ampak tudi kodo uporabniškega vmesnika na platformah. To poenostavi razvoj in zmanjšuje količino kode, ki jo morate vzdrževati. Vendar je uporabniški vmesnik omejen na skupni nabor elementov, ki delujejo na vseh platformah [4] [10].
- Xamarin Native: V nastavitvi domačega Xamarina z MVVMcross lahko delite poslovno logiko (ViewModels) na platformah, vendar morate za vsako platformo implementirati uporabniški vmesnik. Ta pristop omogoča več ponovne uporabe kode v predstavitvenem sloju in logiki uporabniškega vmesnika pri uporabi MVVMcross, vendar še vedno zahteva razvoj uporabniškega vmesnika, specifičnega za platformo [9].
Razvojni pristop
- xamarin.Forms: Razvoj z Xamarin.Forms in MVVMcross imajo razvijalci pogosto prednost brez obsežnih mobilnih izkušenj, saj poenostavlja razvoj uporabniškega vmesnika med platformami. Okvir obravnava velik del osnovne zapletenosti, ki razvijalcem omogoča, da se osredotočijo na skupno logiko in uporabniški vmesnik [4] [10].
-Xamarin Native: Native Xamarin Development z MVVMcrossom običajno naklonijo razvijalci, ki želijo natančen nadzor nad uporabniškim vmesnikom in so zadovoljni z razvojem, specifičnim za platformo. Ta pristop zahteva več strokovnega znanja pri domačem razvoju iOS in Android, vendar ponuja večjo prilagodljivost pri oblikovanju in izvajanju uporabniškega vmesnika [7] [9].
Navigacija in vezava
- xamarin.Forms z mvvmcross: navigacija v xamarin.Forms z mvvmcross upravlja na ravni ViewModel, kar omogoča čisto ločevanje pomislekov. MVVMcross zagotavlja izboljšane sposobnosti vezave, kot so vrednosti odmika, čeprav nima nekaterih lastnosti, kot je izvorna lastnost, ki jo najdemo v standardnih Xamarin.Form Bindings [2] [10].
- Xamarin Native z mvvmcross: V Native Xamarin projekti MVVMcross obravnava navigacijo in združevanje pogleda/pogleda na pogled, kar omogoča dosledno arhitekturo MVVM po platformah. Ta nastavitev omogoča razvijalcem, da izkoristijo vzorce navigacije, specifične za platformo, hkrati pa ohranjajo skupno poslovno logično plast [3] [9].
Če povzamemo, medtem ko lahko oba pristopa uporabita MVVMcross za arhitekturo MVVM, Xamarin.forms ponuja skupni plast uporabniškega vmesnika z manj nadzora nad funkcijami uporabniškega vmesnika, specifičnih za platformo, medtem ko Xamarin Native zagotavlja popoln nadzor nad prilagoditvijo uporabniškega vmesnika, vendar je za ločene izvedbe uporabniškega vmesnika potrebno več razvoja.
Navedbe:[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-start
[5] https://www.reddit.com/r/androidd/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://amenormate.com/blog/6-reasons-mvvmcross-peeds-xamarin-development-perolize-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