MVVMCross významně zlepšuje opětovné použití kódu v aplikacích napříč platformami využitím architektonického vzoru modelu-view-viewModel (MVVM). Zde je to, jak toho dosáhne:
1. Oddělení obav: MVVMCross podporuje jasné oddělení obav rozdělením aplikace na dvě hlavní části: jádro a uživatelské rozhraní. Základní projekt, obvykle přenosná knihovna třídy (PCL) nebo .NET Standard Library, obsahuje všechny ViewModels, modely a obchodní logiku. To umožňuje maximální opětovné použití kódu na různých platformách, protože obchodní logika je oddělena z kódu specifického pro platformu [1] [2] [7].
2. ViewModels v Core Project: Umístěním ViewModels do hlavního projektu MVVMCross umožňuje vývojářům sdílet tyto komponenty na více platformách. To znamená, že logika pro zpracování uživatelských interakcí, manipulace s daty a navigace lze znovu použít bez úpravy na různých platformách, jako jsou iOS, Android a Windows [1] [3] [9].
3. Vazba dat: MVVMCross podporuje vazbu dat, která automaticky aktualizuje uživatelské rozhraní, když se změní v ViewModel. Tato funkce je zásadní pro udržení konzistence napříč platformami a snižuje potřebu manuálního aktualizace uživatelského rozhraní, což dále zvyšuje opětovné použití kódu [4] [5].
4. Injekce závislosti a pluginy: MVVMCross zahrnuje schopnosti architektury a injekce závislosti (DI). Tyto funkce umožňují vývojářům implementovat funkce specifické pro platformu tak, aby je lze snadno přistupovat a znovu použít z hlavního projektu. To znamená, že zatímco vrstva UI musí být specifická pro platformu, lze stále sdílet mnoho základních funkcí [3] [9].
5. Navigace a view Presensers: MVVMCross poskytuje výkonný navigační systém ViewModel-First, který umožňuje orchestraci aplikační navigace z hlavního projektu. To znamená, že tok uživatelských interakcí a přechodů obrazovky lze spravovat centrálně, což snižuje potřebu navigačního kódu specifického pro platformu [7].
6. Efektivní struktura projektu: MVVMCross podporuje strukturovaný přístup k organizaci projektů, s jasným oddělením mezi agnostickým kódem platformy v jádru a platformě specifickém kódu v projektech UI. Tato struktura usnadňuje snadnější údržbu a prodloužení aplikací napříč platformami [2] [9].
Celkově MVVMCross zvyšuje opětovné použití kódu centralizací obchodní logiky, využitím vazby dat a poskytováním nástrojů pro správu funkcí specifických pro platformu sjednoceným způsobem. Tento přístup významně snižuje množství duplikovaného kódu a urychluje vývoj aplikací pro platformu.
Citace:[1] https://learn.microsoft.com/en-us/archive/msdn-magazine/2014/august/windows-phone-build-mvvm-apps-with-xamarin-and-mvvmcross
[2] https://www.toptal.com/xamarin/cross-platform-apps-with-xamarin
[3] https://www.suneco.nl/blogs/boost-your-xamarin-projects-with-mvvmcross/
[4] https://tiefenauer.github.io/blog/mobile-app-development-with-xamarin-and-mvvmcross-part-1-introduction/
[5] https://www.mvvmcross.com/documentation/fundamentals/data-binding
[6] https://diglib.tugraz.at/download.php?id=576A78335451d&location=browse
[7] https://www.mvvmcross.com/documentation/getting-started/mvvmcross-overview
[8] https://www.reddit.com/r/swift/comments/yrqlhu/is_crossplatform_the_future_of_mobile_development/
[9] https://leaware.com/creating-cross-platform-xamarin-applications-using-the-mvvmcross-framework/
[10] https://stackoverflow.com/questions/22409697/maximizing-ui-code-reuse-with-xamarin-mvvmcross