Denne artikel er en spejling af maskinoversættelse, klik venligst her for at springe til den oprindelige artikel.

Udsigt: 36245|Svar: 1

[.NET Core] ASP.NET Core-afhængighedsinjektion bruger IOC-containeren, der følger med

[Kopier link]
Opslået på 07/05/2019 13.55.10 | | | |
ASP.NET Core-afhængighedsinjektion bruger IOC-containeren, der følger med
https://www.itsvse.com/thread-7562-1-1.html
(Kilde: Architect_Programmer)

ASP.NET Core bruger Autofac til at implementere IOC-injektion
https://www.itsvse.com/thread-7563-1-1.html
(Kilde: Architect_Programmer)

ASP.NET Core bruger Autofac til at implementere AOP-opsnapning
https://www.itsvse.com/thread-7566-1-1.html
(Kilde: Architect_Programmer)

I den nye ASP.NET Core bruges et stort antal afhængighedsinjektioner til at skrive kode.

For eksempel kan vi i vores Startup-klasse se følgende:

AddMvc AddDbContext inkluderer AddDirectoryBrowseren, som vi brugte til katalogrundvisninger før:

De er alle frameworks, der leverer gode tjenester, og vi kan bruge dem direkte ved at indsætte dem.

Inversion af kontrol (IoC) er et designprincip i objektorienteret programmering, som kan bruges til at reducere koblingen mellem computerkode. Den mest almindelige metode kaldes Dependency Injection (DI), og der findes også en metode kaldet "Dependency Lookup". Ved at kontrollere inversionen, når et objekt oprettes, sender en ekstern enhed, der styrer alle objekter i systemet, til det en reference til det objekt, det afhænger af. Det kan også siges, at afhængigheder injiceres i objektet.

For at bruge ioc skal Startup-klassen referere til Microsoft.Extensions.DependencyInjection(ps, hvilket allerede er ret ligetil: Microsoft.. Udvid... Afhængighedsinjektion - - ,)

Injicere en tjenestes livscyklus

Microsoft tilbyder 3 livscyklusser for selvinjicerede tjenester.

Forbigående

En øjeblikkelig livscyklusservice, der oprettes hver gang den anmodes. Denne livscyklus egner sig bedst til lette, stateless services.

Scoped

I samme omfang oprettes tjenesten kun én gang pr. anmodning.

Singleton (Kun)

Den globale oprettelse oprettes kun én gang, første gang den anmodes, og derefter bruges den altid.

Hvordan bruger du disse tre livscyklusser? Vi kan bruge forskellige metoder direkte ved injektion, koden er som følger:


Lad os teste den specifikke generering af disse tre livscyklusser

Vi skriver tre grænseflader med forskellige navne og 3 forskellige klasser for at implementere grænsefladerne, som følger:

I hver implementeringsklasses konstruktør genererer vi en ny GUID, som gør det muligt at afgøre, om klassen har genudført konstruktøren.

Indsæt services i controlleren

Der er generelt tre måder at indsprøjte på: konstruktørinjektion, metodeinjektion og attributinjektion. Microsofts egen IOC-container bruger som standard konstruktørinjektion (Attributinjektion understøttes ikke, men det kan opnås med en tredjeparts containerudskiftning)

Se sidekode:

Kør projektet og få adgang til det gennem to forskellige browsere, som vist nedenfor:



Vi fandt, at de GUIDs, der genereres to gange i den øjeblikkelige livscyklus, er inkonsistente, hvilket indikerer, at objektet ikke er det samme.

Dog er scope-livscyklussen den samme, fordi GUID for tjenesten, der bruges to gange i samme browser, er den samme, hvilket indikerer, at det samme objekt bruges.

I tilfælde af en singleton tilgår to forskellige browsere altid den samme GUID, hvilket indikerer, at det samme objekt kaldes.

(Slut)






Tidligere:.NET Core Entity bruger Entity Framework Core til at forbinde databaser
Næste:ASP.NET Core bruger Autofac til at implementere IOC-injektion
 Udlejer| Opslået på 09/03/2022 11.00.35 |
Erstat tjenester i ASP.NET Cores indbyggede DI-containere

Kodeks:





Ansvarsfraskrivelse:
Al software, programmeringsmaterialer eller artikler udgivet af Code Farmer Network er kun til lærings- og forskningsformål; Ovenstående indhold må ikke bruges til kommercielle eller ulovlige formål, ellers skal brugerne bære alle konsekvenser. Oplysningerne på dette site kommer fra internettet, og ophavsretstvister har intet med dette site at gøre. Du skal slette ovenstående indhold fuldstændigt fra din computer inden for 24 timer efter download. Hvis du kan lide programmet, så understøt venligst ægte software, køb registrering og få bedre ægte tjenester. Hvis der er nogen overtrædelse, bedes du kontakte os via e-mail.

Mail To:help@itsvse.com