Denne artikkelen er en speilartikkel om maskinoversettelse, vennligst klikk her for å hoppe til originalartikkelen.

Utsikt: 36245|Svare: 1

[.NET Core] ASP.NET Core-avhengighetsinjeksjon bruker IOC-beholderen som følger med

[Kopier lenke]
Publisert på 07.05.2019 13:55:10 | | | |
ASP.NET Core-avhengighetsinjeksjon bruker IOC-beholderen som følger med
https://www.itsvse.com/thread-7562-1-1.html
(Kilde: Architect_Programmer)

ASP.NET Core bruker Autofac for å implementere IOC-injeksjon
https://www.itsvse.com/thread-7563-1-1.html
(Kilde: Architect_Programmer)

ASP.NET Core bruker Autofac for å implementere AOP-avskjæring
https://www.itsvse.com/thread-7566-1-1.html
(Kilde: Architect_Programmer)

I den nye ASP.NET Core brukes et stort antall avhengighetsinjeksjoner for å skrive kode.

For eksempel, i vår Startup-klasse kan vi se følgende:

AddMvc AddDbContext inkluderer AddDirectoryBrowser vi brukte til katalogturer før:

De er alle rammeverk som tilbyr gode tjenester, og vi kan bruke dem direkte ved å injisere dem.

Inversjon av kontroll (IoC) er et designprinsipp i objektorientert programmering som kan brukes for å redusere koblingen mellom datakode. Den vanligste metoden kalles Dependency Injection (DI), og det finnes også en metode kalt "Dependency Lookup". Ved å kontrollere inversjonen, når et objekt opprettes, sender en ekstern enhet som kontrollerer alle objekter i systemet en referanse til objektet det er avhengig av. Det kan også sies at avhengigheter injiseres i objektet.

For å bruke ioc må Startup-klassen referere til Microsoft.Extensions.DependencyInjection(ps), som allerede er ganske enkelt: Microsoft.. Utvid... Avhengighetsinjeksjon - - ,)

Injiser livssyklusen til en tjeneste

Microsoft tilbyr 3 livssykluser for selvinjiserte tjenester.

Forbigående

En øyeblikkelig livssyklustjeneste som opprettes hver gang den forespørsles. Denne livssyklusen egner seg best for lette, statsløse tjenester.

Scoped

I samme omfang opprettes tjenesten kun én gang per forespørsel.

Singleton (Kun)

Den globale opprettes bare én gang, første gang den forespørsles, og deretter brukes den alltid.

Hvordan bruker du disse tre livssyklusene? Vi kan bruke forskjellige metoder direkte når vi injiserer, koden er som følger:


La oss teste den spesifikke genereringen av disse tre livssyklusene

Vi skriver tre grensesnitt med forskjellige navn og tre forskjellige klasser for å implementere grensesnittene, som følger:

I hver implementasjonsklasses konstruktør genererer vi en ny GUID, som lar oss avgjøre om klassen har kjørt konstruktøren på nytt.

Injiser tjenester inn i kontrolleren

Det finnes vanligvis tre måter å injeksjonere på: konstruktørinjeksjon, metodeinjeksjon og attributtinjeksjon. Microsofts egen IOC-container bruker konstruktørinjeksjon som standard (Attributtinjeksjon støttes ikke, men det kan oppnås med en tredjeparts container-erstatning)

Vis sidekode:

Kjør prosjektet og få tilgang til det gjennom to forskjellige nettlesere, som vist nedenfor:



Vi fant at GUID-ene som genereres to ganger i den øyeblikkelige livssyklusen er inkonsistente, noe som indikerer at objektet ikke er det samme.

Imidlertid er omfangslivssyklusen den samme, fordi under samme omfang er GUID-en til tjenesten som brukes to ganger i samme nettleser den samme, noe som indikerer at samme objekt brukes.

I tilfellet med en singleton får to forskjellige nettlesere tilgang til den samme GUID-en, noe som indikerer at det samme objektet kalles.

(Slutt)






Foregående:.NET Core Entity bruker Entity Framework Core for å koble databaser
Neste:ASP.NET Core bruker Autofac for å implementere IOC-injeksjon
 Vert| Publisert på 09.03.2022 11:00:35 |
Bytt ut tjenester i ASP.NET Cores innebygde DI-containere

Kode:





Ansvarsfraskrivelse:
All programvare, programmeringsmateriell eller artikler publisert av Code Farmer Network er kun for lærings- og forskningsformål; Innholdet ovenfor skal ikke brukes til kommersielle eller ulovlige formål, ellers skal brukerne bære alle konsekvenser. Informasjonen på dette nettstedet kommer fra Internett, og opphavsrettstvister har ingenting med dette nettstedet å gjøre. Du må fullstendig slette innholdet ovenfor fra datamaskinen din innen 24 timer etter nedlasting. Hvis du liker programmet, vennligst støtt ekte programvare, kjøp registrering, og få bedre ekte tjenester. Hvis det foreligger noen krenkelse, vennligst kontakt oss på e-post.

Mail To:help@itsvse.com