MVVMcross-это универсальная и расширяемая структура MVVM, предназначенная для кроссплатформенного развития, особенно в экосистеме .NET. Он поддерживает широкий спектр платформ, включая Xamarin.ios, Xamarin.android, Xamarin.forms, Universal Windows Platform (UWP) и Framework Presentation Windows (WPF) [1] [2] [4]. Одной из ключевых особенностей MVVMcross является его способность интегрироваться с другими структурами и библиотеками, улучшая его полезность в разработке сложных приложений.
Интеграция с другими рамками
1. Интеграция CSLA.NET: MVVMCross можно использовать вместе с CSLA.NET, бизнес -объектом. В то время как CSLA.net фокусируется на бизнес-логике и моделировании данных, MVVMcross обрабатывает пользовательский интерфейс и логику на уровне приложения. Разработчики могут использовать структуру бизнес -объекта CSLA.net, унаследовав от CSLA `viewModelbase` и реализации требований MVVMcross. Эта интеграция позволяет обмениваться кодом между платформами, сохраняя при этом четкое разделение проблем [5].
2. Интеграция ReactiveUI: хотя MVVMcross и ReactiveUI - оба рамки MVVM, они служат разным целям. MVVMcross больше сосредоточен на собственных мобильных приложениях и обмене кодами, в то время как ReactiveUI подчеркивает реактивное программирование с использованием реактивных расширений (RX). Хотя они могут сосуществовать, они обычно используются для различных аспектов разработки приложений. MVVMcross предоставляет комплексный набор функций для разработки пользовательского интерфейса, тогда как ReactiveUI идеально подходит для приложений, требующих расширенных асинхронных операций [7].
3. Xamarin.forms и другие рамки пользовательского интерфейса: MVVMcross поддерживает интеграцию с xamarin.forms, позволяя разработчикам создавать кроссплатформенные приложения с общей бизнес-логикой. Это также хорошо работает с другими рамками пользовательского интерфейса, такими как Maui и WPF, обеспечивая гибкость при выборе уровня пользовательского интерфейса [3] [7].
4. Структура плагина: MVVMcross включает в себя плагин, которая позволяет разработчикам расширять свои функциональные возможности, добавляя сторонние плагины для таких функций, как местоположение GPS, локализация и расширения привязки. Эта расширяемость позволяет разработчикам настраивать структуру в соответствии с потребностями в проекте [1] [2].
Ключевые функции, облегчающие интеграцию
- Инверсия контроля (МОК) и инъекции зависимости: MVVMcross предоставляет контейнер МОК, который облегчает инъекцию зависимости, что облегчает интеграцию с другими рамками, управляя зависимостями и услугами по всему приложению [1] [4].
- Настраиваемое привязывающее двигатель: структура позволяет разработчикам создавать пользовательские привязки для своих представлений, которые могут быть полезны при интеграции с другими компонентами пользовательского интерфейса или структуры, которые требуют определенных механизмов связывания данных [1] [2].
- ViewModel to viewModel Navigation: эта функция помогает управлять навигационной логикой, которая может быть интегрирована с шаблонами навигации других фреймворков, чтобы обеспечить постоянный пользовательский опыт на разных платформах [1] [2].
Таким образом, MVVMcross разработан так, чтобы быть очень интегрируемым с другими структурами и библиотеками, что позволяет разработчикам использовать свои сильные стороны в архитектуре MVVM, включая дополнительные функции из других инструментов. Его расширяемость и поддержка для различных платформ делают его универсальным выбором для кроссплатформенного разработки приложений.
Цитаты:[1] https://github.com/mvvmcross/mvvmcross
[2] https://dotnet.libhunt.com/mvvmcross-alternative
[3] https://visualstumagazine.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-would-mvvmcross-and-csla-net-work-together-in-a-multi-platform-strategy
[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