Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Aké sú hlavné rozdiely medzi použitím MVVMCross a xamarin.Forms


Aké sú hlavné rozdiely medzi použitím MVVMCross a xamarin.Forms


MVVMCROSS a Xamarin.FORMS sú dve odlišné technológie používané pri vývoji mobilných aplikácií v rámci platformy, z ktorých každá slúži rôzne účely a ponúka jedinečné výhody.

Prehľad Xamarin.Forms

Xamarin.Forms je rámec vyvinutý spoločnosťou Microsoft, ktorý vývojárom umožňuje vytvárať aplikácie medzi platformami pomocou zdieľanej C# Codebase a XAML pre používateľské rozhranie. Umožňuje vývojárom písať raz a bežať na viacerých platformách vrátane iOS, Android a UWP. Xamarin.Forms je ideálny pre projekty, v ktorých je požadované konzistentné používateľské rozhranie naprieč platformami, a zjednodušuje vývojový proces poskytovaním zjednoteného API pre komponenty používateľského rozhrania. Táto konzistentnosť však prichádza za cenu flexibility, pretože používateľské rozhranie je obmedzené na podskupinu spoločných prvkov z každej platformy, čo môže viesť k obmedzeniam pri dosahovaní pôvodného vzhľadu a pocitu alebo pokročilého prispôsobenia používateľského rozhrania [4] [7].

Prehľad MVVMCross

MVVMCROSS je rámec MVVM (Model-View-ViewModel), ktorý podporuje Xamarin.ios, Xamarin.android, Xamarin.Forms a ďalšie platformy. Zameriava sa na oddelenie obchodnej logiky od používateľského rozhrania, čo vývojárom umožňuje zdieľať významnú časť svojho kódu na rôznych platformách. MVVMCross poskytuje funkcie, ako je väzba údajov, navigácia, inverzia kontroly a injekcia závislosti, ktoré uľahčujú vývoj komplexných aplikácií. Na rozdiel od Xamarin.Forms, MVVMCross nevynucuje konkrétny rámec používateľského rozhrania; Namiesto toho umožňuje vývojárom zvoliť si, ako chcú implementovať používateľské rozhranie pre každú platformu a ponúka väčšiu flexibilitu pri dosahovaní pôvodných používateľských skúseností [7] [10].

Kľúčové rozdiely

1. Implementácia používateľského rozhrania:
- Xamarin.Forms: Používa zdieľanú vrstvu používateľského rozhrania naprieč platformami, ktorá zjednodušuje vývoj, ale môže obmedziť prispôsobenie a natívny vzhľad a dojem.
- MVVMCROSS: Umožňuje implementáciu natívneho používateľského rozhrania na každej platforme alebo zdieľanom používateľskom rozhraní s Xamarin.Forms, čo poskytuje väčšiu flexibilitu pri dosahovaní návrhov UI špecifických pre platformu.

2. Zdieľanie kódu:
- Oba rámce povoľujú zdieľanie kódu, ale MVVMCross sa zameriava na zdieľanie obchodnej logiky (ViewModels) a zároveň umožňuje rôzne implementácie používateľského rozhrania. Xamarin.Forms zdieľa UI aj obchodnú logiku.

3. Navigácia a väzba údajov:
- MVVMCross poskytuje robustný navigačný systém a možnosti väzby na dáta, ktoré fungujú v rôznych rámcoch používateľského rozhrania vrátane Xamarin.Forms. Xamarin.Forms sa spolieha na svoje vlastné navigačné a väzbové mechanizmy viazania údajov.

4. Zložitosť projektu:
- V prípade komplexných projektov, ktoré si vyžadujú pokročilé prispôsobenie používateľského rozhrania alebo funkcie špecifické pre platformu, môže byť MVVMCross vhodnejší kvôli svojej flexibilite. Pre jednoduchšie projekty, v ktorých je dostatočné konzistentné používateľské rozhranie, Xamarin.Formy môžu byť jednoduchšie implementovať.

5. Vývojový prístup:
- Xamarin.Forms často uprednostňujú vývojári oboznámení s XAML a .NET, pretože poskytuje jednotný rozvojový zážitok. MVVMCross je prospešný pre projekty, v ktorých je potrebné odradiť obchodnú logiku z používateľského rozhrania, čo umožňuje väčšiu kontrolu nad implementáciou používateľského rozhrania na každej platforme.

Stručne povedané, zatiaľ čo obidva rámce podporujú vývoj medzi platformami, Xamarin.Forms sa zameriava na zdieľanie vrstvy používateľského rozhrania cez platformy, zatiaľ čo MVVMCross zdieľajú zdieľanie obchodnej logiky a umožňuje flexibilnejšie voľby implementácie používateľského rozhrania. Výber medzi nimi závisí od požiadaviek projektu týkajúce sa prispôsobenia používateľského rozhrania, zložitosti a stratégie zdieľania kódu.

Citácie:
[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-mvvvmcross
[5] https://leaware.com/creating-cross-platform-xamarin-applications-using-the-mvvvmcross-framework/
[6] https://canbilgin.wordpress.com/tag/mvvmcross/
[7] https://www.mvvmcross.com/documentation/getting-started/getting-started
[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/