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

Utsikt: 20252|Svare: 1

[Kilde] Instansomfanget til autofac-komponenten

[Kopier lenke]
Publisert på 14.09.2018 13:22:21 | | | |
Instansens omfang bestemmer hvordan tjenester deles mellom forespørsler.

Opprinnelig adresse:http://docs.autofac.org/en/latest/lifetime/instance-scope.html

Én instans per avhengighet

Med dette alternativet returneres en ny instans hver gang tjenesten forespørsles. Bruk InstancePerDependency(). Dette er standardalternativet. Koden nedenfor, linje 2 og 3, er ekvivalente.

Følgende kode genererer en ny instans for hver løkke, totalt 100 instanser.

Enkeltinstans

Bruk dette alternativet for å be om en tjeneste enten i roten eller det nestede omfanget, begge returnerer samme instans. Bruk SingleInstance() for å spesifisere.


Koden nedenfor, w1 og w2, er alltid det samme objektet, og det finnes bare én instans av Worker-klassen i 100 løkker.


Én instans per livssyklusomfang

Bruk dette alternativet for å be om en tjeneste i en spesifikk ILifetimeScope, og returnere kun én instans. Bruk InstancePerLifetimeScope(). I følgende kode er de 100 ganger w1 i scope1 det samme objektet, og de 100 ganger w2 i scope2 er det samme objektet, men w1 og w2 er ikke det samme objektet.


Én instans per matchende livssyklusområde

Ligner på [én instans per livssyklusomfang] over, men med mer kontroll. Bruk dette alternativet for å tillate at ILifetimeScope-objektet får en Tag. Det finnes bare én instans innenfor området til tag match. Bruk InstancePerMatchingLifetimeScope()-metoden.

I koden nedenfor er w1 og w2 det samme, w3 og w4 er det samme, men w1 og w3 er forskjellige.

Riktig markering må oppgis ved parsing, og følgende kode gir et unntak.

Én instans per forespørsel

Noen applikasjoner har naturlig Request-semantikk, som ASP.NET MVC- eller WebForm-applikasjoner. [Én instans per forespørsel] implementeres på grunnlag av [én instans per matchende livssyklusområde], ved å tilby scope-markører, registreringsfunksjoner og felles typeintegrasjon. I hovedsak [én instans per matchende livssyklusområde].

ASP.NET Core bruker én instans per livssyklusomfang i stedet for én instans per forespørsel.

Én instans per eid

Typen Owned<T> implisitt assosiasjon skaper nestede livssyklusområder. Med registrering per instans kan du begrense avhengigheter til eide instanser.

I dette tilfellet er ServiceForHandler-tjenesten begrenset til omfanget til MessageHandler-instansen.


Gjengeområde

Autofac kan tvinge objektene i tråd A til ikke å tilfredsstille avhengighetene til tråd B.

La så hver enkelt lage sitt eget livstidsperspektiv

Viktig: I et multitrådet scenario, vær forsiktig så du ikke rydder opp i foreldrescopet.Ellers vil ikke subscopene i den avledede tråden kunne løse tjenesten.

Hver tråd vil ha sin egen instans av MyThreadScopedComponent, som i praksis er en livssyklus-scoped singleton. Instanser i scope er ikke gitt eksternt, så det er lett å holde komponenter isolert mellom tråder.

Ved å legge til parameteren ILifetimeScope kan foreldreområdet injiseres i koden som genererer tråden, og Autofac vil automatisk injisere det nåværende området, som deretter kan brukes til å lage nestede scopes.

Hvis du vil kontrollere det ytterligere, kan du bruke [én instans per matchende livssyklusområde] for å knytte trådbaserte komponenter til interne livssyklusomfang, som vist i figuren:



"Konteksten" i diagrammet er livssyklusområdet som er laget av BeginLifetimeScope-metoden.





Foregående:Front-end museklikkeffekter: frihet, demokrati, velstand
Neste:{&quot;error_msg&quot;: &quot;IAM-sertifisering mislyktes&quot;}
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