Porównując użycie MVVMCROSS z Xamarin.Forms i Xamarin Native, pojawia się kilka kluczowych różnic, przede wszystkim pod względem elastyczności interfejsu użytkownika, wymiany kodu i podejścia do rozwoju.
Elastyczność i kontrola interfejsu użytkownika
- Xamarin.Forms: Ta framework zapewnia wspólną warstwę interfejsu użytkownika między platformami, która upraszcza rozwój, umożliwiając pisanie kodu interfejsu użytkownika i wdrożenie go na wielu platformach. Ten wspólny interfejs może jednak ograniczyć dostosowanie do funkcji specyficznych dla platformy, wymagając niestandardowych renderatorów dla bardziej zaawansowanych elementów interfejsu użytkownika [7] [9]. MVVMCROSS może być używany z Xamarin.Forms do zarządzania logiką biznesową i nawigacją, ale interfejs użytkownika pozostaje znormalizowany na platformach [1] [10].
- Xamarin Native: Podczas korzystania z Xamarin Native z MVVMCROSS masz pełną kontrolę nad interfejsem użytkownika dla każdej platformy. Umożliwia to implementacje interfejsu użytkownika specyficzne dla platformy, maksymalizując natywny wygląd każdej platformy. Chociaż takie podejście wymaga większego wysiłku w celu opracowania oddzielnych warstw interfejsu użytkownika na iOS i Androida, oferuje większą elastyczność i dostosowywanie [7] [9].
Udostępnianie kodu i ponowne wykorzystanie
- Xamarin.Forms: W przypadku Xamarin.Forms możesz udostępniać nie tylko logikę biznesową (za pośrednictwem MVVMCROSS), ale także kodem interfejsu użytkownika na platformach. Upraszcza to rozwój i zmniejsza ilość kodu potrzebnego do utrzymania. Jednak interfejs użytkownika ogranicza się do wspólnego zestawu elementów, które działają na wszystkich platformach [4] [10].
- Xamarin Native: W natywnej konfiguracji Xamarin z MVVMCross możesz udostępnić logikę biznesową (ViewModels) na platformach, ale musisz zaimplementować interfejs użytkownika osobno dla każdej platformy. To podejście pozwala na więcej ponownego wykorzystania kodu w warstwie prezentacji i logice interfejsu użytkownika podczas korzystania z MVVMCROSS, ale nadal wymaga opracowywania interfejsu użytkownika specyficznego dla platformy [9].
Podejście rozwojowe
- Xamarin.Forms: Opracowywanie z Xamarin.Forms i MvvMcross jest często preferowane przez programistów bez obszernego doświadczenia mobilnego, ponieważ upraszcza opracowywanie interfejsu użytkownika. Ramy zajmują się dużą ilością podstawowej złożoności, umożliwiając programistom skupienie się na wspólnej logice i interfejsie użytkownika [4] [10].
-Xamarin Native: Native Xamarin Development z MVVMcross jest zazwyczaj faworyzowany przez programistów, którzy chcą drobnoziarnistej kontroli nad interfejsem użytkownika i czują się komfortowo z rozwojem specyficznym dla platformy. Takie podejście wymaga większej wiedzy specjalistycznej w zakresie natywnego rozwoju iOS i Androida, ale oferuje większą elastyczność w projektowaniu i wdrażaniu interfejsu użytkownika [7] [9].
nawigacja i wiązanie
- Xamarin.Forms z MVVMCROSS: Nawigacja w Xamarin.Forms z MVVMcross jest zarządzana na poziomie ViewModel, umożliwiając czyste rozdzielenie obaw. MVVMCROSS zapewnia ulepszone możliwości wiązania, takie jak wartości oddechowe, chociaż brakuje mu niektórych funkcji, takich jak właściwość źródła znaleziona w standardowych powiązaniach Xamarin.Forms [2] [10].
- Xamarin Native z MVVMCROSS: W natywnych projektach Xamarin MVVMCROSS obsługuje nawigację i parowanie widoku/ViewModel, umożliwiając spójną architekturę MVVM na platformach. Ta konfiguracja umożliwia programistom wykorzystanie wzorców nawigacyjnych specyficznych dla platformy przy jednoczesnym utrzymaniu wspólnej warstwy logiki biznesowej [3] [9].
Podsumowując, podczas gdy oba podejścia mogą wykorzystać MVVMCROSS dla architektury MVVM, Xamarin.Forms oferuje wspólną warstwę interfejsu użytkownika o mniejszej kontroli funkcji interfejsu użytkownika specyficznych dla platformy, podczas gdy Xamarin Native zapewnia pełną kontrolę nad dostosowywaniem interfejsu użytkownika, ale wymaga większego wysiłku programistycznego dla oddzielnych wdrożeń interfejsu użytkownika.
Cytaty:[1] https://www.mvvmcross.com/documentation/platform/xamarin.forms/xamarin-forms
[2] https://www.xamarinhelp.com/use-xamarin-porms-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-porms-vs-xamarin-mvvmcross
[8] https://mentormate.com/blog/6-Rasoning-mvvmcross-speeds-xamarin-development-tersonalizes-ux/
[9] https://www.suneco.nl/blogs/boost-your-xamarin-nation-projects-with-mvvmcross/
[10] https://visualstudiomagazine.com/articles/2018/05/08/build-a-xamarin.forms-application.aspx