Ez a cikk egy tükör gépi fordítás, kérjük, kattintson ide, hogy ugorjon az eredeti cikkre.

Nézet: 20252|Válasz: 1

[Forrás] Az autofac komponens instance scope-ja

[Linket másol]
Közzétéve 2018. 09. 14. 13:22:21 | | | |
A instance scope határozza meg, hogyan osztódnak meg a szolgáltatások a kérések között.

Eredeti cím:http://docs.autofac.org/en/latest/lifetime/instance-scope.html

Egy példány függőségenként

Ezzel a lehetőséggel minden kéréskor új példányt küldenek vissza. Használd az InstancePerDependency() funkciót. Ez az alapértelmezett opció. Az alábbi kód, a 2. és 3. sorok ekvivalensek.

A következő kód minden hurokhoz új példányt generál, összesen 100 példányt.

Egyetlen példány

Ezt az opciót használva szolgáltatást kérhetsz a gyökér- vagy a beágyazott scope-ban, mindkettő ugyanazt az példányt adja vissza. Használd a SingleInstance() gombot a meghatározáshoz.


Az alábbi kód, a w1 és w2 mindig ugyanaz az objektum, és csak egy példány van a Munkás osztálynak 100 ciklusban.


Egy példány per életciklus scope-a

Ezt az opciót használva szolgáltatást kérhetsz egy adott ILifetimeScope-ban, és csak egy példányt adj vissza. Használd az InstancePerLifetimeScope() funkciót. A következő kódban a scope1-ben a 100-szor w1 ugyanaz az objektum, és a scope2-ben lévő 100-szor w2 ugyanaz az objektum, de w1 és w2 nem ugyanaz az objektum.


Egy példány az életciklus megfelelő tartományonként

Hasonló a fent említett [egy példány életciklusonként] műsorhoz, de nagyobb kontrollral. Használd ezt az opciót, hogy az ILifetimeScope objektum címke kapjon. Csak egy eset van a páros mérkőzés hatótávolságában. Használd az InstancePerMatchingLifetimeScope() módszert.

Az alábbi kódban a w1 és a w2 ugyanaz, a w3 és w4 ugyanaz, de a w1 és w3 más.

A megfelelő jelölést meg kell adni az elemzés során, és a következő kód kivételt ad.

Egy példány kérésenként

Néhány alkalmazás természetesen Request szemantikával rendelkezik, például ASP.NET MVC vagy WebForm alkalmazások. [Egy példány kérésenként] [egy példány per megfelelő életciklus tartomány] alapján valósítható meg, hatótávjelzők, regisztrációs függvények és közös típusintegráció biztosításával. Lényegében [egy példány az életciklus egyezésével].

ASP.NET Core egy példányt használ életciklus-hatókörben, nem pedig egy példányt kérésenként.

Egy példány egy Owned

A<T> Tulajdonolt implicit asszociáció típus beágyazott életciklus-tartományokat hoz létre. Instance-per owned regisztrációval korlátozhatod a függőségeket a saját példányokra.

Ebben az esetben a ServiceForHandler szolgáltatás a MessageHandler példány hatókörére korlátozódik.


Szál tartomány

Az autofac arra kényszerítheti az A szál objektumait, hogy ne kielégítsék a B szál függőségeit.

Ezután hadd alakítsuk ki mindegyik saját életre szóló keretét

Fontos: Többszálas helyzetben vigyázz, hogy ne tisztítsd meg a szülői scope-t.Ellenkező esetben a származtatott szál alszkópjai nem tudják feloldani a szolgáltatást.

Minden szálnak saját MyThreadScopedComponent példánya lesz, amely lényegében egy életciklus-hatókörös singleton. A scope-ban lévő példányok nem külsőleg érkeznek, így könnyű a komponenseket elszigetelve tartani a szálak között.

Az ILifetimeScope paraméter hozzáadásával a parent range beilleszthető a szálat generáló kódba, és az Autofac automatikusan befecskendíti az aktuális tartományt, amelyből beágyazott scope-ok létrehozhatók.

Ha tovább szeretnéd irányítani, használhatod [egy példányt az életciklus megfelelő tartományára], hogy a szálas távcsövű komponenseket a belső életciklus-távcsövekhez társítsd, ahogy az ábrán látható:



A diagramban szereplő "Kontextus" a BeginLifetimeScope módszerrel létrehozott életciklus-tartomány.





Előző:Front-end egérkattintás hatások: szabadság, demokrácia, jólét
Következő:{&quot;error_msg&quot;: &quot;IAM tanúsítás meghibásodott&quot;}
Lemondás:
A Code Farmer Network által közzétett összes szoftver, programozási anyag vagy cikk kizárólag tanulási és kutatási célokra szolgál; A fenti tartalmat nem szabad kereskedelmi vagy illegális célokra használni, különben a felhasználók viselik az összes következményet. Az oldalon található információk az internetről származnak, és a szerzői jogi vitáknak semmi köze ehhez az oldalhoz. A fenti tartalmat a letöltés után 24 órán belül teljesen törölni kell a számítógépéről. Ha tetszik a program, kérjük, támogassa a valódi szoftvert, vásároljon regisztrációt, és szerezzen jobb hiteles szolgáltatásokat. Ha bármilyen jogsértés történik, kérjük, vegye fel velünk a kapcsolatot e-mailben.

Mail To:help@itsvse.com