MVVMCROSS i XAMARIN.FORMS to dwie odrębne technologie stosowane w tworzeniu aplikacji mobilnych międzyplatformowych, z których każda obsługuje różne cele i oferują unikalne zalety.
Przegląd Xamarin.Forms
Xamarin.Forms to struktura opracowana przez Microsoft, która umożliwia programistom tworzenie aplikacji międzyplatformowych przy użyciu udostępnionej CodeBase C# i XAML dla interfejsu użytkownika. Umożliwia programistom pisanie raz i uruchamianie na wielu platformach, w tym na iOS, Androida i UWP. Xamarin.Forms jest idealny do projektów, w których pożądany jest spójny interfejs użytkownika między platformami, i upraszcza proces rozwoju, zapewniając jednolity interfejs API komponentów interfejsu użytkownika. Jednak spójność ta ma koszt elastyczności, ponieważ interfejs użytkownika jest ograniczony do podzbioru wspólnych elementów z każdej platformy, co może prowadzić do ograniczeń w osiągnięciu rodzimego wyglądu i dostosowywania interfejsu użytkownika [4] [7].
Przegląd MVVMCROSS
MVVMCROSS to platforma MVVM (Model-View-ViewModel), która obsługuje Xamarin.ios, Xamarin.android, Xamarin.forms i inne platformy. Koncentruje się na oddzieleniu logiki biznesowej od interfejsu użytkownika, umożliwiając programistom dzielenie znacznej części kodu na różnych platformach. MVVMCROSS zapewnia takie funkcje, jak wiązanie danych, nawigacja, inwersja kontroli i wtrysk zależności, które ułatwiają opracowanie złożonych zastosowań. W przeciwieństwie do Xamarin.Forms, MVVMCROSS nie egzekwuje określonych ram interfejsu użytkownika; Zamiast tego pozwala programistom wybrać, w jaki sposób chcą wdrożyć interfejs użytkownika dla każdej platformy, oferując większą elastyczność w osiąganiu natywnych doświadczeń interfejsu użytkownika [7] [10].
Kluczowe różnice
1. Wdrożenie interfejsu użytkownika:
- Xamarin.Forms: Używa wspólnej warstwy interfejsu użytkownika między platformami, która upraszcza rozwój, ale może ograniczać dostosowywanie oraz natywny wygląd.
- MVVMCROSS: pozwala na natywną implementację interfejsu użytkownika na każdej platformie lub współdzielony interfejs użytkownika z Xamarin.Forms, zapewniając większą elastyczność w osiąganiu projektów interfejsu użytkownika specyficznego dla platformy.
2. Udostępnianie kodu:
- Oba frameworki umożliwiają udostępnianie kodu, ale MVVMCROSS koncentruje się na udostępnianiu logiki biznesowej (ViewModels), jednocześnie umożliwiając różne implementacje interfejsu użytkownika. Xamarin.Forms udostępnia zarówno interfejs użytkownika, jak i logikę biznesową.
3. nawigacja i wiązanie danych:
- MVVMCROSS zapewnia solidny system nawigacji i możliwości wiązania danych, które działają w różnych ramach interfejsu użytkownika, w tym na Xamarin.Forms. Xamarin.Forms opiera się na własnych mechanizmach nawigacyjnych i wiązania danych.
4. Złożoność projektu:
- W przypadku złożonych projektów wymagających zaawansowanego dostosowywania interfejsu użytkownika lub funkcji specyficznych dla platformy MVVMCROSS może być bardziej odpowiedni ze względu na jego elastyczność. W przypadku prostszych projektów, w których wystarczający jest spójny interfejs użytkownika, Xamarin.Forms mogą być prostsze do wdrożenia.
5. Podejście rozwojowe:
- Xamarin.Forms jest często preferowany przez programistów zaznajomionych z XAML i .NET, ponieważ zapewnia zunifikowane doświadczenie programistyczne. MVVMCROSS jest korzystny dla projektów, w których logika biznesowa musi zostać oddzielona od interfejsu użytkownika, umożliwiając większą kontrolę nad wdrażaniem interfejsu użytkownika na każdej platformie.
Podsumowując, podczas gdy oba frameworki obsługują rozwój międzyplatformowy, Xamarin.Forms koncentruje się na udostępnianiu warstwy interfejsu użytkownika na platformach, podczas gdy MVVMCross podkreśla udostępnienie logiki biznesowej i pozwala na bardziej elastyczne opcje wdrażania interfejsu użytkownika. Wybór między nimi zależy od wymagań projektu dotyczących dostosowywania interfejsu użytkownika, złożoności i strategii udostępniania kodu.
Cytaty:[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/tutorials/tipcalc/a-xamarin-porms-version
[4] https://stackoverflow.com/questions/38450264/xamarin-porms-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-nation-projects-with-mvvmcross/