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: 36245|Odpověď: 1

[.NET Core] ASP.NET Core dependency injection využívá IOC kontejner, který je součástí této složky

[Kopírovat odkaz]
Zveřejněno 07.05.2019 13:55:10 | | | |
ASP.NET Core dependency injection využívá IOC kontejner, který je součástí této složky
https://www.itsvse.com/thread-7562-1-1.html
(Zdroj: Architect_Programmer)

ASP.NET Core používá Autofac k implementaci injekce IOC
https://www.itsvse.com/thread-7563-1-1.html
(Zdroj: Architect_Programmer)

ASP.NET Core používá Autofac k implementaci AOP interception
https://www.itsvse.com/thread-7566-1-1.html
(Zdroj: Architect_Programmer)

V novém ASP.NET Core se k psaní kódu používá velké množství závislostních injekcí.

Například v našem kurzu Startup můžeme vidět následující:

AddMvc AddDbContext zahrnuje AddDirectoryBrowser, který jsme používali pro prohlídky adresářů předtím:

Všechny jsou to rámce, které poskytují kvalitní služby, a můžeme je přímo využívat jejich injekcí.

Inverze řízení (IoC) je návrhový princip v objektově orientovaném programování, který lze použít ke snížení vazby mezi počítačovým kódem. Nejčastější metodou je Dependency Injection (DI) a existuje také metoda nazvaná "Dependency Lookup". Řízením inverze při vytvoření objektu předává externí entita, která řídí všechny objekty v systému, odkaz na objekt, na kterém závisí. Lze také říci, že do objektu jsou vkládány závislosti.

Pro použití IOC musí třída Startup odkazovat na Microsoft.Extensions.DependencyInjection(ps), což je už poměrně jednoduché: Microsoft... Expandovat... Závislostní injekce - - ,)

Injektujte životní cyklus služby

Microsoft poskytuje 3 životní cykly pro služby samoinjektované do sítě.

Přechodný

Okamžitá služba životního cyklu, která se vytváří pokaždé, když je požádána. Tento životní cyklus je nejvhodnější pro lehké, bezstátní služby.

Scoped

Ve stejném rozsahu je služba vytvořena pouze jednou na požadavek.

Singleton (pouze)

Globální se vytvoří pouze jednou, poprvé při žádosti, a pak se vždy použije.

Jak využíváte tyto tři životní cykly? Při injekci můžeme použít různé metody přímo, kód je následující:


Pojďme otestovat konkrétní generaci těchto tří životních cyklů

Píšeme tři rozhraní s různými názvy a 3 různými třídami pro implementaci rozhraní, a to následovně:

V konstruktoru každé implementační třídy generujeme nový GUID, který nám umožňuje určit, zda třída konstruktor znovu vykonala.

Injektování služeb do řadiče

Obecně existují tři způsoby injekce: injekce konstruktoru, metoda injekce a injekce atributů. Microsoftův vlastní IOC kontejner používá ve výchozím nastavení injekci konstruktorů (Injekce atributů není podporována, ale lze toho dosáhnout náhradou kontejneru třetí stranou)

Zobrazit kód stránky:

Spusť projekt a přistupuj k němu přes dva různé prohlížeče, jak je vidět níže:



Zjistili jsme, že GUIDy generované dvakrát během okamžitého životního cyklu jsou nekonzistentní, což naznačuje, že objekt není stejný.

Životní cyklus rozsahu je však stejný, protože ve stejném rozsahu je GUID služby použité dvakrát ve stejném prohlížeči stejný, což znamená, že je použit stejný objekt.

V případě singletonu přistupují dva různé prohlížeče vždy ke stejnému GUID, což znamená, že je volán stejný objekt.

(Konec)






Předchozí:.NET Core Entity používá Entity Framework Core pro propojení databází
Další:ASP.NET Core používá Autofac k implementaci injekce IOC
 Pronajímatel| Zveřejněno 09.03.2022 11:00:35 |
Nahrazení služeb ve vestavěných DI kontejnerech ASP.NET Core

Kód:





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