IoC ~ Αποτελεσματικό Autofac
Δεν υπάρχει αμφιβολία ότι το αγαπημένο κοντέινερ IoC της Microsoft δεν είναι το spring.net, το unity αλλά το Autofac, λόγω της αποτελεσματικότητάς του, λόγω της απλότητάς του, επομένως χρησιμοποιείται επίσης για έργα οπωρώνων υπό την ηγεσία της Microsoft
απεικονίζει τη χρήση ενός Autofac.
Ας το ονομάσουμε τώρα:
Στην επόμενη διάλεξη, θα μιλήσω για τη χρήση του Autofac σε συγκεκριμένα έργα για έργα οπωρώνων.
Τώρα κοιτάξτε τον κύκλο ζωής του
1, InstancePerDependency
Δημιουργήστε μια νέα μοναδική παρουσία για κάθε εξάρτηση ή κλήση. Αυτός είναι επίσης ο προεπιλεγμένος τρόπος δημιουργίας παρουσιών.
Η επίσημη τεκμηρίωση εξηγεί: Διαμορφώστε το στοιχείο έτσι ώστε κάθε εξαρτώμενο στοιχείο ή κλήση στο Resolve() να λαμβάνει μια νέα, μοναδική παρουσία (προεπιλογή.)
2, InstancePerLifetimeScope
Σε έναν τομέα κύκλου ζωής, κάθε εξάρτηση ή κλήση δημιουργεί μία κοινόχρηστη παρουσία και για κάθε διαφορετικό τομέα κύκλου ζωής, η παρουσία είναι μοναδική και δεν είναι κοινόχρηστη.
Η επίσημη τεκμηρίωση εξηγεί: Διαμορφώστε το στοιχείο έτσι ώστε κάθε εξαρτώμενο στοιχείο ή κλήση στο Resolve() μέσα σε ένα μόνο ILifetimeScope να λαμβάνει την ίδια, κοινόχρηστη παρουσία. Τα εξαρτώμενα στοιχεία σε διαφορετικά πεδία διάρκειας ζωής θα λάβουν διαφορετικές παρουσίες.
3, InstancePerMatchingLifetimeScope
Σε έναν αναγνωρισμένο τομέα κύκλου ζωής, κάθε εξάρτηση ή κλήση δημιουργεί μια μεμονωμένη κοινόχρηστη παρουσία. Οι παρουσίες στον γονικό τομέα μπορούν να τεθούν σε κοινή χρήση στον τομέα θυγατρικής ταυτότητας του αναγνωρισμένου τομέα κύκλου ζωής. Εάν δεν βρεθεί αναγνωρισμένος τομέας κύκλου ζωής σε ολόκληρη την ιεραρχία μεταβίβασης, δημιουργείται μια εξαίρεση: DependencyResolutionException.
Η επίσημη τεκμηρίωση εξηγεί: Διαμορφώστε το στοιχείο έτσι ώστε κάθε εξαρτώμενο στοιχείο ή κλήση στο Resolve() μέσα σε ένα ILifetimeScope με ετικέτα με οποιαδήποτε από τις παρεχόμενες τιμές ετικετών να λαμβάνει την ίδια, κοινόχρηστη παρουσία. Τα εξαρτώμενα στοιχεία σε εμβέλειες διάρκειας ζωής που είναι θυγατρικά του εύρους με ετικέτα θα μοιράζονται την παρουσία του γονικού στοιχείου. Εάν δεν μπορεί να βρεθεί εύρος με κατάλληλη ετικέτα στην ιεραρχία, εμφανίζεται ένα DependencyResolutionException.
4, InstancePerOwned
Στον κύκλο ζωής μιας παρουσίας που δημιουργήθηκε από μια παρουσία που ανήκει σε έναν τομέα κύκλου ζωής, κάθε εξαρτώμενο στοιχείο ή κλήση στη μέθοδο Resolve() δημιουργεί μια μεμονωμένη κοινόχρηστη παρουσία και ο θυγατρικός τομέας κύκλου ζωής μοιράζεται τις παρουσίες στον γονικό τομέα κύκλου ζωής. Εάν δεν βρεθεί κατάλληλος τομέας κύκλου ζωής με θυγατρικές παρουσίες στην ιεραρχία μεταβίβασης, δημιουργείται μια εξαίρεση: DependencyResolutionException.
Η επίσημη τεκμηρίωση εξηγεί:
Ρυθμίστε τις παραμέτρους του στοιχείου έτσι ώστε κάθε εξαρτώμενο στοιχείο ή κλήση στο Resolve() μέσα σε ένα ILifetimeScope που δημιουργήθηκε από μια ιδιόκτητη παρουσία να λαμβάνει την ίδια, κοινόχρηστη παρουσία. Τα εξαρτώμενα στοιχεία σε πεδία διάρκειας ζωής που είναι θυγατρικά της εμβέλειας παρουσίας που ανήκει θα μοιράζονται την παρουσία του γονικού. Εάν δεν μπορεί να βρεθεί το κατάλληλο πεδίο παρουσίας ιδιοκτησίας στην ιεραρχία, εμφανίζεται ένα DependencyResolutionException.
5, SingleInstance
Κάθε φορά που εξαρτάστε από ένα στοιχείο ή καλείτε τη μέθοδο Resolve(), λαμβάνετε την ίδια κοινόχρηστη παρουσία. Στην πραγματικότητα, είναι ένα μοντέλο singleton.
Η επίσημη τεκμηρίωση εξηγεί: Διαμορφώστε το στοιχείο έτσι ώστε κάθε εξαρτώμενο στοιχείο ή κλήση στο Resolve() να λαμβάνει την ίδια, κοινόχρηστη παρουσία.
6, InstancePerHttpRequest
Στο πλαίσιο μιας αίτησης Http, μοιραστείτε μια παρουσία ενός στοιχείου. Διαθέσιμο μόνο για asp.net ανάπτυξη MVC.
|