|
|
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étKövetkező:{"error_msg": "IAM tanúsítás meghibásodott"}
|