Tento článek je zrcadlovým článkem o strojovém překladu, klikněte zde pro přechod na původní článek.

Pohled: 20252|Odpověď: 1

[Zdroj] Rozsah instance komponenty autofac

[Kopírovat odkaz]
Zveřejněno 14.09.2018 13:22:21 | | | |
Rozsah instance určuje, jak jsou služby sdíleny mezi požadavky.

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

Jedna instance na závislost

S touto možností je při každém požadavku na službu vrácena nová instance. Použijte InstancePerDependency(). To je výchozí volba. Kód níže, řádky 2 a 3, jsou ekvivalentní.

Následující kód generuje novou instanci pro každou smyčku, celkem tedy 100 instancí.

Jediný případ

Použijte tuto možnost pro požadavek na službu buď v kořenovém, nebo vnořeném rozsahu, přičemž obě vrátí stejnou instanci. Použijte SingleInstance() pro specifikaci.


Kód níže, w1 a w2, jsou vždy stejný objekt a existuje pouze jedna instance třídy Worker ve 100 smyčkách.


Jedna instance za celý životní cyklus

Použijte tuto možnost pro požadavek na službu v konkrétním ILifetimeScope, přičemž vraťte pouze jednu instanci. Použijte InstancePerLifetimeScope(). V následujícím kódu je 100 krát w1 v scope1 stejný objekt a 100krát w2 v scope2 je stejný objekt, ale w1 a w2 nejsou stejný objekt.


Jedna instance na odpovídající životní cyklus

Podobně jako [jedna instance za životní cyklus] výše, ale s větší kontrolou. Použijte tuto možnost, aby objekt ILifetimeScope dostal Tag. V dosahu tag team zápasu je pouze jeden případ. Použijte metodu InstancePerMatchingLifetimeScope().

V níže uvedeném kódu jsou w1 a w2 stejné, w3 a w4 stejné, ale w1 a w3 jsou odlišné.

Při parsování musí být uvedeno správné značení a následující kód vyhodí výjimku.

Jedna instance na požadavek

Některé aplikace přirozeně mají sémantiku požadavků, například ASP.NET MVC nebo WebForm. [Jedna instance na požadavek] je implementována na základě [jedna instance na odpovídající životní cyklus] poskytováním markerů rozsahu, registračních funkcí a integrace společného typu. V podstatě [jedna instance na odpovídající životní cyklus].

ASP.NET Core používá jednu instanci na rozsah životního cyklu místo jedné instance na požadavek.

Jedna instance na Owned

<T> Implicitní asociace Owned vytváří vnořené rozsahy životního cyklu. S registrací instancí na vlastněné instance můžete omezit závislosti na vlastněné instance.

V tomto případě je služba ServiceForHandler omezena na rozsah instance MessageHandler.


Rozsah závitů

Autofac může donutit objekty vlákna A, aby nesplňovaly závislosti vlákna B.

Pak ať si každý z nich vytvoří vlastní celoživotní rozsah

Důležité: V multithreaded scénáři buďte opatrní, abyste nečistili mateřský scope.Jinak podrozsahy v odvozeném vlákně nebudou schopny službu vyřešit.

Každé vlákno bude mít vlastní instanci MyThreadScopedComponent, což je v podstatě singleton zaměřený na životní cyklus. Instance v rozsahu nejsou poskytovány externě, takže je snadné udržet komponenty izolované mezi vlákny.

Přidáním parametru ILifetimeScope lze do kódu, který vlákno generuje, vstříknout mateřský rozsah a Autofac automaticky vloží aktuální rozsah, který pak lze použít k vytvoření vnořených rozsahů.

Pokud to chcete dále kontrolovat, můžete použít [jedna instance za odpovídající rozsah životního cyklu] k přiřazení komponent s vláknovým rozsahem k interním rozsahům životního cyklu, jak je znázorněno na obrázku:



"Kontext" v diagramu je rozsah životního cyklu vytvořený metodou BeginLifetimeScope.





Předchozí:Efekty kliknutí myší na přední části: svoboda, demokracie, prosperita
Další:{&quot;error_msg&quot;: &quot;IAM certifikace neuspěla&quot;}
Zřeknutí se:
Veškerý software, programovací materiály nebo články publikované organizací Code Farmer Network slouží pouze k učení a výzkumu; Výše uvedený obsah nesmí být používán pro komerční ani nelegální účely, jinak nesou všechny důsledky uživatelé. Informace na tomto webu pocházejí z internetu a spory o autorská práva s tímto webem nesouvisí. Musíte výše uvedený obsah ze svého počítače zcela smazat do 24 hodin od stažení. Pokud se vám program líbí, podporujte prosím originální software, kupte si registraci a získejte lepší skutečné služby. Pokud dojde k jakémukoli porušení, kontaktujte nás prosím e-mailem.

Mail To:help@itsvse.com