Αυτό το άρθρο είναι ένα άρθρο καθρέφτη της αυτόματης μετάφρασης, κάντε κλικ εδώ για να μεταβείτε στο αρχικό άρθρο.

Άποψη: 20252|Απάντηση: 1

[Πηγή] Το πεδίο εφαρμογής του στοιχείου autofac

[Αντιγραφή συνδέσμου]
Δημοσιεύτηκε στις 14/9/2018 1:22:21 μ.μ. | | | |
Το εύρος παρουσίας καθορίζει τον τρόπο κοινής χρήσης των υπηρεσιών μεταξύ των αιτήσεων.

Αρχική διεύθυνση:http://docs.autofac.org/en/latest/lifetime/instance-scope.html

Μία παρουσία ανά εξάρτηση

Με αυτήν την επιλογή, μια νέα παρουσία επιστρέφεται κάθε φορά που ζητείται η υπηρεσία. Χρησιμοποιήστε το InstancePerDependency(). Αυτή είναι η προεπιλεγμένη επιλογή. Ο παρακάτω κώδικας, γραμμές 2 και 3 είναι ισοδύναμοι.

Ο παρακάτω κώδικας δημιουργεί μια νέα παρουσία για κάθε βρόχο, για συνολικά 100 παρουσίες.

Μία παρουσία

Χρησιμοποιήστε αυτήν την επιλογή για να ζητήσετε μια υπηρεσία είτε στο ριζικό είτε στο ένθετο εύρος, επιστρέφοντας και τα δύο την ίδια παρουσία. Χρησιμοποιήστε το SingleInstance() για να καθορίσετε.


Ο παρακάτω κώδικας, w1 και w2 είναι πάντα το ίδιο αντικείμενο και υπάρχει μόνο μία παρουσία της κλάσης Worker σε 100 βρόχους.


Μία παρουσία ανά εύρος κύκλου ζωής

Χρησιμοποιήστε αυτήν την επιλογή για να ζητήσετε μια υπηρεσία σε ένα συγκεκριμένο ILifetimeScope, επιστρέφοντας μόνο μία παρουσία. Χρησιμοποιήστε το InstancePerLifetimeScope(). Στον παρακάτω κώδικα, οι 100 φορές w1 στο scope1 είναι το ίδιο αντικείμενο και οι 100 φορές w2 στο scope2 είναι το ίδιο αντικείμενο, αλλά τα w1 και w2 δεν είναι το ίδιο αντικείμενο.


Μία παρουσία ανά αντίστοιχο εύρος κύκλου ζωής

Παρόμοιο με το [μία παρουσία ανά εύρος κύκλου ζωής] παραπάνω, αλλά με περισσότερο έλεγχο. Χρησιμοποιήστε αυτήν την επιλογή για να επιτρέψετε στο αντικείμενο ILifetimeScope να εφοδιαστεί με ένα tag. Υπάρχει μόνο μία παρουσία στο εύρος της αντιστοίχισης ετικέτας. Χρησιμοποιήστε τη μέθοδο InstancePerMatchingLifetimeScope().

Στον παρακάτω κώδικα, τα w1 και w2 είναι τα ίδια, τα w3 και w4 είναι τα ίδια, αλλά τα w1 και w3 είναι διαφορετικά.

Η κατάλληλη σήμανση πρέπει να παρέχεται κατά την ανάλυση και ο ακόλουθος κώδικας δημιουργεί μια εξαίρεση.

Μία παρουσία ανά αίτημα

Ορισμένες εφαρμογές έχουν φυσικά σημασιολογία αιτήματος, όπως εφαρμογές ASP.NET MVC ή WebForm. Το [One instance per request] υλοποιείται με βάση το [one instance per matching lifecycle range], παρέχοντας δείκτες εμβέλειας, λειτουργίες καταχώρισης και ενοποίηση κοινών τύπων. Ουσιαστικά, [μία παρουσία ανά αντίστοιχο εύρος κύκλου ζωής].

Το ASP.NET Core χρησιμοποιεί μία παρουσία ανά εύρος κύκλου ζωής αντί για μία παρουσία ανά αίτημα.

Μία παρουσία ανά ιδιοκτησία

Ο<T> τύπος έμμεσης συσχέτισης Ιδιόκτητη δημιουργεί ένθετες περιοχές κύκλου ζωής. Με την εγγραφή παρουσίας ανά ιδιοκτησία, μπορείτε να περιορίσετε τις εξαρτήσεις σε ιδιόκτητες παρουσίες.

Σε αυτήν την περίπτωση, η υπηρεσία ServiceForHandler περιορίζεται στο πεδίο εφαρμογής της παρουσίας MessageHandler.


Εύρος νημάτων

Το Autofac μπορεί να αναγκάσει τα αντικείμενα του νήματος Α να μην ικανοποιούν τις εξαρτήσεις του νήματος Β.

Στη συνέχεια, αφήστε το καθένα να δημιουργήσει το δικό του εύρος ζωής

Σημαντικό: Σε ένα σενάριο πολλαπλών νημάτων, προσέξτε να μην εκκαθαρίσετε το γονικό εύρος.Διαφορετικά, τα υποπεδία στο νήμα που προκύπτει δεν θα μπορούν να επιλύσουν την υπηρεσία.

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

Με την προσθήκη της παραμέτρου ILifetimeScope, η γονική περιοχή μπορεί να εισαχθεί στον κώδικα που δημιουργεί το νήμα και το Autofac θα εισάγει αυτόματα την τρέχουσα περιοχή, η οποία στη συνέχεια μπορεί να χρησιμοποιηθεί για τη δημιουργία ένθετων πεδίων.

Εάν θέλετε να το ελέγξετε περαιτέρω, μπορείτε να χρησιμοποιήσετε το [μία παρουσία ανά αντίστοιχο εύρος κύκλου ζωής] για να συσχετίσετε στοιχεία με εμβέλεια νήματος με εσωτερικά πεδία κύκλου ζωής, όπως φαίνεται στην εικόνα:



Το "Πλαίσιο" στο διάγραμμα είναι το εύρος κύκλου ζωής που δημιουργείται από τη μέθοδο BeginLifetimeScope.





Προηγούμενος:Εφέ κλικ του ποντικιού στο μπροστινό μέρος: ελευθερία, δημοκρατία, ευημερία
Επόμενος:{&quot;error_msg&quot;: &quot;Η πιστοποίηση IAM απέτυχε&quot;}
Αποκήρυξη:
Όλο το λογισμικό, το υλικό προγραμματισμού ή τα άρθρα που δημοσιεύονται από το Code Farmer Network προορίζονται μόνο για μαθησιακούς και ερευνητικούς σκοπούς. Το παραπάνω περιεχόμενο δεν θα χρησιμοποιηθεί για εμπορικούς ή παράνομους σκοπούς, άλλως οι χρήστες θα υποστούν όλες τις συνέπειες. Οι πληροφορίες σε αυτόν τον ιστότοπο προέρχονται από το Διαδίκτυο και οι διαφορές πνευματικών δικαιωμάτων δεν έχουν καμία σχέση με αυτόν τον ιστότοπο. Πρέπει να διαγράψετε εντελώς το παραπάνω περιεχόμενο από τον υπολογιστή σας εντός 24 ωρών από τη λήψη. Εάν σας αρέσει το πρόγραμμα, υποστηρίξτε γνήσιο λογισμικό, αγοράστε εγγραφή και λάβετε καλύτερες γνήσιες υπηρεσίες. Εάν υπάρχει οποιαδήποτε παραβίαση, επικοινωνήστε μαζί μας μέσω email.

Mail To:help@itsvse.com