|
|
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õukusJärgmine:{"error_msg": "IAM sertifitseerimine ebaõnnestus"}
|