Tento článok je zrkadlovým článkom o strojovom preklade, kliknite sem pre prechod na pôvodný článok.

Pohľad: 20252|Odpoveď: 1

[Zdroj] Rozsah inštancie komponentu autofac

[Kopírovať odkaz]
Zverejnené 14. 9. 2018 13:22:21 | | | |
Rozsah inštancie určuje, ako sa služby zdieľajú medzi požiadavkami.

Pôvodná adresa:http://docs.autofac.org/en/latest/lifetime/instance-scope.html

Jedna inštancia na každú závislosť

Pri tejto možnosti sa pri každej požiadavke na službu vráti nová inštancia. Použite InstancePerDependency(). Toto je predvolená možnosť. Kód nižšie, riadky 2 a 3, sú ekvivalentné.

Nasledujúci kód generuje novú inštanciu pre každú slučku s celkovým počtom 100 inštancií.

Jediná inštancia

Použite túto možnosť na požiadanie o službu buď v koreňovom alebo vnorenom rozsahu, pričom obe vracajú tú istú inštanciu. Použite SingleInstance() na špecifikáciu.


Kód nižšie, w1 a w2, sú vždy ten istý objekt a existuje len jedna inštancia triedy Worker v 100 slučkách.


Jedna inštancia za každý životný cyklus rozsahu

Použite túto možnosť na požiadanie o službu v konkrétnom ILifetimeScope, pričom vracajte iba jednu inštanciu. Použite InstancePerLifetimeScope(). V nasledujúcom kóde je 100 krát w1 v scope1 ten istý objekt a 100 krát w2 v scope2 je ten istý objekt, ale w1 a w2 nie sú ten istý objekt.


Jedna inštancia za každý rozsah životného cyklu zhody

Podobne ako [jedna inštancia na životný cyklus] vyššie uvedené, ale s väčšou kontrolou. Použite túto možnosť, aby objekt ILifetimeScope dostal Tag. V dosahu tag team zápasu je len jeden prípad. Použite metódu InstancePerMatchingLifetimeScope().

V nižšie uvedenom kóde sú w1 a w2 rovnaké, w3 a w4 rovnaké, ale w1 a w3 sú odlišné.

Pri parsovaní musí byť poskytnuté príslušné značkovanie a nasledujúci kód vyhodí výnimku.

Jedna inštancia na požiadavku

Niektoré aplikácie prirodzene majú sémantiku požiadaviek, napríklad ASP.NET MVC alebo WebForm aplikácie. [Jedna inštancia na požiadavku] je implementovaná na základe [jedna inštancia na zodpovedajúci rozsah životného cyklu], poskytovaním markerov rozsahu, registračných funkcií a integrácie spoločného typu. V podstate [jedna inštancia na zodpovedajúci životný cyklus].

ASP.NET Core používa jednu inštanciu na rozsah životného cyklu namiesto jednej inštancie na požiadavku.

Jedna inštancia na Owned

<T> Vlastnený implicitný typ asociácie vytvára vnorené rozsahy životného cyklu. Pri registrácii inštancie na vlastnenie môžete obmedziť závislosti na vlastnené inštancie.

V tomto prípade je služba ServiceForHandler obmedzená na rozsah inštancie MessageHandler.


Rozsah závitov

Autofac môže prinútiť objekty vlákna A, aby nespĺňali závislosti vlákna B.

Potom nech si každý vytvorí svoj vlastný celoživotný rozsah

Dôležité: V multithreaded scenári dávajte pozor, aby ste nevyčistili rodičovský rozsah.Inak podrozsahy v odvodenom vlákne nebudú schopné službu vyriešiť.

Každé vlákno bude mať vlastnú inštanciu MyThreadScopedComponent, čo je v podstate singleton s cyklickým rozsahom. Inštancie v rozsahu nie sú poskytované externe, takže je jednoduché udržať komponenty izolované medzi vláknami.

Pridaním parametra ILifetimeScope môže byť rodičovský rozsah vložený do kódu, ktorý vlákno generuje, a Autofac automaticky vloží aktuálny rozsah, ktorý potom môže byť použitý na vytvorenie vnorených rozsahov.

Ak to chcete ďalej kontrolovať, môžete použiť [jedna inštancia za zodpovedajúci rozsah životného cyklu] na priradenie komponentov s vláknovým rozsahom k interným rozsahom životného cyklu, ako je znázornené na obrázku:



"Kontext" v diagrame je rozsah životného cyklu vytvorený metódou BeginLifetimeScope.





Predchádzajúci:Efekty kliknutia myšou na prednej strane: sloboda, demokracia, prosperita
Budúci:{&quot;error_msg&quot;: &quot;IAM certifikácia zlyhala&quot;}
Vyhlásenie:
Všetok softvér, programovacie materiály alebo články publikované spoločnosťou Code Farmer Network slúžia len na vzdelávacie a výskumné účely; Vyššie uvedený obsah nesmie byť použitý na komerčné alebo nezákonné účely, inak nesú všetky následky používateľmi. Informácie na tejto stránke pochádzajú z internetu a spory o autorské práva s touto stránkou nesúvisia. Musíte úplne vymazať vyššie uvedený obsah zo svojho počítača do 24 hodín od stiahnutia. Ak sa vám program páči, podporte originálny softvér, zakúpte si registráciu a získajte lepšie originálne služby. Ak dôjde k akémukoľvek porušeniu, kontaktujte nás prosím e-mailom.

Mail To:help@itsvse.com