MVVMCross je populární rámec pro vytváření aplikací pro křížové platformy pomocí vzorce modelu-view-viewModel (MVVM). I když nabízí mnoho výhod, jako je vazba dat a injekce závislosti, existuje několik výzev spojené s jeho používáním.
Defects in Framework Components
Jednou z hlavních výzev s MVVMCrossem je přítomnost defektů v některých jeho složkách, zejména ty související s pohledy Android a iOS, které podporují vazbu dat. Tyto vady mohou vést k problémům s uživatelským rozhraním a vyžadovat další úsilí o ladění. Vzhledem k tomu, že MVVMCross je otevřený zdroj, mohou uživatelé přispívat opravami, ale to nemusí být vždy pro vývojáře přímé, aniž by došlo k rozsáhlé znalosti o vnitřnosti rámce [3].
Rychlost spouštění
Aplikace MVVMCross často zažívají pomalejší časy spouštění ve srovnání s jinými rámci. To je z velké části způsobeno mechanismy založenými na odrazu používané během inicializace, které jsou vlastní architektuře rámce. I když je tato pomalost běžná také v aplikacích Xamarin obecně, může to být nevýhoda pro uživatele, kteří očekávají rychlé spuštění aplikace [3].
Aktualizace bolesti
Upgradování verzí MVVMCross může být náročné kvůli významným změnám v pojmenování konvencí a chování. Dokumentace často zaostává za těmito aktualizacemi, což vede k obtížím při hledání řešení nových problémů. To má za následek zdlouhavý a někdy frustrující proces upgradu [3].
Kvalita dokumentace
Kvalita dokumentace MVVMCross je další výzvou. Často obsahuje pravopisné chyby, postrádá komplexní referenční materiály a zahrnuje rozbité odkazy. Vývojáři se často musí ponořit do zdrojového kódu rámce, aby našli přesné informace, které mohou být časově náročné a vyžadují dobré pochopení architektury rámce [3].
Zastavené vzorky
MVVMCross poskytuje úložiště ukázkových projektů, ale mnoho z těchto vzorků je zastaralé a není kompatibilní s nejnovějšími verzemi rámce. To ztěžuje novým vývojářům začít nebo pro stávající vývojáře se přizpůsobit změnám v rámci. Aktivně je udržováno pouze několik vzorků, což omezuje jejich užitečnost pro učení a řešení problémů [3].
Omezení vázání dat
Zatímco MVVMCross podporuje vazbu dat, určité vazebné režimy, jako je jednorázová vazba, jsou méně běžně používány a nemusí být vhodné pro všechny scénáře. Tento režim aktivně nesleduje změny z ViewModelu, což může vést k zastaralým datům v pohledu, pokud není správně spravováno [1].
Navigace a problémy s životním cyklem
Navigace mezi ViewModely a řízením jejich životního cyklu může být složité, zejména při řešení chování specifického pro platformu, jako je hrobka na Androidu. MVVMCross poskytuje metody životního cyklu, které pomáhají řídit tyto scénáře, ale jejich zvládnutí vyžaduje dobré pochopení jak rámce, tak základních specifik platformy [7].
Inversion of Control and Service Locator
Zatímco vestavěný vzorec lokátoru služeb MVVMCrossu a podpora inverze kontrolních (IOC) jsou výkonné funkce, vyžadují pečlivé nastavení a správu. Registrační služby a řešení závislostí se mohou stát složitými, pokud nejsou řádně organizovány, zejména ve větších aplikacích [3] [6].
Stručně řečeno, zatímco MVVMCross nabízí mnoho výhod pro vývoj napříč platformami, představuje několik výzev souvisejících s vadami, výkonem, dokumentací a složitostí. Řešení těchto výzev vyžaduje hluboké pochopení rámce a jeho základních technologií.
Citace:[1] https://www.mvvmcross.com/documentation/fundamentals/data-binding
[2] https://github.com/mvvmcross/mvvmcross/issues/4201
[3] http://wojosoftware.com/software/mvvmcross/
[4] https://www.mvvmcross.com/documentation/advanced/customizing-using-app-and-setup
[5] https://www.mvvmcross.com/documentation/getting-started/mvvmcross-overview
[6] https://learn.microsoft.com/en-us/archive/msdn-magazine/2014/august/windows-phone-build-mvvm-apps-with-xamarin-and-mvvmcross
[7] https://www.mvvmcross.com/documentation/fundamentals/viewmodel-lifecycle
[8] https://stackoverflow.com/questions/16301045/mvvmcross-v3-is-that-wrong-to-try-to-use-behaviours-and-storyboards-in-a-mu