Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Πώς χειρίζεται ο κώδικας ειδικού για την πλατφόρμα MVVMCross


Πώς χειρίζεται ο κώδικας ειδικού για την πλατφόρμα MVVMCross


Το MVVMCROSS έχει σχεδιαστεί για να χειρίζεται αποτελεσματικά τον ειδικό κώδικα πλατφόρμας διαχωρίζοντας τη λογική εφαρμογής σε δύο κύρια μέρη: ένα βασικό έργο και τα έργα που σχετίζονται με την πλατφόρμα. Το βασικό έργο, τυπικά μια τυποποιημένη βιβλιοθήκη .NET, περιέχει την επιχειρησιακή λογική, τα μοντέλα προβολής, τα μοντέλα και τις διεπαφές για υπηρεσίες που σχετίζονται με την πλατφόρμα. Αυτό επιτρέπει τη μέγιστη κοινή χρήση κώδικα σε διαφορετικές πλατφόρμες όπως το Android, το iOS και τα Windows.

Ειδικά έργα πλατφόρμας

Κάθε ειδικό έργο πλατφόρμας (π.χ. Xamarin.android, Xamarin.ios) περιέχει το περιβάλλον εργασίας χρήστη και την εφαρμογή των ειδικών για την πλατφόρμα. Αυτά τα έργα είναι υπεύθυνα για την αρχικοποίηση του πλαισίου MVVMCROSS και την καταχώριση υπηρεσιών που σχετίζονται με την πλατφόρμα χρησιμοποιώντας την κλάση εγκατάστασης. Η κλάση εγκατάστασης λειτουργεί ως bootstrapper για το MVVMCross, επιτρέποντας στους προγραμματιστές να προσαρμόσουν τη συμπεριφορά του πλαισίου για κάθε πλατφόρμα.

Αναστροφή ελέγχου (IOC) και έγχυση εξάρτησης

Το MVVMCROSS χρησιμοποιεί μια αναστροφή του δοχείου ελέγχου (ΔΟΕ) για τη διαχείριση εξαρτήσεων σε όλη την εφαρμογή. Αυτό επιτρέπει την εγγραφή και την εγχυμένη υπηρεσίες και την εγχύσεις στη λογική του βασικού έργου. Για παράδειγμα, εάν μια εφαρμογή πρέπει να έχει πρόσβαση σε υπηρεσίες τοποθεσίας GPS, η υπηρεσία GPS μπορεί να καταχωρηθεί στην κατηγορία εγκατάστασης που σχετίζεται με την πλατφόρμα και στη συνέχεια να εγχυθεί στα μοντέλα προβολής ή σε άλλα μέρη του βασικού έργου.

Προσαρμογή συμπεριφοράς πλατφόρμας

Οι προγραμματιστές μπορούν να προσαρμόσουν τη συμπεριφορά που σχετίζεται με την πλατφόρμα με μεθόδους επικράτειας στην κλάση εγκατάστασης. Για παράδειγμα, στο Android, μπορείτε να παρακάμψετε τις μεθόδους στο `MVXANDROIDSETUP` για να καταχωρήσετε υπηρεσίες ειδικών για το Android ή να χειρίζεστε συμβάντα ζωής για το Android. Ομοίως, στο iOS, θα χρησιμοποιούσατε το `mvxiossetUp` για να χειριστείτε την αρχικοποίηση και την εγγραφή υπηρεσιών ειδικής για το iOS.

Προβολή παρουσιαστών

Το MVVMCROSS παρέχει επίσης στους παρουσιαστές προβολής, οι οποίοι είναι υπεύθυνοι για την απόφαση για τον τρόπο με τον οποίο παρουσιάζονται οι απόψεις σε κάθε πλατφόρμα. Αυτό επιτρέπει την προσαρμογή της λογικής παρουσίασης του UI, όπως η εμφάνιση προβολών modally ή ως μέρος μιας στοίβας πλοήγησης, ανάλογα με τις συμβάσεις της πλατφόρμας.

plugins και επεκτάσεις

Το MVVMCross προσφέρει ένα πλαίσιο plugin που επιτρέπει στους προγραμματιστές να ενσωματώνουν εύκολα τα plugins τρίτων για κοινές λειτουργίες όπως ο εντοπισμός, οι αισθητήρες και πολλά άλλα. Αυτά τα plugins μπορούν να χρησιμοποιηθούν σε πολλαπλές πλατφόρμες, μειώνοντας περαιτέρω την ανάγκη για κωδικό ειδικού για την πλατφόρμα.

Συνοπτικά, το MVVMCROSS χειρίζεται τον ειδικό κώδικα πλατφόρμας παρέχοντας μια δομημένη προσέγγιση για τον διαχωρισμό της κοινής λογικής από εφαρμογές ειδικών για την πλατφόρμα. Χρησιμοποιεί έγχυση IOC και εξάρτησης για τη διαχείριση των υπηρεσιών πλατφόρμας, επιτρέπει την προσαρμογή μέσω της κλάσης εγκατάστασης και υποστηρίζει τα plugins για την επέκταση της λειτουργικότητας σε όλες τις πλατφόρμες.

Αναφορές:
[1] https://github.com/mvvmcross/mvvmcross
[2] https://dev.to/christian1006/creating-cross-platform-xamarin-pplications-using-the-mvmcross-framework-2920
[3] https://canbilgin.wordpress.com/tag/mvvmcross/
[4] https://www.mvvmcross.com/documentation/getting-started/mvvmcross-overview
[5] https://stackoverflow.com/questions/14337063/platform-specific-ioc-in-mvvmcross
[6] https://stackoverflow.com/questions/61641185/platform-specific-service-causes-an-exception-mvvmcross-xamarin-ios
[7] https://leaware.com/creating-cross-platform-xamarin-pplications-using-the-mvmcross-framework/
[8] https://www.mvvmcross.com/documentation/getting-started/mvvmcross-packages
[9] https://www.codeproject.com/articles/863695/introduction-to-mvvmcross-platform
[10] https://www.mvvmcross.com/documentation/getting-started/getting-started
[11] https://www.mvvmcross.com/documentation/advanced/customizing-using-app-and-setup