Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Можете ли вы объяснить взаимодействие между проектами Core и UI в MVVMcross


Можете ли вы объяснить взаимодействие между проектами Core и UI в MVVMcross


MVVMcross-это кроссплатформенная структура, которая облегчает разработку приложений с использованием паттерна модели-View-ViewModel (MVVM). Это позволяет разработчикам создавать слабо связанные, поддержание и тестируемые мобильные решения, разделяя логику приложения на две основные части: основной проект и проект пользовательского интерфейса.

Основной проект

Основным проектом, как правило, является стандартной библиотекой .NET, которая содержит весь общий код, включая:
- ViewModels: Они отвечают за взаимодействие с пользователями и бизнес -логику.
- Модели: представляют структуры данных, используемые на протяжении всего приложения.
- Услуги: предоставьте доступ к данным, веб -службам или другим внешним ресурсам.
- Преобразователи: используются для преобразования типа данных.
- Класс приложений: это отвечает за инициализацию бизнес -логики приложения и моделей просмотра. Он также обрабатывает регистрацию пользовательских объектов в контейнере инверсии управления (IOC).
- AppStart: необязательно используется для определения, какую модель представления сначала представлена ​​при запуске приложения.

Project

Проект пользовательского интерфейса является специфичным для платформы и содержит элементы пользовательского интерфейса и код, специфичный для платформы. Для каждой целевой платформы (например, iOS, Android) существует отдельный проект пользовательского интерфейса. Эти проекты включают:
- Просмотры: Каждое представление отвечает за представление соответствующей модели представления. Виды разработаны с использованием нативных инструментов платформы (например, XAML для xamarin.forms, axml для Android).
- Нативный обработчик приложений: это обрабатывает нативные события жизненного цикла. Например, на Android это был бы класс MainActivity 'или `ManaPplication', в то время как на iOS это был бы класс` appdelegate.
- Настройка класса: это отвечает за начальную загрузку MVVMcross и регистрацию сервисов для конкретных платформ. Он инициализирует структуру MVVMcross и устанавливает контейнер IOC с помощью специфичных для платформы реализаций.

Взаимодействие между основными и пользовательскими проектами

Взаимодействие между проектами Core и пользовательского интерфейса в MVVMcross облегчается с помощью шаблона MVVM и контейнера IOC Framework. Вот как они взаимодействуют:
- ViewModel Привязка: проекты пользовательского интерфейса используют MVVMcross для привязки видов для просмотра моделей. Обычно это делается с использованием соглашения об именах или путем украшения видов такими атрибутами, как `[mvxviewfor (typeof (homeviewmodel))]`.
- Инъекция обслуживания: основной проект определяет интерфейсы для услуг, которые реализуются по -разному на каждой платформе. Эти службы зарегистрированы в контейнере IOC и вводятся в модели зрения, что позволяет функциональности для конкретной платформы без дублирования кода.
- Навигация и презентация: MVVMcross предоставляет механизмы для навигации между моделями обзора и представления представлений. Фреймворк использует докладчиков (например, `imvxiosviewpresenter`,` imvxandroidviewpresenter`), чтобы управлять тем, как отображаются виды на каждой платформе.

Разделяя логику приложения на проекты Core и UI, MVVMcross позволяет разработчикам максимизировать повторное использование кода на разных платформах, в то же время позволяя настройку и оптимизацию, специфичную для платформы [1] [3] [5].

Цитаты:
[1] https://www.mvvmcross.com/documentation/getting-started/mvvmcross-overview
[2] https://canbilgin.wordpress.com/tag/mvvmcross/
[3] https://leaware.com/creating cross-platform-xamarin-applications-using-the-mvvmcross-framework/
[4] https://www.mvvmcross.com/documentation/advanced/customizing-using-app-and-setup
[5] https://www.suneco.nl/blogs/boost-your-xamarin-native-projects-with-mvvmcross/
[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/tutorials/tipcalc/the-core-project
[8] https://canbilgin.wordpress.com/2017/03/26/xamarin-forms-application-with-mvvmcross/