Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Как MVVMcross поддержка платформы для конкретной платформы


Как MVVMcross поддержка платформы для конкретной платформы


MVVMcross поддерживает код, специфичный для платформы, через несколько механизмов, позволяя разработчикам создавать кроссплатформенные приложения, в то же время используя функции собственной платформы. Вот подробный обзор того, как MVVMcross облегчает код, специфичный для платформы:

1. Разделение проблем **

Приложения MVVMcross обычно структурированы в две основные части: основной проект и проекты пользовательского интерфейса, специфичные для платформы. Основной проект, часто реализуемый как портативная библиотека классов (PCL) или стандартная библиотека .NET, содержит бизнес-логику, модели, модели просмотра и интерфейсы для сервисов для специфичных для платформы. Это разделение обеспечивает максимальное повторное использование кода на разных платформах, сохраняя при этом код, специфичный для платформы, изолированный в проектах пользовательского интерфейса [2] [7].

2. Инверсия контроля (IOC) и инъекции зависимостей **

MVVMcross использует контейнер IOC для управления зависимостями. Это позволяет разработчикам регистрировать специфичные для платформы услуги в проектах, специфичных для платформы, вводить их в модели просмотра основного проекта. Например, если приложению необходимо получить доступ к камере, основной проект может определить интерфейс для доступа к камере, и каждый специфичный проект платформы может обеспечить свою собственную реализацию этого интерфейса. Затем контейнер IOC разрешает эти зависимости во время выполнения, гарантируя, что используется правильная услуга, специфичная для платформы [2] [8] [11].

3. Службы специфичных для платформы **

Службы специфики для платформы внедряются в нативных проектах пользовательского интерфейса. Эти службы зарегистрированы в классе настройки каждого проекта платформы. Класс настройки отвечает за начальную загрузку MVVMcross и регистрацию сервисов для конкретных платформ в контейнере IOC. Это позволяет просмотреть модели в основном проекте использовать функциональность, специфичную для платформы, без непосредственного ссылки на API, специфичные для платформы [2] [7].

4. плагин Framework **

MVVMcross включает в себя плагинную структуру, которая позволяет разработчикам легко интегрировать специфичные для платформы функции в свои приложения. Плагины могут предоставлять функции, такие как местоположение GPS, локализация, датчики и многое другое. Эти плагины зарегистрированы в контейнере IOC, что позволяет моделям просмотра доступа к функциям, специфичным для платформы, посредством инъекции зависимостей. Эта структура также поддерживает фиктивные реализации в целях тестирования [4] [11].

5. Настраиваемый двигатель для привязки **

MVVMcross предоставляет настраиваемый привязывающий двигатель, который позволяет разработчикам создавать пользовательские привязки для представлений, специфичных для платформы. Эта функция особенно полезна при работе с нативными элементами управления, которые не поддерживают стандартные механизмы связывания данных. Определяя пользовательские привязки, разработчики могут убедиться, что их модели представления правильно подключены к представлениям, специфичным для платформы [4].

6. Платформы **

MVVMcross использует докладчики для специфичных для платформы (например, `imvxiosviewpresenter`,` imvxandroidviewpresenter`), чтобы управлять тем, как виды отображаются на каждой платформе. Эти докладчики позволяют настраивать логику презентации, что позволяет разработчикам адаптировать поведение пользовательского интерфейса к требованиям конкретной платформы [3].

Таким образом, MVVMcross поддерживает код, специфичный для платформы, предоставляя структурированный подход к отделению бизнес-логики от реализации специфичной для платформы, используя МОК и впрыск зависимостей для управления услугами и предлагая настраиваемые платформы и плагины для интеграции собственных функций. Это позволяет разработчикам максимизировать повторное использование кода, все еще предоставляя пользовательский опыт, специфичный для платформы.

Цитаты:
[1] https://www.suneco.nl/blogs/boost-your-xamarin-native-projects-with-mvvmcross/
[2] https://dev.to/christian1006/creating-cross-platform-xamarin-applications-using-the-mvvmcross-framework-2920
[3] https://canbilgin.wordpress.com/tag/mvvmcross/
[4] https://github.com/mvvmcross/mvvmcross
[5] https://www.codeproject.com/articles/863695/introduction-to-mvvmcross-platform
[6] https://mentormate.com/blog/6-reasons-mvvmcross speeds-xamarin-development-personalizes-ux/
[7] https://www.mvvmcross.com/documentation/getting-started/mvvmcross-overview
[8] https://stackoverflow.com/questions/14337063/platform-price-ioc-in-mvvmcross
[9] https://www.mvvmcross.com/documentation/getting-started/getting-started
[10] https://leaware.com/creating cross-platform-xamarin-applications-using-the-mvvmcross-framework/
[11] https://learn.microsoft.com/en-us/archive/msdn-magazine/2014/august/windows-phone-build-mvvm-apps-with-xamarin-and-mvvmcross