MVVMcross in Xamarin.Foms sta dve različni tehnologiji, ki se uporabljata pri razvoju mobilnih aplikacij med platformami, pri čemer vsaka služi različnim namenom in ponujata edinstvene prednosti.
Pregled Xamarin.Forms
Xamarin.forms je okvir, ki ga je razvil Microsoft, ki razvijalcem omogoča ustvarjanje aplikacij za več platform s pomočjo skupne C# CodeBase in XAML za uporabniški vmesnik. Razvijalcem omogoča, da enkrat pišejo in delujejo na več platformah, vključno z iOS, Android in UWP. Xamarin.forms je idealen za projekte, kjer je zaželen dosleden uporabniški vmesnik na platformah in poenostavi razvojni postopek z zagotavljanjem enotnega API -ja za komponente uporabniškega vmesnika. Vendar ta doslednost prihaja na ceno prožnosti, saj je uporabniški vmesnik omejen na podskupino skupnih elementov z vsake platforme, kar lahko privede do omejitev pri doseganju domačega videza in občutka ali naprednega prilagoditve uporabniškega vmesnika [4] [7].
Pregled mvvmcross
MVVMcross je okvir za navzkrižno platformo MVVM (Model-View-ViewModel), ki podpira Xamarin.ios, Xamarin.android, Xamarin.Forms in druge platforme. Osredotoča se na ločevanje poslovne logike od uporabniškega vmesnika, kar omogoča razvijalcem, da si delijo pomemben del svoje kode na različnih platformah. MVVMcross ponuja funkcije, kot so vezava podatkov, navigacija, inverzija nadzora in vbrizgavanje odvisnosti, ki olajšajo razvoj zapletenih aplikacij. Za razliko od xamarin.Forms MVVMcross ne uveljavlja določenega okvira uporabniškega vmesnika; Namesto tega razvijalcem omogoča, da izberejo, kako želijo implementirati uporabniški vmesnik za vsako platformo in ponujajo večjo prilagodljivost pri doseganju domačih izkušenj z uporabniškim vmesnikom [7] [10].
Ključne razlike
1. Izvedba uporabniškega vmesnika:
- Xamarin.Forms: Uporablja skupno plast uporabniškega vmesnika po platformah, ki poenostavi razvoj, vendar lahko omeji prilagoditev in domači videz in občutek.
- MVVMcross: Omogoča izvajanje domačega uporabniškega vmesnika na vsaki platformi ali v skupni rabi uporabniškega vmesnika z Xamarin.forms, kar zagotavlja večjo prilagodljivost pri doseganju modelov uporabniškega vmesnika, specifičnih za platformo.
2. Skupna raba kode:
- Oba okvira omogočata skupno rabo kode, vendar se MVVMcross osredotoča na skupno rabo poslovne logike (ViewModels), hkrati pa omogočata različne implementacije uporabniškega vmesnika. Xamarin.forms deli tako uporabniški vmesnik kot tudi poslovno logiko.
3. Navigacija in vezava podatkov:
- MVVMcross ponuja močan navigacijski sistem in zmogljivosti za vezavo podatkov, ki delujejo v različnih okvirih uporabniškega vmesnika, vključno z xamarin.forms. Xamarin.forms se opira na lastne mehanizme za navigacijo in vezavo podatkov.
4. Kompleksnost projekta:
- Za zapletene projekte, ki zahtevajo napredno prilagoditev uporabniškega vmesnika ali funkcije, specifične za platformo, je MVVMcross morda bolj primeren zaradi svoje prilagodljivosti. Za enostavnejše projekte, kjer zadostuje konsistentni uporabniški vmesnik, je Xamarin.forms lahko bolj preprost za izvajanje.
5. Razvojni pristop:
- Xamarin.Forms imajo pogosto prednost razvijalci, ki poznajo XAML in .NET, saj zagotavlja enotno razvojno izkušnjo. MVVMcross je koristen za projekte, kjer je treba poslovno logiko ločiti iz uporabniškega vmesnika, kar omogoča večji nadzor nad izvajanjem uporabniškega vmesnika na vsaki platformi.
Če povzamemo, medtem ko oba okvira podpirata razvoj med platformami, se Xamarin.forms osredotoča na delitev plasti uporabniškega vmesnika na platformah, medtem ko MVVMcross poudarja delitev poslovne logike in omogoča bolj prilagodljive izbire izvajanja uporabniškega vmesnika. Izbira med njimi je odvisna od zahtev projekta glede prilagajanja uporabniškega vmesnika, zapletenosti in strategije delitve kod.
Navedbe:[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-start
[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/