MVVMCross та Xamarin.Forms-це дві чіткі технології, що використовуються в розробці мобільних додатків між платформами, кожен з яких обслуговує різні цілі та пропонує унікальні переваги.
Огляд Xamarin.forms
Xamarin.forms-це рамка, розроблена Microsoft, яка дозволяє розробникам створювати міжплатформні програми за допомогою спільної кодової бази C# та XAML для користувальницького інтерфейсу. Це дозволяє розробникам писати один раз і працювати на декількох платформах, включаючи iOS, Android та UWP. Xamarin.forms ідеально підходить для проектів, де бажаний послідовний інтерфейс користувача на платформах, і він спрощує процес розробки, надаючи єдиний API для компонентів інтерфейсу інтерфейсу. Однак ця узгодженість становить вартість гнучкості, оскільки інтерфейс користувача обмежується підмножиною загальних елементів кожної платформи, що може призвести до обмежень у досягненні нативного вигляду та вдосконаленого налаштування інтерфейсу [4] [7].
Огляд Mvvmcross
MVVMCross-це міжплатформна MVVM (модель-View-ViewModel), яка підтримує Xamarin.ios, xamarin.android, xamarin.forms та інші платформи. Він зосереджується на відокремленні бізнес -логіки від інтерфейсу, що дозволяє розробникам ділитися значною частиною свого коду на різних платформах. MVVMCross забезпечує такі функції, як зв'язування даних, навігація, інверсія контролю та введення залежності, що полегшує розробку складних застосувань. На відміну від xamarin.forms, Mvvmcross не виконує конкретної рамки інтерфейсу; Натомість це дозволяє розробникам вибрати, як вони хочуть впроваджувати інтерфейс користувача для кожної платформи, пропонуючи більшу гнучкість у досягненні рідного досвіду інтерфейсу [7] [10].
Ключові відмінності
1. Впровадження інтерфейсу:
- xamarin.forms: використовує спільний рівень інтерфейсу на платформах, що спрощує розробку, але може обмежувати налаштування та нативний вигляд та відчуття.
- MVVMCROSS: дозволяє здійснювати реалізацію UI на кожній платформі або спільний інтерфейс з xamarin.forms, забезпечуючи більшу гнучкість у досягненні конкретних дизайнів інтерфейсу платформи.
2. Спільний доступ до коду:
- Обидва рамки дозволяють обмінюватися кодом, але MVVMcross зосереджується на обміні бізнес -логікою (ViewModels), дозволяючи при цьому різні реалізації інтерфейсу. Xamarin.forms ділиться і логікою інтерфейсу, і діловою логікою.
3. Навігація та прив'язка даних:
- MVVMCross забезпечує надійну навігаційну систему та можливості зв'язування даних, які працюють у різних рамках інтерфейсу, включаючи xamarin.forms. Xamarin.forms покладається на власні механізми навігації та зв'язування даних.
4. Складність проекту:
- Для складних проектів, що потребують розширеного налаштування інтерфейсу або особливості платформи, MVVMcross може бути більш придатним завдяки своїй гнучкості. Для більш простих проектів, де достатньо послідовного інтерфейсу, Xamarin.Forms може бути більш простим для реалізації.
5. Підхід до розвитку:
- Xamarin.forms часто віддають перевагу розробникам, знайомим з Xaml та .NET, оскільки він забезпечує єдиний досвід розробки. MVVMCross вигідний для проектів, де бізнес -логіку потрібно від'єднати з інтерфейсу користувача, що дозволяє отримати більше контролю над впровадженням інтерфейсу на кожній платформі.
Підсумовуючи це, хоча обидва рамки підтримують перехресну розробку платформи, Xamarin.forms фокусується на обміні рівня інтерфейсу інтерфейсу на платформах, тоді як MVVMCross підкреслює обмін логікою бізнесу та дозволяє отримати більш гнучкий варіант впровадження інтерфейсу. Вибір між ними залежить від вимог проекту щодо налаштування, складності та стратегії обміну кодом.
Цитати:[1] https://visualstudiomagazine.com/articles/2018/05/08/build-a-xamarin.forms-application.aspx
[2] https://github.com/rogerwcpt/xamarin-mvvvm-frameworks
[3] https://www.mvvmcross.com/documentation/tutoriors/tipcalc/a-xamarin-forms-version
[4] https://stackoverflow.com/questions/38450264/xamarin-forms-vs-xamarin-mvvmcross
[5] https://leaware.com/creating-cross-platform-xamarin-applications-using-the-mvvmcross-framework/
[6] https://canbilgin.wordpress.com/tag/mvvmcross/
[7] https://www.mvvmcross.com/documentation/getting-started/getting-started
[8] https://www.reddit.com/r/csharp/comments/a9mph1/mvc_or_mvvm_for_xamarin/
[9] https://canbilgin.wordpress.com/2017/03/26/xamarin-forms-application-with-mvvmcross/
[10] https://www.suneco.nl/blogs/boost-your-xamarin-native-projects-with-mvvmcross/