|
|
Paskelbta 2018-09-14 13:22:21
|
|
|
|

Egzemplioriaus aprėptis nustato, kaip paslaugos bendrinamos tarp užklausų.
Pradinis adresas:http://docs.autofac.org/en/latest/lifetime/instance-scope.html
Vienas egzempliorius vienai priklausomybei
Pasirinkus šią parinktį, kiekvieną kartą pareikalavus paslaugos grąžinamas naujas egzempliorius. Naudokite InstancePerDependency(). Tai numatytoji parinktis. Žemiau esantis kodas, 2 ir 3 eilutės yra lygiavertės.
Šis kodas sugeneruoja naują egzempliorių kiekvienai kilpai, iš viso 100 egzempliorių.
Vienas egzempliorius
Naudokite šią parinktį, jei norite užklausti paslaugos šakninėje arba įdėtoje aprėptyje, abu grąžindami tą patį egzempliorių. Norėdami nurodyti, naudokite SingleInstance().
Žemiau esantis kodas, w1 ir w2 visada yra tas pats objektas, o 100 kilpų yra tik vienas darbininko klasės egzempliorius.
Vienas egzempliorius kiekvienai ciklo aprėpčiai
Naudokite šią parinktį, jei norite prašyti tarnybos konkrečioje ILifetimeScope, grąžinant tik vieną egzempliorių. Naudokite InstancePerLifetimeScope(). Šiame kode 100 kartų w1 aprėptyje1 yra tas pats objektas, o 100 kartų w2 aprėptyje2 yra tas pats objektas, tačiau w1 ir w2 nėra tas pats objektas.
Vienas egzempliorius atitinkančiam ciklo diapazonui
Panašus į [vienas egzempliorius kiekvienai ciklo aprėpčiai], bet su didesniu valdymu. Naudokite šią parinktį, jei norite leisti objektui ILifetimeScope pateikti žymę. Žymių atitikties diapazone yra tik vienas egzempliorius. Naudokite InstancePerMatchingLifetimeScope() metodą.
Žemiau esančiame kode w1 ir w2 yra vienodi, w3 ir w4 yra vienodi, tačiau w1 ir w3 skiriasi.
Analizuojant reikia pateikti atitinkamą žymėjimą, o šis kodas pateikia išimtį.
Vienas egzempliorius vienai užklausai
Kai kurios programos natūraliai turi užklausos semantiką, pvz., ASP.NET MVC arba WebForm programas. [Vienas egzempliorius vienai užklausai] įgyvendinamas remiantis [vienas egzempliorius atitinkančiam ciklo diapazonui], pateikiant aprėpties žymeklius, registravimo funkcijas ir bendro tipo integraciją. Iš esmės [vienas egzempliorius atitinkančiam gyvavimo ciklo diapazonui].
"ASP.NET Core" naudoja vieną egzempliorių kiekvienai ciklo aprėpčiai, o ne vieną egzempliorių kiekvienai užklausai.
Vienas egzempliorius vienam priklausančiam egzemplioriui
<T> Numanomo susiejimo tipas Owned sukuria įdėtuosius ciklo diapazonus. Registruodami egzempliorių vienam priklausančiam egzemplioriui, galite apriboti priklausomybes iki priklausančių egzempliorių.
Šiuo atveju ServiceForHandler paslauga apsiriboja MessageHandler egzemplioriaus aprėptimi.
Sriegių diapazonas
Autofac gali priversti gijos A objektus netenkinti sriegio B priklausomybių.
Tada leiskite kiekvienam sukurti savo gyvenimo apimtį
Svarbu: Kelių gijų scenarijuje būkite atsargūs, kad neišvalytumėte pirminės aprėpties.Priešingu atveju išvestinės gijos antrinės aprėptys negalės išspręsti tarnybos.
Kiekviena gija turės savo egzempliorių MyThreadScopedComponent, kuris iš esmės yra gyvavimo ciklo aprėpties singleton. Į aprėptį įtraukti egzemplioriai nėra pateikiami išorėje, todėl lengva išlaikyti komponentus izoliuotus tarp gijų.
Pridėjus parametrą ILifetimeScope, pirminis diapazonas gali būti įterptas į kodą, kuris generuoja giją, o "Autofac" automatiškai įterps dabartinį diapazoną, kurį vėliau bus galima naudoti įdėtoms aprėptims kurti.
Jei norite jį valdyti toliau, galite naudoti [vienas egzempliorius atitinkančiam ciklo diapazonui], kad susietumėte gijų aprėpties komponentus su vidinėmis ciklo aprėptimis, kaip parodyta paveikslėlyje:
Diagramos kontekstas yra ciklo diapazonas, sukurtas naudojant metodą BeginLifetimeScope.
|
Ankstesnis:Front-end pelės paspaudimo efektai: laisvė, demokratija, klestėjimasKitą:{"error_msg": "IAM sertifikavimas nepavyko"}
|