Ta članek je zrcalni članek strojnega prevajanja, kliknite tukaj za skok na izvirni članek.

Pogled: 20252|Odgovoriti: 1

[Vir] Obseg instance komponente autofac

[Kopiraj povezavo]
Objavljeno na 14. 09. 2018 13:22:21 | | | |
Obseg primera določa, kako se storitve delijo med zahtevami.

Izvirni naslov:http://docs.autofac.org/en/latest/lifetime/instance-scope.html

Ena instanca na odvisnost

S to možnostjo se vsakič, ko je storitev zahtevana, vrne nova instanca. Uporabite InstancePerDependency(). To je privzeta možnost. Spodnja koda, vrstici 2 in 3, sta enakovredni.

Naslednja koda ustvari novo instanco za vsako zanko, skupaj 100 primerkov.

En sam primer

Uporabite to možnost za zahtevo storitve bodisi v korenskem ali gnezdenem obsegu, pri čemer obe vrneta isto instanco. Za določitev uporabite SingleInstance().


Spodnja koda, w1 in w2, sta vedno isti objekt, in obstaja le ena instanca razreda Worker v 100 zankah.


En primer na življenjski cikel obsega

Uporabite to možnost za zahtevo storitve v določenem ILifetimeScope, pri čemer vrnete le eno instanco. Uporabite InstancePerLifetimeScope(). V naslednji kodi je 100 krat w1 v scope1 isti objekt, 100-krat w2 v scope2 pa isti objekt, vendar w1 in w2 nista isti objekt.


Ena instanca na vsak življenjski razpon ujemajoče se

Podobno kot [en primer na življenjski cikel] zgoraj, vendar z več nadzora. Uporabite to možnost, da omogočite, da se objektu ILifetimeScope dodeli oznaka. V dosegu ekipnega dvoboja je le en primer. Uporabite metodo InstancePerMatchingLifetimeScope().

V spodnji kodi sta w1 in w2 enaka, w3 in w4 sta enaka, vendar sta w1 in w3 razbita.

Ustrezna oznaka mora biti zagotovljena pri razčlenjevanju, naslednja koda pa vrže izjemo.

Ena instanca na zahtevo

Nekatere aplikacije imajo naravno semantiko zahtev, kot so ASP.NET MVC ali WebForm aplikacije. [Ena instanca na zahtevo] je implementirana na podlagi [ena instanca na ujemajoč se življenjski cikel], z zagotavljanjem označevalcev obsega, funkcij registracije in integracije skupnega tipa. V bistvu [ena instanca na ujemajoči se življenjski razpon].

ASP.NET Core uporablja eno instanco na obseg življenjskega cikla namesto ene instance na zahtevo.

Ena instanca na lastništvo

<T> Tip implicitne asociacije Owned ustvarja gnezdene življenjske cikle. Z registracijo primerkov na lastništvo lahko omejite odvisnosti na lastne primerke.

V tem primeru je storitev ServiceForHandler omejena na obseg instance MessageHandler.


Obseg navoja

Autofac lahko prisili objekte niti A, da ne izpolnjujejo odvisnosti niti B.

Potem naj vsak ustvari svoj življenjski okvir

Pomembno: V večnitnem primeru bodite previdni, da ne očistite nadrejenega obsega.V nasprotnem primeru podobsegi v izpeljani niti ne bodo mogli razrešiti storitve.

Vsaka nit bo imela svojo instanco MyThreadScopedComponent, ki je v bistvu enodimenzionalna enota z življenjskim ciklom. Primeri v obsegu niso na voljo zunaj, zato je enostavno izolirati komponente med nitmi.

Z dodajanjem parametra ILifetimeScope se lahko nadrejeni obseg vbrizga v kodo, ki generira nit, Autofac pa samodejno vnese trenutni razpon, ki se nato uporabi za ustvarjanje gnezdenih obsegov.

Če želite to še bolj nadzorovati, lahko uporabite [en primer na ujemajoči se življenjski razpon] za povezovanje komponent z obsegom niti z notranjimi obsegi življenjskega cikla, kot je prikazano na sliki:



"Kontekst" na diagramu je življenjski cikel razpona, ustvarjen z metodo BeginLifetimeScope.





Prejšnji:Efekti klikov miške na sprednji strani: svoboda, demokracija, blaginja
Naslednji:{&quot;error_msg&quot;: &quot;IAM certifikacija ni uspela&quot;}
Disclaimer:
Vsa programska oprema, programski materiali ali članki, ki jih izdaja Code Farmer Network, so namenjeni zgolj učnim in raziskovalnim namenom; Zgornja vsebina ne sme biti uporabljena v komercialne ali nezakonite namene, sicer uporabniki nosijo vse posledice. Informacije na tej strani prihajajo z interneta, spori glede avtorskih pravic pa nimajo nobene zveze s to stranjo. Zgornjo vsebino morate popolnoma izbrisati z računalnika v 24 urah po prenosu. Če vam je program všeč, podprite pristno programsko opremo, kupite registracijo in pridobite boljše pristne storitve. Če pride do kakršne koli kršitve, nas prosimo kontaktirajte po elektronski pošti.

Mail To:help@itsvse.com