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

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

[.NET Πυρήνας] ASP.NET Η έγχυση εξάρτησης πυρήνα χρησιμοποιεί το δοχείο IOC που συνοδεύει

[Αντιγραφή συνδέσμου]
Δημοσιεύτηκε στις 7/5/2019 1:55:10 μ.μ. | | | |
ASP.NET Η έγχυση εξάρτησης πυρήνα χρησιμοποιεί το δοχείο IOC που συνοδεύει
https://www.itsvse.com/thread-7562-1-1.html
(Πηγή: Architect_Programmer)

Το ASP.NET Core χρησιμοποιεί το Autofac για την εφαρμογή της έγχυσης IOC
https://www.itsvse.com/thread-7563-1-1.html
(Πηγή: Architect_Programmer)

Το ASP.NET Core χρησιμοποιεί το Autofac για την υλοποίηση της υποκλοπής AOP
https://www.itsvse.com/thread-7566-1-1.html
(Πηγή: Architect_Programmer)

Στο νέο ASP.NET Core, ένας μεγάλος αριθμός ενέσεων εξάρτησης χρησιμοποιείται για τη σύνταξη κώδικα.

Για παράδειγμα, στην κλάση εκκίνησης, μπορούμε να δούμε τα εξής:

Το AddMvc AddDbContext περιλαμβάνει το AddDirectoryBrowser που χρησιμοποιούσαμε για περιηγήσεις καταλόγου πριν:

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

Η αντιστροφή ελέγχου (IoC) είναι μια αρχή σχεδιασμού στον αντικειμενοστραφή προγραμματισμό που μπορεί να χρησιμοποιηθεί για τη μείωση της σύζευξης μεταξύ κώδικα υπολογιστή. Η πιο κοινή μέθοδος ονομάζεται Dependency Injection (DI) και υπάρχει επίσης μια μέθοδος που ονομάζεται "Dependency Lookup". Με τον έλεγχο της αντιστροφής, όταν δημιουργείται ένα αντικείμενο, μια εξωτερική οντότητα που ελέγχει όλα τα αντικείμενα του συστήματος μεταβιβάζει σε αυτό μια αναφορά στο αντικείμενο από το οποίο εξαρτάται. Μπορεί επίσης να ειπωθεί ότι οι εξαρτήσεις εγχέονται στο αντικείμενο.

Για να χρησιμοποιήσετε το ioc, η κλάση Startup πρέπει να αναφέρεται Microsoft.Extensions.DependencyInjection(ps, το οποίο είναι ήδη αρκετά απλό: Microsoft.. Επέκταση... Ένεση εξάρτησης - - ,)

Εισάγετε τον κύκλο ζωής μιας υπηρεσίας

Η Microsoft παρέχει 3 κύκλους ζωής για υπηρεσίες αυτόματης έγχυσης.

Παροδικό

Μια στιγμιαία υπηρεσία κύκλου ζωής που δημιουργείται κάθε φορά που ζητείται. Αυτός ο κύκλος ζωής είναι ο καταλληλότερος για ελαφριές υπηρεσίες χωρίς κατάσταση.

Εμβέλεια

Στο ίδιο πεδίο εφαρμογής, η υπηρεσία δημιουργείται μόνο μία φορά ανά αίτημα.

Singleton (μόνο)

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

Πώς χρησιμοποιείτε αυτούς τους τρεις κύκλους ζωής; Μπορούμε να χρησιμοποιήσουμε διαφορετικές μεθόδους απευθείας κατά την ένεση, ο κωδικός είναι ο εξής:


Ας δοκιμάσουμε τη συγκεκριμένη γενιά αυτών των τριών κύκλων ζωής

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

Στον κατασκευαστή κάθε κλάσης υλοποίησης, δημιουργούμε ένα νέο GUID, το οποίο μας επιτρέπει να προσδιορίσουμε εάν η κλάση έχει εκτελέσει ξανά τον κατασκευαστή.

Εισαγωγή υπηρεσιών στον ελεγκτή

Υπάρχουν γενικά τρεις τρόποι έγχυσης: έγχυση κατασκευαστή, έγχυση μεθόδου και έγχυση χαρακτηριστικών. Το κοντέινερ IOC της Microsoft χρησιμοποιεί έγχυση κατασκευαστή από προεπιλογή (Η εισαγωγή χαρακτηριστικών δεν υποστηρίζεται, αλλά μπορεί να επιτευχθεί με αντικατάσταση κοντέινερ τρίτου μέρους)

Προβολή κώδικα σελίδας:

Εκτελέστε το έργο και αποκτήστε πρόσβαση σε αυτό μέσω 2 διαφορετικών προγραμμάτων περιήγησης, όπως φαίνεται παρακάτω:



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

Ωστόσο, ο κύκλος ζωής του πεδίου εφαρμογής είναι ο ίδιος, επειδή κάτω από το ίδιο πεδίο εφαρμογής, το GUID της υπηρεσίας που χρησιμοποιείται δύο φορές στο ίδιο πρόγραμμα περιήγησης είναι το ίδιο, υποδεικνύοντας ότι χρησιμοποιείται το ίδιο αντικείμενο.

Στην περίπτωση ενός singleton, δύο διαφορετικά προγράμματα περιήγησης έχουν πάντα πρόσβαση στο ίδιο GUID, υποδεικνύοντας ότι καλείται το ίδιο αντικείμενο.

(Τέλος)






Προηγούμενος:Το .NET Core Entity χρησιμοποιεί το Entity Framework Core για τη σύνδεση βάσεων δεδομένων
Επόμενος:Το ASP.NET Core χρησιμοποιεί το Autofac για την εφαρμογή της έγχυσης IOC
 Σπιτονοικοκύρης| Δημοσιεύτηκε στις 9/3/2022 11:00:35 π.μ. |
Αντικαταστήστε τις υπηρεσίες στα ενσωματωμένα κοντέινερ DI του ASP.NET Core

Κώδικας:





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

Mail To:help@itsvse.com