Denna artikel är en spegelartikel om maskinöversättning, klicka här för att hoppa till originalartikeln.

Utsikt: 20252|Svar: 1

[Källa] Instansomfattningen av autofac-komponenten

[Kopiera länk]
Publicerad på 2018-09-14 13:22:21 | | | |
Instansens omfattning avgör hur tjänster delas mellan förfrågningar.

Ursprunglig adress:http://docs.autofac.org/en/latest/lifetime/instance-scope.html

En instans per beroende

Med detta alternativ returneras en ny instans varje gång tjänsten begärs. Använd InstancePerDependency(). Detta är standardalternativet. Koden nedan, raderna 2 och 3, är ekvivalenta.

Följande kod genererar en ny instans för varje loop, totalt 100 instanser.

Enskilda instanser

Använd detta alternativ för att begära en tjänst i antingen root- eller nästlade scope, där båda returnerar samma instans. Använd SingleInstance() för att specificera.


Koden nedan, w1 och w2, är alltid samma objekt, och det finns bara en instans av Worker-klassen i 100 loopar.


En instans per livscykelomfång

Använd detta alternativ för att begära en tjänst i en specifik ILifetimeScope och returnera endast en instans. Använd InstancePerLifetimeScope(). I följande kod är de 100 gångerna w1 i scope1 samma objekt, och de 100 gånger w2 i scope2 är samma objekt, men w1 och w2 är inte samma objekt.


En instans per matchningslivscykelintervall

Liknande [en instans per livscykelomfång] ovan, men med mer kontroll. Använd detta alternativ för att tillåta att ILifetimeScope-objektet får en tagg. Det finns bara ett tillfälle inom intervallet för tag match. Använd InstancePerMatchingLifetimeScope()-metoden.

I koden nedan är w1 och w2 samma, w3 och w4 är samma, men w1 och w3 skiljer sig åt.

Lämplig markering måste anges vid parsing, och följande kod ger ett undantag.

En instans per förfrågan

Vissa applikationer har naturligtvis Request-semantik, såsom ASP.NET MVC- eller WebForm-applikationer. [En instans per förfrågan] implementeras baserat på [en instans per matchande livscykelintervall], genom att tillhandahålla scope-markörer, registreringsfunktioner och gemensam typintegration. I princip, [en instans per matchande livscykelintervall].

ASP.NET Core använder en instans per livscykelomfång istället för en instans per förfrågan.

En instans per ägd

Typen Owned<T> implicit association skapar nästlade livscykelintervall. Med registrering per instans kan du begränsa beroenden till ägda instanser.

I detta fall är ServiceForHandler-tjänsten begränsad till MessageHandler-instansens omfattning.


Gängomfång

Autofac kan tvinga objekten i tråd A att inte uppfylla tråd B:s beroenden.

Låt sedan var och en skapa sitt eget livstidsperspektiv

Viktigt: I ett multitrådat scenario, var försiktig så att du inte rensar upp i föräldrascopet.Annars kommer delscopes i den härledda tråden inte att kunna lösa tjänsten.

Varje tråd har sin egen instans av MyThreadScopedComponent, som i princip är en livscykelbaserad singleton. Instanser inom scope tillhandahålls inte externt, så det är lätt att hålla komponenter isolerade mellan trådar.

Genom att lägga till parametern ILifetimeScope kan föräldraintervallet injiceras i koden som genererar tråden, och Autofac injicerar automatiskt det aktuella intervallet, som sedan kan användas för att skapa nästlade scopes.

Om du vill kontrollera det vidare kan du använda [en instans per matchande livscykelintervall] för att associera tråd-scoped komponenter med interna livscykelscopes, som visas i figuren:



"Kontexten" i diagrammet är livscykelintervallet som skapas med BeginLifetimeScope-metoden.





Föregående:Front-end musklickseffekter: frihet, demokrati, välstånd
Nästa:{&quot;error_msg&quot;: &quot;IAM-certifiering misslyckades&quot;}
Friskrivning:
All programvara, programmeringsmaterial eller artiklar som publiceras av Code Farmer Network är endast för lärande- och forskningsändamål; Ovanstående innehåll får inte användas för kommersiella eller olagliga ändamål, annars kommer användarna att bära alla konsekvenser. Informationen på denna sida kommer från internet, och upphovsrättstvister har inget med denna sida att göra. Du måste helt radera ovanstående innehåll från din dator inom 24 timmar efter nedladdning. Om du gillar programmet, vänligen stöd äkta programvara, köp registrering och få bättre äkta tjänster. Om det finns något intrång, vänligen kontakta oss via e-post.

Mail To:help@itsvse.com