Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Υπάρχουν γνωστά ζητήματα με τη χρήση της Microsoft.Extensions.DependencyInjection με MVVMCROSS


Υπάρχουν γνωστά ζητήματα με τη χρήση της Microsoft.Extensions.DependencyInjection με MVVMCROSS


Χρησιμοποιώντας το Microsoft.Extensions.DependencyNeintion με το MVVMCROSS μπορεί να παρουσιάσει αρκετές προκλήσεις και γνωστά ζητήματα:

1. Η ασυμβατότητα με τη διαδικασία εκκίνησης MVVMCROSS: Το MVVMCross απαιτεί τη δυνατότητα επίλυσης εξαρτημάτων από τη διαδικασία εγκατάστασης και στη συνέχεια συνεχίζει να καταγράφει περισσότερα στοιχεία. Ωστόσο, η Microsoft.Extensions.DependencyInjection (MS.DI) απαιτεί να καταχωρηθούν όλα τα εξαρτήματα πριν από την κλήση `.build ()` Σχετικά με τη συλλογή υπηρεσιών. Αυτή η θεμελιώδης διαφορά καθιστά τα δύο συστήματα ασυμβίβαστα χωρίς πρόσθετες λύσεις, όπως η μεταφράζοντας με το χέρι τις υπηρεσίες από ένα δοχείο σε άλλο [1].

2. Διαδικασία εκκίνησης δύο σταδίων: Για να αξιοποιήσετε την MS.DI με MVVMCROSS, οι προγραμματιστές συχνά χτίζουν μια συλλογή υπηρεσιών Ms.di και στη συνέχεια μεταφράζουν τις υπηρεσίες της στην παρουσία MVVMCROSS `imvxiocprovider`. Αυτή η προσέγγιση εισάγει μια διαδικασία εκκίνησης δύο σταδίων, η οποία μπορεί να είναι δυσκίνητη και μπορεί να οδηγήσει σε πρόσθετη πολυπλοκότητα και πιθανά ζητήματα [1].

3. Περιορισμοί έγχυσης εξάρτησης: Το δοχείο IOC του MVVMCross αντιμετωπίζει την πτυχή του singleton στο επίπεδο διεπαφής και όχι τον παράτατο τύπο. Αυτό σημαίνει ότι εάν μια κλάση εφαρμόζει πολλαπλές διεπαφές, το MVVMCROSS μπορεί να δημιουργήσει ξεχωριστές περιπτώσεις για κάθε διεπαφή εκτός εάν διαχειριστεί ρητά [4]. Ενώ αυτό δεν σχετίζεται άμεσα με την MS.DI, υπογραμμίζει την ανάγκη για προσεκτική διαχείριση κατά την ενσωμάτωση διαφορετικών συστημάτων έγχυσης εξάρτησης.

4. Αναβάθμιση και συμβατότητα: Η αναβάθμιση των εκδόσεων MVVMCross μπορεί μερικές φορές να εισαγάγει προβλήματα με ένεση εξάρτησης, ειδικά όταν χρησιμοποιείτε μοντέλα προβολής βάσης. Για παράδειγμα, οι αλλαγές στη λογική επιλογής κατασκευαστή μεταξύ των εκδόσεων ενδέχεται να επηρεάσουν τον τρόπο με τον οποίο εγχύονται οι εξαρτήσεις [2].

Για να ξεπεραστούν αυτές οι προκλήσεις, οι προγραμματιστές συχνά επιλέγουν να ενισχύσουν τη λειτουργικότητα του MVVMCross χωρίς να αντικαταστήσουν το δοχείο Core IOC. Αυτό επιτρέπει τη χρήση πρόσθετων πλαισίων έγχυσης εξάρτησης όπως η MS.DI παράλληλα με το MVVMCross, παρέχοντας ευελιξία στην επιλογή του παρόχου ΔΟΕ [1] [5]. Ωστόσο, αυτό απαιτεί προσεκτική εγκατάσταση και διαχείριση για να αποφευχθούν συγκρούσεις και να εξασφαλιστεί απρόσκοπτη ολοκλήρωση.

Συνοπτικά, ενώ χρησιμοποιείται η Microsoft.Extensions.DependencyNeintion με MVVMCross, απαιτεί προσεκτική εξέταση της διαδικασίας εκκίνησης, των πιθανών ασυμβατότητας και της προσεκτικής διαχείρισης των εξαρτήσεων για την αποφυγή γνωστών ζητημάτων.

Αναφορές:
[1] https://github.com/mvvmcross/mvvmcross/issues/4436
[2] https://github.com/mvvmcross/mvvmcross/issues/4183
[3] https://docs.particular.net/nservicebus/dependency-nection/extensions-depencyinceanceing
[4] https://stackoverflow.com/questions/23700121/possible-bug-with-dependency-insection-on-mvmcross
[5] https://github.com/mvvmcross/mvvmcross/issues/3804
[6] https://www.mvvmcross.com/documentation/fundamentals/data-binding
[7] https://msicc.net/using-microsofts-extensions-dependencyinceanceing-package-in-xamarin-forms-mvvm-applications-part-2/
[8] https://www.mvvmcross.com/documentation/fundamentals/dependency-ines