See artikkel on masintõlke peegelartikkel, palun klõpsake siia, et hüpata algse artikli juurde.

Vaade: 20252|Vastuse: 1

[Allikas] Autofac komponendi instantsi ulatus

[Kopeeri link]
Postitatud 14.09.2018 13:22:21 | | | |
Instantsi ulatus määrab, kuidas teenused päringute vahel jagatakse.

Algne aadress:http://docs.autofac.org/en/latest/lifetime/instance-scope.html

Üks instants iga sõltuvuse kohta

Selle valikuga tagastatakse iga kord, kui teenust taotletakse, uus instants. Kasuta InstancePerDependency(). See on vaikimisi valik. Allolev kood, read 2 ja 3, on samaväärsed.

Järgmine kood genereerib iga tsükli jaoks uue instantsi, kokku 100 eksemplari.

Üksikjuhtum

Kasuta seda valikut, et taotleda teenust kas root- või pesastatud ulatuses, mõlemad tagastavad sama instantsi. Kasuta SingleInstance() täpsustamiseks.


Allolev kood, w1 ja w2, on alati sama objekt ning Worker klassi eksemplar on 100 tsüklis.


Üks eksemplar elutsükli ulatuse kohta

Kasuta seda valikut, et taotleda teenust kindlas ILifetimeScope'is, tagastades ainult ühe instantsi. Kasuta InstancePerLifetimeScope(). Järgmises koodis on 100 korda w1 scope1-s sama objekt ja 100 korda w2 scope2-s on sama objekt, kuid w1 ja w2 ei ole sama objekt.


Üks eksemplar iga sobitatud elutsükli vahemiku kohta

Sarnane [üks eksemplar elutsükli kohta] eelnevale, kuid suurema kontrolliga. Kasuta seda valikut, et lubada ILifetimeScope objektile anda silt. Paarismatši ulatuses on ainult üks juhtum. Kasuta InstancePerMatchingLifetimeScope() meetodit.

Allolevas koodis on w1 ja w2 samad, w3 ja w4 on samad, aga w1 ja w3 on erinevad.

Õige märgistus tuleb parsimisel esitada ning järgmine kood teeb erandi.

Üks instants iga taotluse kohta

Mõnel rakendusel on loomulikult Request semantika, näiteks ASP.NET MVC või WebForm rakendused. [Üks eksemplar iga päringu kohta] on rakendatud [ühe eksemplari iga vastavuse elutsükli vahemiku kohta] alusel, pakkudes ulatuse markereid, registreerimisfunktsioone ja ühise tüübi integratsiooni. Põhimõtteliselt [üks eksemplar iga sobitatud elutsükli vahemiku kohta].

ASP.NET Core kasutab ühte eksemplari elutsükli ulatuse kohta, mitte ühte eksemplari iga päringu kohta.

Üks eksemplar iga Owned kohta

<T> Omanduses kaudse seose tüüp loob pesastatud elutsükli vahemikud. Instantside kaupa registreerimisega saab piirata sõltuvusi omatud instantsidele.

Sellisel juhul on ServiceForHandler teenus piiratud MessageHandleri eksemplari ulatusega.


Niidivahemik

Autofac võib sundida lõime A objekte mitte rahuldama lõime B sõltuvusi.

Seejärel las igaüks loob oma eluaegse ulatuse

Tähtis: Mitmelõimelise olukorra korral ole ettevaatlik, et mitte puhastada vanemsulatust.Vastasel juhul ei suuda tuletatud lõime alamskoobid teenust lahendada.

Igal lõimel on oma MyThreadScopedComponent eksemplar, mis on sisuliselt elutsükli ulatusega singleton. Scope'i instantsid ei ole väliselt esitatud, seega on lihtne hoida komponente lõimede vahel eraldatuna.

ILifetimeScope parameetri lisamisega saab vanemvahemiku sisestada lõime genereerivasse koodi ning Autofac süstib automaatselt praeguse vahemiku, mida saab kasutada pesastatud scope'ide loomiseks.

Kui soovid seda veelgi kontrollida, saad kasutada [üks instants iga sobiva elutsükli vahemiku kohta], et seostada lõime-ulatusega komponente sisemiste elutsükli scope'idega, nagu joonisel näidatud:



Diagrammil olev "Kontekst" on elutsükli vahemik, mille loob BeginLifetimeScope meetod.





Eelmine:Esiotsa hiireklõpsude efektid: vabadus, demokraatia, jõukus
Järgmine:{&quot;error_msg&quot;: &quot;IAM sertifitseerimine ebaõnnestus&quot;}
Disclaimer:
Kõik Code Farmer Networki poolt avaldatud tarkvara, programmeerimismaterjalid või artiklid on mõeldud ainult õppimiseks ja uurimistööks; Ülaltoodud sisu ei tohi kasutada ärilistel ega ebaseaduslikel eesmärkidel, vastasel juhul kannavad kasutajad kõik tagajärjed. Selle saidi info pärineb internetist ning autoriõiguste vaidlused ei ole selle saidiga seotud. Ülaltoodud sisu tuleb oma arvutist täielikult kustutada 24 tunni jooksul pärast allalaadimist. Kui sulle programm meeldib, palun toeta originaaltarkvara, osta registreerimist ja saa paremaid ehtsaid teenuseid. Kui esineb rikkumist, palun võtke meiega ühendust e-posti teel.

Mail To:help@itsvse.com