Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Ποιες είναι οι βασικές διαφορές μεταξύ της χρήσης του MVVMCROSS με το Xamarin.forms και το Xamarin Native


Ποιες είναι οι βασικές διαφορές μεταξύ της χρήσης του MVVMCROSS με το Xamarin.forms και το Xamarin Native


Κατά τη σύγκριση της χρήσης του MVVMCROSS με το Xamarin.Forms και το Native Xamarin, εμφανίζονται αρκετές βασικές διαφορές, κυρίως όσον αφορά την ευελιξία του UI, την κοινή χρήση κώδικα και την ανάπτυξη.

UI Ευελιξία και έλεγχος

- Xamarin.Forms: Αυτό το πλαίσιο παρέχει ένα κοινό στρώμα UI σε όλες τις πλατφόρμες, το οποίο απλοποιεί την ανάπτυξη επιτρέποντάς σας να γράψετε έναν κωδικό UI μία φορά και να το αναπτύξετε σε πολλές πλατφόρμες. Ωστόσο, αυτό το κοινό UI μπορεί να περιορίσει την προσαρμογή σε χαρακτηριστικά συγκεκριμένων πλατφορμών, που απαιτούν προσαρμοσμένες renderers για πιο προηγμένα στοιχεία UI [7] [9]. Το MVVMCross μπορεί να χρησιμοποιηθεί με Xamarin.Forms για τη διαχείριση της επιχειρησιακής λογικής και της πλοήγησης, αλλά το UI παραμένει τυποποιημένο σε όλες τις πλατφόρμες [1] [10].

- Xamarin Native: Όταν χρησιμοποιείτε το Xamarin με MVVMCROSS, έχετε πλήρη έλεγχο του UI για κάθε πλατφόρμα. Αυτό επιτρέπει την υλοποίηση UI ειδικών για την πλατφόρμα, μεγιστοποιώντας την εγγενή εμφάνιση και την αίσθηση κάθε πλατφόρμας. Ενώ αυτή η προσέγγιση απαιτεί περισσότερη προσπάθεια για την ανάπτυξη ξεχωριστών στρωμάτων UI για iOS και Android, προσφέρει μεγαλύτερη ευελιξία και προσαρμογή [7] [9].

Κοινή χρήση και επαναχρησιμοποίηση κώδικα

- xamarin.forms: Με το xamarin.forms, μπορείτε να μοιραστείτε όχι μόνο την επιχειρησιακή λογική (μέσω MVVMCROSS) αλλά και τον κωδικό UI σε πλατφόρμες. Αυτό απλοποιεί την ανάπτυξη και μειώνει το ποσό του κώδικα που χρειάζεστε για να διατηρήσετε. Ωστόσο, το UI περιορίζεται σε ένα κοινό σύνολο στοιχείων που λειτουργούν σε όλες τις πλατφόρμες [4] [10].

- Xamarin Native: Σε μια εγγενή ρύθμιση Xamarin με MVVMCross, μπορείτε να μοιραστείτε την επιχειρηματική λογική (ViewModels) σε όλες τις πλατφόρμες, αλλά πρέπει να εφαρμόσετε το UI ξεχωριστά για κάθε πλατφόρμα. Αυτή η προσέγγιση επιτρέπει περισσότερη επαναχρησιμοποίηση κώδικα στη λογική του στρώματος παρουσίασης και του UI όταν χρησιμοποιείτε MVVMCROSS, αλλά απαιτεί εξακολουθεί να απαιτεί την ανάπτυξη UI ειδικής για την πλατφόρμα [9].

Προσέγγιση ανάπτυξης

- xamarin.forms: Η ανάπτυξη με xamarin.forms και mvvmcross προτιμάται συχνά από τους προγραμματιστές χωρίς εκτεταμένη κινητή εμπειρία, καθώς απλοποιεί την ανάπτυξη του UI μεταξύ των πλατφορμών. Το πλαίσιο χειρίζεται μεγάλο μέρος της υποκείμενης πολυπλοκότητας, επιτρέποντας στους προγραμματιστές να επικεντρωθούν στην κοινή λογική και το UI [4] [10].

-Xamarin Native: Η φυσική ανάπτυξη Xamarin με MVVMCross συνήθως ευνοείται από προγραμματιστές που θέλουν λεπτόκοκκο έλεγχο του UI και είναι άνετοι με την ανάπτυξη της πλατφόρμας. Αυτή η προσέγγιση απαιτεί περισσότερη τεχνογνωσία σε φυσική ανάπτυξη iOS και Android, αλλά προσφέρει μεγαλύτερη ευελιξία στον σχεδιασμό και την υλοποίηση του UI [7] [9].

Πλοήγηση και δέσμευση

- Xamarin.Forms με MVVMCROSS: Πλοήγηση στο Xamarin.Forms με MVVMCross διαχειρίζεται το επίπεδο ViewModel, επιτρέποντας τον καθαρό διαχωρισμό των ανησυχιών. Το MVVMCROSS παρέχει βελτιωμένες δυνατότητες δέσμευσης, όπως οι τιμές Fallback, αν και δεν διαθέτει ορισμένα χαρακτηριστικά όπως η ιδιότητα πηγής που βρίσκεται στο πρότυπο Xamarin.Forms Bindings [2] [10].

- Xamarin που προέρχεται από MVVMCROSS: Σε εγγενή έργα Xamarin, το MVVMCROSS χειρίζεται την πλοήγηση και το ζεύγος προβολής/θέαμα, επιτρέποντας μια συνεπή αρχιτεκτονική MVVM σε όλες τις πλατφόρμες. Αυτή η ρύθμιση επιτρέπει στους προγραμματιστές να εκμεταλλευτούν τα πρότυπα πλοήγησης που σχετίζονται με την πλατφόρμα, διατηρώντας παράλληλα ένα κοινό επίπεδο επιχειρησιακής λογικής [3] [9].

Συνοπτικά, ενώ και οι δύο προσεγγίσεις μπορούν να εκμεταλλευτούν το MVVMCROSS για την αρχιτεκτονική MVVM, το Xamarin.Forms προσφέρει ένα κοινό στρώμα UI με μικρότερο έλεγχο των χαρακτηριστικών UI, ενώ η Xamarin Native παρέχει πλήρη προσαρμογή στην προσαρμογή του UI, αλλά απαιτεί περισσότερη αναπτυξιακή προσπάθεια για ξεχωριστές εφαρμογές UI.

Αναφορές:
[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-peeds-xamarin-development-personalizes-ux/
[9] https://www.suneco.nl/blogs/boost-your-xamarin-native-projects-with-mvvmcross/
[10] https://visualstudiomagazine.com/articles/2018/05/08/build-a-xamarin.forms-application.aspx