MVVMcross-это популярная структура для построения кроссплатформенных приложений с использованием шаблона модели View-ViewModel (MVVM). Несмотря на то, что он предлагает много преимуществ, таких как связывание данных и инъекция зависимости, существует несколько проблем, связанных с его использованием.
дефекты в компонентах фреймворта
Одной из основных проблем с MVVMcross является наличие дефектов в некоторых из его компонентов, особенно тех, которые связаны с представлениями Android и iOS, которые поддерживают связывание данных. Эти дефекты могут привести к проблемам с пользовательским интерфейсом и потребовать дополнительных усилий отладки. Поскольку MVVMcross является открытым исходным кодом, пользователи могут внести исправления, но это не всегда может быть простым для разработчиков без обширного знания внутренних средств структуры [3].
Скорость запуска
Приложения MVVMcross часто испытывают более медленные время запуска по сравнению с другими рамками. Это во многом связано с механизмами, основанными на отражении, используемых во время инициализации, которые присущи архитектуре структуры. Хотя эта медлительность также распространена в приложениях Xamarin в целом, это может быть недостатком для пользователей, ожидающих быстрого запуска приложений [3].
Обновление болей
Обновление версий MVVMcross может быть сложным из -за значительных изменений в соглашениях и поведении именования. Документация часто отстает от этих обновлений, что приводит к трудностям в поиске решений новых вопросов. Это приводит к длительному, а иногда и разочаровывающему процессу обновления [3].
Качество документации
Качество документации MVVMcross является еще одной проблемой. Он часто содержит орфографические ошибки, не имеет комплексных справочных материалов и включает разбитые ссылки. Разработчики часто приходится углубляться в исходный код структуры, чтобы найти точную информацию, которая может быть трудоемкой и требует хорошего понимания архитектуры структуры [3].
устаревшие образцы
MVVMcross предоставляет репозиторий образцов проектов, но многие из этих образцов устарели и не совместимы с последними версиями структуры. Это затрудняет начало работы новым разработчикам или для существующих разработчиков адаптироваться к изменениям в рамках. Активно поддерживаются только несколько образцов, что ограничивает их полезность для обучения и устранения неполадок [3].
ограничения привязки данных
В то время как MVVMcross поддерживает связывание данных, определенные режимы связывания, такие как одноразовое связывание, используются реже и могут не подходить для всех сценариев. Этот режим не активно отслеживает изменения от ViewModel, что может привести к устаревшим данным в представлении, если не будет должным образом управляется [1].
Проблемы навигации и жизненного цикла
Навигация между ViewModels и управление их жизненным циклом может быть сложным, особенно при работе с поведением для конкретной платформы, таким как Tombstoning на Android. MVVMcross предоставляет методы жизненного цикла, чтобы помочь управлять этими сценариями, но овладение ими требует хорошего понимания как структуры, так и основной специфики платформы [7].
Инверсия управления и локатора обслуживания
В то время как встроенная модель локатора услуг MVVMcross и инверсия поддержки управления (МОК) являются мощными функциями, они требуют тщательной настройки и управления. Регистрация услуг и разрешение зависимостей может стать сложным, если не правильно организовать, особенно в более крупных приложениях [3] [6].
Таким образом, в то время как MVVMcross предлагает много преимуществ для кроссплатформенного развития, он представляет несколько проблем, связанных с дефектами, производительностью, документацией и сложностью. Решение этих проблем требует глубокого понимания структуры и ее основных технологий.
Цитаты:[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-to-use-behaviours-and storybards in-a-mu