Pri porovnaní používania MVVMCROSS s Xamarin.Forms a Xamarin Native sa objaví niekoľko kľúčových rozdielov, predovšetkým z hľadiska flexibility používateľského rozhrania, zdieľania kódu a prístupu k vývoju.
UI Flexibilita a kontrola
- Xamarin.Forms: Tento rámec poskytuje zdieľanú vrstvu používateľského rozhrania naprieč platformami, ktorá zjednodušuje vývoj tak, že vám umožní písať kód používateľského rozhrania raz a nasadiť ho na viaceré platformy. Toto zdieľané používateľské rozhranie však môže obmedziť prispôsobenie na funkcie špecifické pre platformu, čo vyžaduje vlastné vykresľovače pre pokročilejšie prvky používateľského rozhrania [7] [9]. MVVMCross sa dá použiť s Xamarin.Forms na správu obchodnej logiky a navigácie, ale používateľské rozhranie zostáva štandardizované naprieč platformami [1] [10].
- Xamarin Native: Pri používaní native Xamarin s MVVMCross máte pre každú platformu úplnú kontrolu nad používateľským rozhraním. To umožňuje implementáciu používateľského rozhrania špecifické pre platformu, maximalizáciu natívneho vzhľadu a dojem z každej platformy. Aj keď tento prístup si vyžaduje väčšie úsilie na vývoj samostatných vrstiev používateľského rozhrania pre iOS a Android, ponúka väčšiu flexibilitu a prispôsobenie [7] [9].
Zdieľanie a opätovné použitie kódu
- Xamarin.Forms: S Xamarin.Forms môžete zdieľať nielen obchodnú logiku (prostredníctvom MVVMCross), ale aj kód používateľského rozhrania naprieč platformami. To zjednodušuje vývoj a znižuje množstvo kódu, ktorý potrebujete na udržanie. UI sa však obmedzuje na spoločný súbor prvkov, ktoré fungujú na všetkých platformách [4] [10].
- Xamarin Native: V natívnom nastavení Xamarin s MVVMCross môžete zdieľať obchodnú logiku (ViewModels) naprieč platformami, ale používateľské rozhranie musíte implementovať osobitne pre každú platformu. Tento prístup umožňuje viac opätovného použitia kódu v prezentačnej vrstve a logike používateľského rozhrania pri používaní MVVMCross, ale stále vyžaduje vývoj používateľského rozhrania špecifického pre platformu [9].
Vývojový prístup
- Xamarin.Forms: Vývoj s Xamarin.Forms a MVVMCross je často uprednostňovaný vývojármi bez rozsiahlych mobilných skúseností, pretože zjednodušuje vývoj používateľského rozhrania v rámci platformy. Rámec sa zaoberá väčšinou základnej zložitosti a umožňuje vývojárom zamerať sa na zdieľanú logiku a používateľské rozhranie [4] [10].
-Xamarin Native: Natívny vývoj Xamarin s MVVMCross zvyčajne uprednostňuje vývojári, ktorí chcú jemnozrnnú kontrolu nad používateľským rozhraním a sú pohodlní s vývojom špecifickým pre platformu. Tento prístup si vyžaduje viac odborných znalostí v oblasti rozvoja pôvodných iOS a Android, ale ponúka väčšiu flexibilitu pri návrhu a implementácii používateľského rozhrania [7] [9].
navigácia a väzba
- xamarin.Forms s MVVMCross: Navigácia v xamarin.Forms s MVVMCross je spravovaná na úrovni pohľadu, čo umožňuje čisté oddelenie obáv. MVVMCross poskytuje vylepšené väzbové schopnosti, ako sú napríklad záložné hodnoty, aj keď im chýba niektoré funkcie, ako je vlastnosť zdroja nájdená v štandardných väzbách xamarin.Forms [2] [10].
- Xamarin Native s MVVMCross: V natívnych projektoch Xamarin, MVVMCross spracováva navigáciu a párovanie pohľadov/ViewModel, čo umožňuje konzistentnú architektúru MVVM naprieč platformami. Toto nastavenie umožňuje vývojárom využívať navigačné vzorce špecifické pre platformu a zároveň udržiavať zdieľanú obchodnú logickú vrstvu [3] [9].
Stručne povedané, zatiaľ čo oba prístupy môžu využívať MVVMCross pre architektúru MVVM, Xamarin.Forms ponúka zdieľanú vrstvu používateľského rozhrania s menšou kontrolou nad funkciami používateľského rozhrania špecifické pre platformu, zatiaľ čo Xamarin Native poskytuje úplnú kontrolu nad prispôsobením používateľského rozhrania, ale vyžaduje väčšie vývojové úsilie pre samostatné implementácie UI.
Citácie:[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-mvvvmcross
[8] https://mentormate.com/blog/6-reasons-mvvmcross-Speeds-xamarin-development-personalizácie-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