Dieser Artikel ist ein Spiegelartikel der maschinellen Übersetzung, bitte klicken Sie hier, um zum Originalartikel zu springen.

Ansehen: 36245|Antwort: 1

[.NET Core] ASP.NET Core Dependency Injection verwendet den mitgelieferten IOC-Container

[Link kopieren]
Veröffentlicht am 07.05.2019 13:55:10 | | | |
ASP.NET Core Dependency Injection verwendet den mitgelieferten IOC-Container
https://www.itsvse.com/thread-7562-1-1.html
(Quelle: Architect_Programmer)

ASP.NET Core verwendet Autofac, um IOC-Injektionen zu implementieren
https://www.itsvse.com/thread-7563-1-1.html
(Quelle: Architect_Programmer)

ASP.NET Core verwendet Autofac, um AOP-Abfang zu implementieren
https://www.itsvse.com/thread-7566-1-1.html
(Quelle: Architect_Programmer)

Im neuen ASP.NET Core werden zahlreiche Abhängigkeitsinjektionen verwendet, um Code zu schreiben.

Zum Beispiel sehen wir in unserem Startup-Kurs Folgendes:

AddMvc AddDbContext beinhaltet den AddDirectoryBrowser, den wir zuvor für Verzeichnisführungen verwendet haben:

Das sind alles Frameworks, die gute Dienstleistungen anbieten, und wir können sie direkt nutzen, indem wir sie einschleusen.

Die Inversion der Steuerung (IoC) ist ein Designprinzip in der objektorientierten Programmierung, das verwendet werden kann, um die Kopplung zwischen Computercode zu verringern. Die gebräuchlichste Methode heißt Dependency Injection (DI), und es gibt auch eine Methode namens "Dependency Lookup". Durch die Steuerung der Inversion übergibt eine externe Entität, die alle Objekte im System kontrolliert, beim Erstellen eines Objekts eine Referenz auf das Objekt, von dem es abhängig ist. Man kann auch sagen, dass Abhängigkeiten in das Objekt eingeschleust werden.

Um die IOC zu verwenden, muss die Startup-Klasse auf Microsoft.Extensions.DependencyInjection(ps) verweisen, was bereits ziemlich unkompliziert ist: Microsoft.. Erweitern... Abhängigkeitsinjektion – - ,)

Injektion des Lebenszyklus eines Dienstes

Microsoft bietet drei Lebenszyklen für selbstinjizierte Dienste an.

Transient

Ein sofortiger Lebenszyklusdienst, der jedes Mal erstellt wird, wenn er angefordert wird. Dieser Lebenszyklus eignet sich am besten für leichte, staatenlose Dienste.

Zielfernrohr

Im gleichen Umfang wird der Dienst nur einmal pro Anfrage erstellt.

Singleton (Nur)

Der globale wird nur einmal erstellt, beim ersten Mal, wenn er angefordert wird, und dann wird er immer verwendet.

Wie nutzt du diese drei Lebenszyklen? Wir können beim Einspritzen direkt verschiedene Methoden verwenden, der Code ist wie folgt:


Testen wir die spezifische Generation dieser drei Lebenszyklen

Wir schreiben drei Schnittstellen mit unterschiedlichen Namen und drei verschiedenen Klassen, um die Schnittstellen wie folgt zu implementieren:

Im Konstruktor jeder Implementierungsklasse generieren wir ein neues GUID, das es uns ermöglicht zu bestimmen, ob die Klasse den Konstruktor erneut ausgeführt hat.

Dienste in den Controller injizieren

Es gibt im Allgemeinen drei Arten der Injektion: Konstruktorinjektion, Methodeninjektion und Attributinjektion. Microsofts eigener IOC-Container verwendet standardmäßig Constructor-Injection (Attributinjektion wird nicht unterstützt, aber das kann mit einem Drittanbieter-Containerersatz erreicht werden)

Seitencode anzeigen:

Führen Sie das Projekt aus und greifen Sie über zwei verschiedene Browser darauf zu, wie unten gezeigt:



Wir stellten fest, dass die zweimal im momentanen Lebenszyklus erzeugten GUIDs inkonsistent sind, was darauf hindeutet, dass das Objekt nicht dasselbe ist.

Der Umfangszyklus ist jedoch derselbe, da unter demselben Umfang die GUID des zweimal im selben Browser verwendeten Dienstes gleich ist, was darauf hinweist, dass dasselbe Objekt verwendet wird.

Im Fall eines Singletons greifen zwei verschiedene Browser immer auf denselben GUID zu, was darauf hinweist, dass dasselbe Objekt aufgerufen wird.

(Ende)






Vorhergehend:.NET Core Entity verwendet Entity Framework Core, um Datenbanken zu verknüpfen
Nächster:ASP.NET Core verwendet Autofac, um IOC-Injektionen zu implementieren
 Vermieter| Veröffentlicht am 09.03.2022 11:00:35 |
Dienste in den integrierten DI-Containern von ASP.NET Core ersetzen

Code:





Verzichtserklärung:
Alle von Code Farmer Network veröffentlichten Software, Programmiermaterialien oder Artikel dienen ausschließlich Lern- und Forschungszwecken; Die oben genannten Inhalte dürfen nicht für kommerzielle oder illegale Zwecke verwendet werden, andernfalls tragen die Nutzer alle Konsequenzen. Die Informationen auf dieser Seite stammen aus dem Internet, und Urheberrechtsstreitigkeiten haben nichts mit dieser Seite zu tun. Sie müssen die oben genannten Inhalte innerhalb von 24 Stunden nach dem Download vollständig von Ihrem Computer löschen. Wenn Ihnen das Programm gefällt, unterstützen Sie bitte echte Software, kaufen Sie die Registrierung und erhalten Sie bessere echte Dienstleistungen. Falls es eine Verletzung gibt, kontaktieren Sie uns bitte per E-Mail.

Mail To:help@itsvse.com