MVVMCross je všestranný a rozšiřitelný rámec MVVM určený pro rozvoj napříč platformami, zejména v ekosystému .NET. Podporuje širokou škálu platforem, včetně Xamarin.IOS, Xamarin.Android, Xamarin.Forms, Universal Windows Platform (UWP) a Prezentačního rámce Windows (WPF) [1] [2] [4]. Jednou z klíčových rysů MVVMCross je jeho schopnost integrovat se s jinými rámci a knihovnami, která zvyšuje jeho užitečnost ve složitém vývoji aplikací.
Integrace s jinými rámci
1. Integrace CSLA.NET: MVVMCross lze použít spolu s rámcem obchodních objektů CSLA.net. Zatímco CSLA.net se zaměřuje na obchodní logiku a modelování dat, MVVMCross zpracovává logiku UI a na úrovni aplikací. Vývojáři mohou využít rámec obchodních objektů CSLA.net tím, že zdědí z „ViewModelbase“ CSLA a implementují požadavky MVVMCross. Tato integrace umožňuje sdílení kódu na platformách při zachování jasného oddělení obav [5].
2. Integrace ReactiveUi: Ačkoli MVVMCross a ReactiveUi jsou rámce MVVM, slouží různým účelům. MVVMCross se více zaměřuje na nativní mobilní aplikace a sdílení kódů, zatímco ReactiveUi zdůrazňuje reaktivní programování pomocí reaktivních rozšíření (RX). I když mohou koexistovat, obvykle se používají pro různé aspekty vývoje aplikací. MVVMCross poskytuje komplexní sadu funkcí pro vývoj uživatelského rozhraní, zatímco ReactiveUi je ideální pro aplikace vyžadující pokročilé asynchronní operace [7].
3. Xamarin.Forms a další rámce uživatelského rozhraní: MVVMCross podporuje integraci s Xamarin.Forms, což vývojářům umožňuje vytvářet aplikace napříč platformami se sdílenou obchodní logikou. Funguje také dobře s jinými rámci uživatelského rozhraní, jako jsou Maui a WPF, což poskytuje flexibilitu při výběru vrstvy uživatelského rozhraní [3] [7].
4. Plugin Framework: MVVMCross obsahuje rámec pluginu, který vývojářům umožňuje rozšířit jeho funkčnost přidáním pluginů třetích stran pro funkce, jako je umístění GPS, lokalizace a vazebná rozšíření. Tato rozšiřitelnost umožňuje vývojářům přizpůsobit rámec podle jejich potřeb projektu [1] [2].
Klíčové funkce usnadňující integraci
- Inverze kontroly (IOC) a závislost Injekce: MVVMCross poskytuje kontejner IOC, který usnadňuje injekci závislosti, což usnadňuje integraci s jinými rámci správou závislostí a služeb napříč aplikací [1] [4].
- Přizpůsobitelný vazebný motor: Rámec umožňuje vývojářům vytvářet vlastní vazby pro jejich názory, což může být užitečné při integraci s jinými komponenty nebo rámcemi uživatelského rozhraní, které vyžadují specifické mechanismy vázání dat [1] [2].
- ViewModel to ViewModel Navigation: Tato funkce pomáhá spravovat navigační logiku, kterou lze integrovat s navigačními vzory jiných rámců, aby se zajistila konzistentní uživatelská zkušenost na různých platformách [1] [2].
Stručně řečeno, MVVMCross je navržen tak, aby byl vysoce integrovatelný s jinými rámci a knihovnami, což vývojářům umožňuje využívat své silné stránky v architektuře MVVM a zároveň zahrnovat další funkce z jiných nástrojů. Díky jeho rozšiřitelnosti a podpoře různých platforem z něj činí všestrannou volbu pro vývoj aplikací napříč platformami.
Citace:[1] https://github.com/mvvmcross/mvvmcross
[2] https://dotnet.libhunt.com/mvvmcross-alternatives
[3] https://visualstudiomagazine.com/articles/2018/05/08/Build-a-xamarin.forms-application.aspx
[4] https://www.mvvmcross.com/documentation/getting-started/getting-started
[5] https://stackoverflow.com/questions/17373587/how-well--mvvmcross-and-t-work-wogether-in-a-platform-trategy
[6] https://www.mvvmcross.com/documentation/getting-started/mvvmcross-overview
[7] https://www.reactiveui.net/vs/mvvmcross
[8] https://www.mvvmcross.com
[9] https://github.com/rogerwcpt/xamarin-mvvvm-frameworks