MVVMCross-це міжплатформна рамка, яка полегшує розробку додатків за допомогою моделі-View-ViewModel (MVVM). Це дозволяє розробникам створювати слабко сполучені, реконструйовані та перевірені мобільні рішення, розділяючи логіку програми на дві основні частини: основний проект та проект інтерфейсу інтерфейсу.
Основний проект
Основний проект - це, як правило, стандартна бібліотека .NET, яка містить весь спільний код, включаючи:- ViewModels: Вони відповідають за обробку взаємодій користувачів та логіки бізнесу.
- Моделі: Представляйте структури даних, що використовуються у всій програмі.
- Послуги: Надайте доступ до даних, веб -служб чи інших зовнішніх ресурсів.
- перетворювачі: використовується для перетворення типу даних.
- Клас додатків: Це відповідає за ініціалізацію бізнес -логіки та перегляду моделей. Він також обробляє реєстрацію спеціальних об'єктів в інверсії контрольного (МОК) контейнера.
- AppStart: Необов’язково використовується для визначення, яку модель перегляду подавати спочатку, коли програма запускається.
ui Проект
Проект інтерфейсу інтерфейсу є специфічним для платформи та містить елементи інтерфейсу користувача та конкретний код платформи. Для кожної цільової платформи (наприклад, iOS, Android) є окремий проект інтерфейсу. Ці проекти включають:- Перегляди: Кожен перегляд відповідає за представлення відповідної моделі перегляду. Перегляди розроблені за допомогою інструментів нативного платформи (наприклад, XAML для Xamarin.forms, AxML для Android).
- Рідний обробник додатків: Це обробляє рідні події життєвого циклу. Наприклад, на Android це був би клас "mainActivity" або "mainApplication", в той час як на iOS це був би клас "appdelegate".
- Клас налаштування: Це відповідає за завантаження MVVMCross та реєстрація специфічних для платформи послугами. Він ініціалізує рамку MVVMCross і налаштовує контейнер IOC за допомогою специфічних для платформи реалізацією.
Взаємодія між основними та інтерфейсними проектами
Взаємодія між основними та інтерфейсними проектами в MVVMcross сприяє моделі MVVM та контейнером IOC рамки. Ось як вони взаємодіють:- ViewModel Binding: Проекти інтерфейсу використовують MVVMCross для прив’язки перегляду для перегляду моделей. Зазвичай це робиться за допомогою конвенції про іменування або прикраси перегляду з атрибутами, такими як `[MvxViewfor (Typeof (HomeViewModel))]`.
- Введення послуг: Основний проект визначає інтерфейси для послуг, які реалізуються по -різному на кожній платформі. Ці послуги зареєстровані в контейнері МОК та вводяться в оглядові моделі, що дозволяє функціонувати специфічну для платформи функціональність без дублювання коду.
- Навігація та презентація: MVVMCross забезпечує механізми навігації між моделями перегляду та представленням перегляду. Рамка використовує ведучих (наприклад, `imvxiosviewpresenter`,` imvxandroidviewpresenter`), щоб керувати тим, як відображаються перегляд на кожній платформі.
Відокремлюючи логіку додатків на основні проекти та інтерфейси інтерфейсу, 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/tutoriors/tipcalc/the-core-project
[8] https://canbilgin.wordpress.com/2017/03/26/xamarin-forms-application-with-mvvmcross/