Šis straipsnis yra veidrodinis mašininio vertimo straipsnis, spauskite čia norėdami pereiti prie originalaus straipsnio.

Rodinys: 20252|Atsakyti: 1

[Šaltinis] Autofac komponento egzemplioriaus aprėptis

[Kopijuoti nuorodą]
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ėjimas
Kitą:{&quot;error_msg&quot;: &quot;IAM sertifikavimas nepavyko&quot;}
Atsakomybės apribojimas:
Visa programinė įranga, programavimo medžiaga ar straipsniai, kuriuos skelbia Code Farmer Network, yra skirti tik mokymosi ir mokslinių tyrimų tikslams; Aukščiau nurodytas turinys negali būti naudojamas komerciniais ar neteisėtais tikslais, priešingu atveju vartotojai prisiima visas pasekmes. Šioje svetainėje pateikiama informacija gaunama iš interneto, o ginčai dėl autorių teisių neturi nieko bendra su šia svetaine. Turite visiškai ištrinti aukščiau pateiktą turinį iš savo kompiuterio per 24 valandas nuo atsisiuntimo. Jei jums patinka programa, palaikykite autentišką programinę įrangą, įsigykite registraciją ir gaukite geresnes autentiškas paslaugas. Jei yra kokių nors pažeidimų, susisiekite su mumis el. paštu.

Mail To:help@itsvse.com