Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Jaké jsou hlavní rozdíly mezi používáním MVVMCross a Xamarin.Forms


Jaké jsou hlavní rozdíly mezi používáním MVVMCross a Xamarin.Forms


MVVMCross a Xamarin.Forms jsou dvě odlišné technologie používané při vývoji mobilních aplikací pro křížové platformy, z nichž každá slouží různým účelům a nabízí jedinečné výhody.

Přehled Xamarin.Forms

Xamarin.Forms je rámec vyvinutý společností Microsoft, který vývojářům umožňuje vytvářet aplikace napříč platformami pomocí sdílené C# Codebase a XAML pro uživatelské rozhraní. Umožňuje vývojářům psát jednou a běžet na více platformách, včetně iOS, Android a UWP. Xamarin.Forms je ideální pro projekty, kde je požadováno konzistentní uživatelské rozhraní napříč platformami, a zjednodušuje proces vývoje poskytnutím jednotného API pro komponenty uživatelského rozhraní. Tato konzistence však přichází na náklady na flexibilitu, protože uživatelské rozhraní je omezeno na podskupinu společných prvků z každé platformy, což může vést k omezením při dosahování nativního vzhledu a pocitu nebo pokročilého přizpůsobení uživatelského rozhraní [4] [7].

Přehled mvvmcross

MVVMCross je meziplatformový rámec MVVM (model-view-viewModel), který podporuje Xamarin.ios, Xamarin.Android, Xamarin.Forms a další platformy. Zaměřuje se na oddělení obchodní logiky od uživatelského rozhraní a umožňuje vývojářům sdílet významnou část svého kódu na různých platformách. MVVMCross poskytuje funkce, jako je vazba dat, navigace, inverze kontroly a injekce závislosti, což usnadňuje vývoj komplexních aplikací. Na rozdíl od Xamarin.Forms MVVMCross nevynucuje konkrétní rámec uživatelského rozhraní; Místo toho umožňuje vývojářům zvolit si, jak chtějí implementovat uživatelské rozhraní pro každou platformu, což nabízí větší flexibilitu při dosahování nativních zkušeností s uživatelským rozhraním [7] [10].

Klíčové rozdíly

1. Implementace UI:
- Xamarin.Forms: Používá sdílenou vrstvu uživatelského rozhraní napříč platformami, což zjednodušuje vývoj, ale může omezit přizpůsobení a nativní vzhled a dojem.
- MVVMCross: Umožňuje nativní implementaci uživatelského rozhraní na každé platformě nebo sdílené uživatelské rozhraní s Xamarin.Forms a poskytuje větší flexibilitu při dosahování návrhů uživatelského rozhraní specifické pro platformu.

2. Sdílení kódu:
- Oba rámce umožňují sdílení kódu, ale MVVMCross se zaměřuje na sdílení obchodní logiky (ViewModels) a zároveň umožňuje různé implementace uživatelského rozhraní. Xamarin.Forms sdílí uživatelské rozhraní i obchodní logiku.

3. navigace a vazba dat:
- MVVMCross poskytuje robustní navigační systém a schopnosti vázání dat, které pracují v různých rámcích uživatelského rozhraní, včetně Xamarin.Forms. Xamarin.Forms se spoléhá na své vlastní mechanismy navigace a vázání dat.

4. Složitost projektu:
- U komplexních projektů vyžadujících pokročilé přizpůsobení uživatelského rozhraní nebo funkce specifické pro platformu může být MVVMCross vhodnější kvůli jeho flexibilitě. U jednodušších projektů, kde je dostatečné konzistentní uživatelské rozhraní, může být Xamarin.Forms jednodušší implementovat.

5. Přístup k vývoji:
- Xamarin.Forms je často preferován vývojáři, kteří jsou obeznámeni s XAML a .NET, protože poskytuje jednotný vývojový zážitek. MVVMCross je prospěšný pro projekty, kde je třeba obchodní logiku oddělit z uživatelského rozhraní, což umožňuje větší kontrolu nad implementací uživatelského rozhraní na každé platformě.

Stručně řečeno, zatímco oba rámce podporují vývoj napříč platformami, Xamarin.Forms se zaměřuje na sdílení vrstvy uživatelského rozhraní napříč platformami, zatímco MVVMCross zdůrazňuje sdílení obchodní logiky a umožňuje flexibilnější výběr implementace uživatelského rozhraní. Volba mezi nimi závisí na požadavcích projektu týkající se přizpůsobení UI, složitosti a strategie sdílení kódů.

Citace:
[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/gettingstarted
[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-projects-with-mvvmcross/