MVVMCROSS to popularna struktura budowania aplikacji międzyplatformowych przy użyciu wzoru modelu-View-ViewModel (MVVM). Chociaż oferuje wiele korzyści, takich jak wiązanie danych i wtrysk zależności, istnieje kilka wyzwań związanych z jego wykorzystaniem.
wady w składowych składnikach
Jednym z głównych wyzwań związanych z MVVMCross jest obecność wad w niektórych jego składnikach, szczególnie tych związanych z widokami Androida i iOS, które obsługują wiązanie danych. Wady te mogą prowadzić do problemów z interfejsem użytkownika i wymagają dodatkowych wysiłków debugowania. Ponieważ MVVMCROSS jest open source, użytkownicy mogą wnosić poprawki, ale nie zawsze może to być proste dla programistów bez obszernej wiedzy na temat wewnętrznych ramy [3].
prędkość uruchamiania
Aplikacje MVVMCROSS często doświadczają wolniejszych czasów uruchamiania w porównaniu z innymi ramami. Wynika to głównie z mechanizmów opartych na refleksji stosowanych podczas inicjalizacji, które są nieodłącznie związane z architekturą frameworka. Chociaż powolność ta jest również powszechna w aplikacjach Xamarin, może być wadą dla użytkowników oczekujących szybkiej aplikacji [3].
Uaktualnij bóle
Uaktualnienie wersji MVVMCROSS może być trudne z powodu znacznych zmian w konwencjach i zachowaniach nazewnictwa. Dokumentacja często pozostaje w tyle za tymi aktualizacjami, co prowadzi do trudności w znalezieniu rozwiązań nowych problemów. Powoduje to długi, a czasem frustrujący proces aktualizacji [3].
Jakość dokumentacji
Jakość dokumentacji MVVMCROSS jest kolejnym wyzwaniem. Często zawiera błędy pisowni, brakuje kompleksowych materiałów referencyjnych i zawiera złamane linki. Deweloperzy często muszą zagłębiać się w kod źródłowy frameworka, aby znaleźć dokładne informacje, które mogą być czasochłonne i wymagają dobrego zrozumienia architektury frameworka [3].
przestarzałe próbki
MVVMCROSS zapewnia repozytorium przykładowych projektów, ale wiele z tych próbek jest przestarzałych i nie jest kompatybilnych z najnowszymi wersjami ramy. Utrudnia to nowym programistom rozpoczęcie rozpoczęcia lub istniejącym programistom dostosowania się do zmian w ramach. Tylko kilka próbek jest aktywnie utrzymywanych, co ogranicza ich przydatność do uczenia się i rozwiązywania problemów [3].
ograniczenia wiązania danych
Podczas gdy MVVMCROSS obsługuje wiązanie danych, niektóre tryby wiązania, takie jak jednorazowe wiązanie, są rzadziej stosowane i mogą nie być odpowiednie dla wszystkich scenariuszy. Ten tryb nie monitoruje aktywnie zmian w odniesieniu do ViewModel, co może prowadzić do przestarzałych danych w widoku, jeśli nie jest odpowiednio zarządzane [1].
Problemy z nawigacją i cyklem życia
Nawigacja między ViewModels i zarządzanie ich cyklem życia może być złożone, szczególnie w przypadku zachowań specyficznych dla platformy, takich jak Tombstoning na Androidzie. MVVMCROSS zapewnia metody cyklu życia, aby pomóc w zarządzaniu tymi scenariuszami, ale opanowanie ich wymaga dobrego zrozumienia zarówno specyfiki platformy, jak i podstawowej platformy [7].
Inwersja kontroli i lokalizatora usług
Chociaż wbudowany wzór lokalizacji usług MVVMCROSS i inwersja kontroli (MKOl) są potężnymi funkcjami, wymagają starannej konfiguracji i zarządzania. Rejestracja usług i rozwiązywanie zależności może stać się złożone, jeśli nie są odpowiednio zorganizowane, szczególnie w większych aplikacjach [3] [6].
Podsumowując, podczas gdy MVVMCross oferuje wiele korzyści dla rozwoju międzyplatformowego, przedstawia kilka wyzwań związanych z wadami, wydajnością, dokumentacją i złożonością. Rozwiązanie tych wyzwań wymaga głębokiego zrozumienia ram i jej technologii podstawowych.
Cytaty:[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-andetup
[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