Při porovnání používání MVVMCross s Xamarin.Forms a Xamarin Native se objeví několik klíčových rozdílů, především z hlediska flexibility uživatelského rozhraní, sdílení kódů a vývojového přístupu.
Flexibilita a kontrola uživatelského rozhraní
- Xamarin.Forms: Tento rámec poskytuje sdílenou vrstvu uživatelského rozhraní napříč platformami, což zjednodušuje vývoj tím, že vám umožní psát kód UI jednou a nasazovat jej na více platforem. Toto sdílené uživatelské rozhraní však může omezit přizpůsobení funkcí specifických pro platformu, což vyžaduje vlastní vykreslení pro pokročilejší prvky uživatelského rozhraní [7] [9]. MVVMCross lze použít s Xamarin.Forms ke správě obchodní logiky a navigace, ale uživatelské rozhraní zůstává standardizováno napříč platformami [1] [10].
- Xamarin Native: Při používání rodáka Xamarin s MVVMCrossem máte pro každou platformu úplnou kontrolu nad uživatelským rozhraním. To umožňuje implementace uživatelského rozhraní specifické pro platformu, maximalizuje nativní vzhled a dojem z každé platformy. I když tento přístup vyžaduje větší úsilí k vývoji samostatných vrstev uživatelského rozhraní pro iOS a Android, nabízí větší flexibilitu a přizpůsobení [7] [9].
Sdílení kódu a opětovné použití
- Xamarin.Forms: S xamarin.forms můžete sdílet nejen obchodní logiku (přes MVVMCross), ale také kód uživatelského rozhraní napříč platformami. To zjednodušuje vývoj a snižuje množství kódu, který musíte udržovat. UI je však omezeno na společný soubor prvků, které pracují na všech platformách [4] [10].
- Xamarin Native: V nativním nastavení Xamarin s MVVMCross můžete sdílet obchodní logiku (ViewModels) napříč platformami, ale pro každou platformu musíte implementovat samostatně. Tento přístup umožňuje více opětovného použití kódu v prezentační vrstvě a logice UI při použití MVVMCross, ale stále vyžaduje vývoj UI specifického pro platformu [9].
Vývojový přístup
- Xamarin.Forms: Vývoj s Xamarin.Forms a MVVMCross je často preferován vývojáři bez rozsáhlého mobilního zážitku, protože zjednodušuje vývoj meziplatnového uživatelského rozhraní. Rámec zpracovává velkou část základní složitosti a umožňuje vývojářům soustředit se na sdílenou logiku a UI [4] [10].
-Xamarin Native: Vývoj nativního xamarinu s MVVMCrossem je obvykle upřednostňován vývojáři, kteří chtějí jemnozrnnou kontrolu nad uživatelským rozhraním a jsou spokojeni s vývojem specifickým pro platformu. Tento přístup vyžaduje větší odbornost v oblasti rozvoje nativních iOS a Androidu, ale nabízí větší flexibilitu při navrhování a implementaci uživatelského rozhraní [7] [9].
Navigace a vazba
- Xamarin.Forms s mvvmcross: Navigace v Xamarin.Forms s mvvmcross je spravována na úrovni viewModel, což umožňuje čisté oddělení obav. MVVMCross poskytuje zvýšené vazebné schopnosti, jako jsou hodnoty zálohy, ačkoli postrádá některé funkce, jako je zdrojová vlastnost, která se nachází ve standardních vazbách Xamarin.Forms [2] [10].
- Xamarin Native s MVVMCross: V nativních projektech Xamarin MVVMCross zpracovává navigaci a párování pohledu/viewModel, což umožňuje konzistentní architekturu MVVM napříč platformami. Toto nastavení umožňuje vývojářům využívat navigační vzorce specifické pro platformě při zachování sdílené obchodní logické vrstvy [3] [9].
Stručně řečeno, zatímco oba přístupy mohou využít mvvmcross pro architekturu MVVM, Xamarin.Forms nabízí sdílenou vrstvu UI s menší kontrolou nad funkcemi UI specifické pro platformu, zatímco nativní Xamarin poskytuje plnou kontrolu nad přizpůsobením UI, ale vyžaduje více vývojového úsilí pro samostatné implementace uživatelského rozhraní.
Citace:[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-parsons-mvvmcross-speeds-xamarin-developalizes-ux/
[9] https://www.suneco.nl/blogs/boost-your-xamarin-projects-with-mvvmcross/
[10] https://visualstudiomagazine.com/articles/2018/05/08/Build-a-xamarin.forms-application.aspx