Το MVVMCross είναι ένα δημοφιλές πλαίσιο για την οικοδόμηση εφαρμογών cross-platform χρησιμοποιώντας το πρότυπο μοντέλου-View-ViewModel (MVVM). Παρόλο που προσφέρει πολλά οφέλη, όπως η σύνδεση δεδομένων και η ένεση εξάρτησης, υπάρχουν πολλές προκλήσεις που συνδέονται με τη χρήση της.
ελαττώματα στα εξαρτήματα πλαισίου
Μία από τις κύριες προκλήσεις με το MVVMCROSS είναι η παρουσία ελαττωμάτων μέσα σε ορισμένα από τα συστατικά του, ιδιαίτερα εκείνα που σχετίζονται με τις απόψεις Android και iOS που υποστηρίζουν τη δέσμευση δεδομένων. Αυτά τα ελαττώματα μπορούν να οδηγήσουν σε προβλήματα με το UI και να απαιτήσουν πρόσθετες προσπάθειες εντοπισμού σφαλμάτων. Δεδομένου ότι το MVVMCROSS είναι ανοιχτό κώδικα, οι χρήστες μπορούν να συνεισφέρουν διορθώσεις, αλλά αυτό μπορεί να μην είναι πάντα απλό για τους προγραμματιστές χωρίς εκτεταμένη γνώση των εσωτερικών πλαισίων [3].
ταχύτητα εκκίνησης
Οι εφαρμογές MVVMCross συχνά αντιμετωπίζουν πιο αργούς χρόνους εκκίνησης σε σύγκριση με άλλα πλαίσια. Αυτό οφείλεται σε μεγάλο βαθμό στους μηχανισμούς που βασίζονται σε αντανάκλαση που χρησιμοποιήθηκαν κατά την αρχικοποίηση, οι οποίοι είναι εγγενείς στην αρχιτεκτονική του πλαισίου. Ενώ αυτή η βραδύτητα είναι επίσης κοινή στις εφαρμογές Xamarin εν γένει, μπορεί να είναι ένα μειονέκτημα για τους χρήστες που αναμένουν ταχείες εκτοξεύσεις εφαρμογών [3].
αναβαθμίστε τους πόνους
Η αναβάθμιση των εκδόσεων MVVMCross μπορεί να είναι προκλητική λόγω σημαντικών αλλαγών στις συμβάσεις και τη συμπεριφορά ονομασίας. Η τεκμηρίωση συχνά υστερεί πίσω από αυτές τις ενημερώσεις, οδηγώντας σε δυσκολίες στην εξεύρεση λύσεων σε νέα θέματα. Αυτό έχει ως αποτέλεσμα μια μακρά και μερικές φορές απογοητευτική διαδικασία αναβάθμισης [3].
Ποιότητα τεκμηρίωσης
Η ποιότητα της τεκμηρίωσης MVVMCROSS είναι μια άλλη πρόκληση. Συχνά περιέχει ορθογραφικά λάθη, στερείται ολοκληρωμένου υλικού αναφοράς και περιλαμβάνει σπασμένες συνδέσεις. Οι προγραμματιστές συχνά πρέπει να εμβαθύνουν στον πηγαίο κώδικα του πλαισίου για να βρουν ακριβείς πληροφορίες, οι οποίες μπορεί να είναι χρονοβόρες και απαιτούν καλή κατανόηση της αρχιτεκτονικής του πλαισίου [3].
ξεπερασμένα δείγματα
Το MVVMCROSS παρέχει ένα αποθετήριο δειγματοληπτικών έργων, αλλά πολλά από αυτά τα δείγματα είναι ξεπερασμένα και όχι συμβατά με τις τελευταίες εκδόσεις του πλαισίου. Αυτό καθιστά δύσκολο για τους νέους προγραμματιστές να ξεκινήσουν ή για τους υπάρχοντες προγραμματιστές να προσαρμοστούν στις αλλαγές στο πλαίσιο. Μόνο μερικά δείγματα διατηρούνται ενεργά, γεγονός που περιορίζει τη χρησιμότητά τους για την εκμάθηση και την αντιμετώπιση προβλημάτων [3].
Περιορισμοί δέσμευσης δεδομένων
Ενώ το MVVMCROSS υποστηρίζει τη δέσμευση δεδομένων, ορισμένες λειτουργίες δέσμευσης, όπως η μοναδική δέσμευση, χρησιμοποιούνται λιγότερο συχνά και μπορεί να μην είναι κατάλληλα για όλα τα σενάρια. Αυτή η λειτουργία δεν παρακολουθεί ενεργά τις αλλαγές από το ViewModel, το οποίο μπορεί να οδηγήσει σε ξεπερασμένα δεδομένα στην προβολή, εάν δεν διαχειρίζεται σωστά [1].
Προβλήματα πλοήγησης και κύκλου ζωής
Η πλοήγηση μεταξύ του ViewModels και της διαχείρισης του κύκλου ζωής τους μπορεί να είναι περίπλοκη, ειδικά όταν ασχολείται με συμπεριφορές ειδικών για την πλατφόρμα όπως το Tombstoning στο Android. Το MVVMCross παρέχει μεθόδους κύκλου ζωής για να βοηθήσει στη διαχείριση αυτών των σεναρίων, αλλά η κυριαρχία τους απαιτεί καλή κατανόηση τόσο του πλαισίου όσο και των ειδικών πλατφόρμας [7].
Αναστροφή του εντοπιστή ελέγχου και υπηρεσιών
Ενώ το ενσωματωμένο πρότυπο εντοπισμού υπηρεσιών της MVVMCROSS και η αντιστροφή της υποστήριξης ελέγχου (IOC) είναι ισχυρά χαρακτηριστικά, απαιτούν προσεκτική εγκατάσταση και διαχείριση. Η καταχώριση των υπηρεσιών και η επίλυση των εξαρτήσεων μπορούν να γίνουν πολύπλοκες εάν δεν είναι κατάλληλα οργανωμένες, ειδικά σε μεγαλύτερες εφαρμογές [3] [6].
Συνοπτικά, ενώ το MVVMCROSS προσφέρει πολλά οφέλη για την ανάπτυξη των πλατφορμών, παρουσιάζει διάφορες προκλήσεις που σχετίζονται με ελαττώματα, επιδόσεις, τεκμηρίωση και πολυπλοκότητα. Η αντιμετώπιση αυτών των προκλήσεων απαιτεί βαθιά κατανόηση του πλαισίου και των υποκείμενων τεχνολογιών του.
Αναφορές:[1] https://www.mvvmcross.com/documentation/fundamentals/data-binding
[2] https://github.com/mvvmcross/mvvmcross/issues/4201
[3] http://wojosoftware.com/software/mvvmcross/
[4] https://www.mvvmcross.com/documentation/advanced/customizing-using-app-and-setup
[5] https://www.mvvmcross.com/documentation/getting-started/mvvmcross-overview
[6] https://learn.microsoft.com/en-us/archive/msdn-magazine/2014/august/windows-phone-build-mvvm-apps-with-xamarin-and-mvvmcross
[7] https://www.mvvmcross.com/documentation/fundamentals/viewmodel-lifecycle
[8] https://stackoverflow.com/questions/16301045/mvvmcross-v3-is-that-wrong-to-try-to-use-behaviours-and-storyboards-in--mu