Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Ποια είναι τα κοινά ζητήματα κατά την αντικατάσταση του προεπιλεγμένου δοχείου IOC στο MVVMCROSS


Ποια είναι τα κοινά ζητήματα κατά την αντικατάσταση του προεπιλεγμένου δοχείου IOC στο MVVMCROSS


Η αντικατάσταση του προεπιλεγμένου δοχείου ΔΟΕ στο MVVMCROSS μπορεί να εισαγάγει αρκετά κοινά ζητήματα, κυρίως λόγω του τρόπου με τον οποίο ενσωματώνεται το MVVMCROSS με το ενσωματωμένο δοχείο της ΔΟΕ. Εδώ είναι μερικές από τις προκλήσεις που μπορεί να αντιμετωπίσετε:

1. Εγγραφή υπηρεσιών και συγχρονισμός **

Ένα από τα κύρια ζητήματα είναι να διασφαλιστεί ότι όλες οι απαραίτητες υπηρεσίες είναι εγγεγραμμένες και ότι το `iserviceprovider` παραμένει συγχρονισμένο με την` iserviceCollection '. Το MVVMCROSS συνεχίζει να καταχωρεί τις δικές της υπηρεσίες μετά την αρχική ρύθμιση, η οποία μπορεί να οδηγήσει σε ασυνέπειες εάν δεν αντιμετωπιστεί σωστά. Αυτό απαιτεί την ενημέρωση του παρόχου σε κάθε εγγραφή συλλογής, η οποία μπορεί να επηρεάσει την απόδοση [1].

2. Λείπει υπηρεσίες mvvmcross **

Το MVVMCROSS βασίζεται σε διάφορες ενσωματωμένες υπηρεσίες όπως το `imvxloggerprovider`, το` imvxsettings 'και το `imvxstart`, μεταξύ άλλων. Κατά την αντικατάσταση του εμπορευματοκιβωτίου της ΔΟΕ, αυτές οι υπηρεσίες ενδέχεται να μην είναι αυτόματα καταχωρημένες, οδηγώντας σε αποτυχίες εκκίνησης. Πρέπει να καταχωρίσετε με μη αυτόματο τρόπο αυτές τις υπηρεσίες ή να βρείτε έναν τρόπο να αφήσετε το MVVMCROSS να χειριστεί την εγγραφή τους στο προσαρμοσμένο δοχείο σας [1].

3. Θέματα ζωής και επανάκλησης **

Το MVVMCROSS χρησιμοποιεί επανάκλησεις όταν οι υπηρεσίες είναι εγγεγραμμένες, οι οποίες μπορεί να είναι δύσκολο να χειριστούν σε έναν προσαρμοσμένο προσαρμογέα ΔΟΕ. Επιπλέον, η διαχείριση των χρόνων ζωής (π.χ. singleton, παροδική) μπορεί να απαιτεί προσαρμοσμένη εφαρμογή για να ταιριάζει με τις προσδοκίες του MVVMCross [4].

4. Ενσωμάτωση με βιβλιοθήκες τρίτου μέρους **

Χρησιμοποιώντας ένα διαφορετικό δοχείο ΔΟΕ, όπως το DI του .NET Core, επιτρέπει ευκολότερη ενσωμάτωση με βιβλιοθήκες τρίτων που παρέχουν μεθόδους επέκτασης για εγγραφή (π.χ., `ihtttpclientFactory`,` Polly ', `Automapper'). Ωστόσο, η διασφάλιση ότι αυτές οι βιβλιοθήκες λειτουργούν άψογα με την προσαρμοσμένη ρύθμιση του MVVMCROSS μπορεί να είναι προκλητική [1].

5. Παρατηρήσεις απόδοσης **

Η οικοδόμηση ενός νέου `iserviceprovider` instance κάθε φορά που οι υπηρεσίες είναι εγγεγραμμένες μπορεί να οδηγήσει σε θέματα απόδοσης. Αυτό οφείλεται στο γεγονός ότι το `buildServiceProvider ()` ονομάζεται επανειλημμένα, το οποίο μπορεί να είναι δαπανηρό από την άποψη των πόρων και του χρόνου [1].

6. Προσαρμογή και υπεράσπιση **

Για να αντικαταστήσετε πλήρως το προεπιλεγμένο δοχείο IOC, πρέπει να παρακάμψετε τη μέθοδο `createiocprovider 'στην κλάση εγκατάστασης σας. Αυτό απαιτεί τη δημιουργία ενός προσαρμογέα που χαρτογραφεί την προσαρμοσμένη υλοποίηση της ΔΟΕ στη διεπαφή του MVVMCROSS. Αυτή η διαδικασία μπορεί να είναι πολύπλοκη και απαιτεί προσεκτική διαχείριση των ειδικών απαιτήσεων του MVVMCross [4].

7. Ειδικές εκτιμήσεις πλατφόρμας **

Όταν εργάζεστε με πλατφόρμες όπως το Xamarin, ενδέχεται να προκύψουν πρόσθετες εκτιμήσεις λόγω των συγκεκριμένων διαδικασιών εγκατάστασης και αρχικοποίησης αυτών των περιβαλλόντων. Για παράδειγμα, εξασφαλίζοντας ότι οι υπηρεσίες ειδικών για το Android είναι κατάλληλα καταχωρημένες και επιλυμένες [10].

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

Αναφορές:
[1] https://stackoverflow.com/questions/64478974/replace-default-ioc-container-in-mvvmcross
[2] https://yanxiaodi.gitbook.io/xamarin-mvvmcross-handbook/using-mvvmcross-to-create-your-first-xamarin-app/creating-the-core-project/adding-an-app-class
[3] https://www.mvvmcross.com/documentation/fundamentals/viewmodel-lifecycle
[4] https://www.mvvmcross.com/documentation/advanced/customizing-using-app-and-setup
[5] https://learn.microsoft.com/en-us/archive/msdn-magazine/2013/february/mvvm-ioc-containers-and-mvvm
[6] https://docs.spring.io/spring-framework/docs/4.3.9.Release/spring-framework-reference/html/beans.html
[7] https://www.mvvmcross.com/documentation/getting-started/mvvmcross-overview
[8] https://www.mvvmcross.com/documentation/tutorials/tipcalc/the-core-project
[9] https://www.mvvmcross.com/documentation/fundamentals/inversion-of-control-ioc
[10] https://stackoverflow.com/questions/53752857/xamarin-android-specific-ioc-in-mvvmcross-constructor-issue/53761392