Šis raksts ir mašīntulkošanas spoguļraksts, lūdzu, noklikšķiniet šeit, lai pārietu uz oriģinālo rakstu.

Skats: 20252|Atbildi: 1

[Avots] Autofac komponenta instances tvērums

[Kopēt saiti]
Publicēts 14.09.2018 13:22:21 | | | |
Instances tvērums nosaka, kā pakalpojumi tiek koplietoti starp pieprasījumiem.

Sākotnējā adrese:http://docs.autofac.org/en/latest/lifetime/instance-scope.html

Viens gadījums katrai atkarībai

Izmantojot šo opciju, katru reizi, kad tiek pieprasīts pakalpojums, tiek atgriezta jauna instance. Izmantojiet InstancePerDependency(). Šī ir noklusējuma opcija. Zemāk esošais kods, 2. un 3. rinda ir līdzvērtīga.

Tālāk norādītais kods ģenerē jaunu instanci katrai cilpai, kopumā 100 gadījumiem.

Viens gadījums

Izmantojiet šo opciju, lai pieprasītu pakalpojumu saknes vai ligzdotajā tvērumā, atgriežot vienu un to pašu instanci. Izmantojiet SingleInstance(), lai norādītu.


Zemāk esošais kods w1 un w2 vienmēr ir viens un tas pats objekts, un 100 cilpās ir tikai viens Worker klases gadījums.


Viena instance katram dzīves cikla tvērumam

Izmantojiet šo opciju, lai pieprasītu pakalpojumu noteiktā ILifetimeScope, atgriežot tikai vienu instanci. Izmantojiet InstancePerLifetimeScope(). Nākamajā kodā 100 reizes w1 tvērumā1 ir viens un tas pats objekts, un 100 reizes w2 tvērumā2 ir viens un tas pats objekts, bet w1 un w2 nav viens un tas pats objekts.


Viena instance katram atbilstošam dzīves cikla diapazonam

Līdzīgi kā [viena instance katrā dzīves cikla tvērumā] iepriekš, bet ar lielāku kontroli. Izmantojiet šo opciju, lai atļautu objektam ILifetimeScope nodrošināt tagu. Tagu atbilstības diapazonā ir tikai viens gadījums. Izmantojiet metodi InstancePerMatchingLifetimeScope().

Zemāk esošajā kodā w1 un w2 ir vienādi, w3 un w4 ir vienādi, bet w1 un w3 ir atšķirīgi.

Analizējot ir jānorāda atbilstošs marķējums, un šāds kods rada izņēmumu.

Viens gadījums katram pieprasījumam

Dažām lietojumprogrammām, protams, ir pieprasījuma semantika, piemēram, ASP.NET MVC vai WebForm lietojumprogrammas. [Viena instance katram pieprasījumam] tiek ieviesta, pamatojoties uz [viena instance uz atbilstošu dzīves cikla diapazonu], nodrošinot tvēruma marķierus, reģistrācijas funkcijas un kopējo tipu integrāciju. Būtībā [viens gadījums katram atbilstošam dzīves cikla diapazonam].

ASP.NET Core izmanto vienu instanci katrā dzīves cikla tvērumā, nevis vienu instanci katram pieprasījumam.

Viens gadījums katram piederošajam

<T> Netiešās piesaistes tips Owned izveido ligzdotus dzīves cikla diapazonus. Izmantojot reģistrāciju katrai instancei, varat ierobežot atkarības līdz piederošajām instancēm.

Šajā gadījumā pakalpojums ServiceForHandler ir ierobežots līdz MessageHandler instances tvērumam.


Vītņu diapazons

Autofac var piespiest pavediena A objektus neapmierināt pavediena B atkarības.

Tad ļaujiet katram izveidot savu dzīves ilgumu

Svarīgi: Vairāku pavedienu scenārijā esiet uzmanīgi, lai neiztīrītu vecāktvērumu.Pretējā gadījumā atvasinātā pavediena apakštvērumi nevarēs atrisināt pakalpojumu.

Katram pavedienam būs sava MyThreadScopedComponent instance, kas būtībā ir dzīves cikla tvēruma singletons. Tvēruma instances netiek nodrošinātas ārēji, tāpēc ir viegli saglabāt komponentus izolētus starp pavedieniem.

Pievienojot parametru ILifetimeScope, vecākdiapazonu var ievadīt kodā, kas ģenerē pavedienu, un Autofac automātiski ievadīs pašreizējo diapazonu, ko pēc tam var izmantot, lai izveidotu ligzdotus tvērumus.

Ja vēlaties to kontrolēt tālāk, varat izmantot [viena instance katram atbilstošam dzīves cikla diapazonam], lai saistītu pavediena tvēruma komponentus ar iekšējiem dzīves cikla tvērumiem, kā parādīts attēlā:



Diagrammas "Konteksts" ir dzīves cikla diapazons, kas izveidots, izmantojot metodi BeginLifetimeScope.





Iepriekšējo:Priekšējā peles klikšķa efekti: brīvība, demokrātija, labklājība
Nākamo:{&quot;error_msg&quot;: &quot;IAM sertifikācija neizdevās&quot;}
Atruna:
Visa programmatūra, programmēšanas materiāli vai raksti, ko publicē Code Farmer Network, ir paredzēti tikai mācību un pētniecības mērķiem; Iepriekš minēto saturu nedrīkst izmantot komerciāliem vai nelikumīgiem mērķiem, pretējā gadījumā lietotājiem ir jāuzņemas visas sekas. Informācija šajā vietnē nāk no interneta, un autortiesību strīdiem nav nekāda sakara ar šo vietni. Iepriekš minētais saturs ir pilnībā jāizdzēš no datora 24 stundu laikā pēc lejupielādes. Ja jums patīk programma, lūdzu, atbalstiet oriģinālu programmatūru, iegādājieties reģistrāciju un iegūstiet labākus oriģinālus pakalpojumus. Ja ir kādi pārkāpumi, lūdzu, sazinieties ar mums pa e-pastu.

Mail To:help@itsvse.com