При сравнении использования MVVMcross с Xamarin.forms и Native Xamarin появляются несколько ключевых различий, в первую очередь с точки зрения гибкости пользовательского интерфейса, обмена кодами и подхода к разработке.
гибкость и контроль пользовательского интерфейса
- xamarin.forms: Эта структура предоставляет общий уровень пользовательского интерфейса на всех платформах, который упрощает разработку, позволяя вам писать код пользовательского интерфейса один раз и развернуть его на нескольких платформах. Тем не менее, этот общий пользовательский интерфейс может ограничить настройку функциям, специфичными для платформы, требуя пользовательских рендеристов для более продвинутых элементов пользовательского интерфейса [7] [9]. MVVMcross может использоваться с xamarin.forms для управления бизнес -логикой и навигацией, но пользовательский интерфейс остается стандартизированным на всех платформах [1] [10].
- Ксамарин. Это обеспечивает реализации пользовательского интерфейса, специфичной для платформы, максимизируя нативный вид и ощущение каждой платформы. Хотя этот подход требует больше усилий для разработки отдельных слоев пользовательского интерфейса для iOS и Android, он предлагает большую гибкость и настройку [7] [9].
совместное использование и повторное использование кода
- xamarin.forms: с xamarin.forms вы можете поделиться не только бизнес -логикой (через MVVMcross), но и код пользовательского интерфейса по платформам. Это упрощает разработку и уменьшает объем кода, который вам необходимо поддерживать. Однако пользовательский интерфейс ограничен общим набором элементов, которые работают на всех платформах [4] [10].
- Крамотный Xamarin: в нативной настройке Xamarin с помощью MVVMcross вы можете поделиться бизнес -логикой (ViewModels) по платформам, но вы должны реализовать пользовательский интерфейс отдельно для каждой платформы. Этот подход позволяет использовать большее повторное использование кода на уровне презентации и логику пользовательского интерфейса при использовании MVVMcross, но все же требует разработки пользовательского интерфейса, специфичной для платформы [9].
Подход к разработке
- Xamarin.forms: Разработка с помощью xamarin.forms и mvvmcross часто предпочитает разработчиками без обширного мобильного опыта, поскольку он упрощает разработку кроссплатформенного пользовательского интерфейса. Структура обрабатывает большую часть базовой сложности, позволяя разработчикам сосредоточиться на общей логике и пользовательском интерфейсе [4] [10].
-Ксамарин. Этот подход требует большей экспертизы в разработке нативных iOS и Android, но предлагает большую гибкость в дизайне и реализации пользовательского интерфейса [7] [9].
навигация и обязательство
- xamarin.forms с mvvmcross: навигация в xamarin.forms с mvvmcross управляется на уровне ViewModel, что позволяет чистое разделение проблем. MVVMcross предоставляет расширенные возможности связывания, такие как резервные значения, хотя в нем отсутствуют некоторые функции, такие как свойство источника, найденное в стандартных привязках Xamarin.forms [2] [10].
- Ксамарин, уроженец с MVVMcross: в нативных проектах Xamarin, MVVMcross обрабатывает навигацию и сопряжение View/ViewModel, что обеспечивает последовательную архитектуру MVVM на всех платформах. Эта настройка позволяет разработчикам использовать шаблоны навигации для конкретной платформы, сохраняя при этом общий слой бизнес-логики [3] [9].
Таким образом, хотя оба подхода могут использовать MVVMcross для архитектуры MVVM, Xamarin.forms предлагает общий уровень пользовательского интерфейса с меньшим контролем над функциями пользовательского интерфейса, специфичных для платформы, тогда как Native Cantive обеспечивает полный контроль над настройкой пользовательского интерфейса, но требует большего усилия по разработке для отдельных реализаций пользовательского интерфейса.
Цитаты:[1] https://www.mvvmcross.com/documentation/platform/xamarin.forms/xamarin-forms
[2] https://www.xamarinhelp.com/use-xamarin-forms-mvvm-framework/
[3] https://canbilgin.wordpress.com/tag/mvvmcross/
[4] https://www.mvvmcross.com/documentation/getting-started/getting-started
[5] https://www.reddit.com/r/androiddev/comments/6cseds/what_are_the_disadvantages_of_xamarin_for_android/
[6] https://canbilgin.wordpress.com/2017/03/26/xamarin-forms-application-with-mvvmcross/
[7] https://stackoverflow.com/questions/38450264/xamarin-forms-vs-xamarin-mvvmcross
[8] https://mentormate.com/blog/6-reasons-mvvmcross speeds-xamarin-development-personalizes-ux/
[9] https://www.suneco.nl/blogs/boost-your-xamarin-native-projects-with-mvvmcross/
[10] https://visualstumagazine.com/articles/2018/05/08/build-a-xamarin.forms-application.aspx