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

Pohľad: 36245|Odpoveď: 1

[.NET Core] ASP.NET Core dependency injection využíva IOC kontajner, ktorý je súčasťou

[Kopírovať odkaz]
Zverejnené 7. 5. 2019 13:55:10 | | | |
ASP.NET Core dependency injection využíva IOC kontajner, ktorý je súčasťou
https://www.itsvse.com/thread-7562-1-1.html
(Zdroj: Architect_Programmer)

ASP.NET Core používa Autofac na implementáciu injekcie IOC
https://www.itsvse.com/thread-7563-1-1.html
(Zdroj: Architect_Programmer)

ASP.NET Core používa Autofac na implementáciu AOP interception
https://www.itsvse.com/thread-7566-1-1.html
(Zdroj: Architect_Programmer)

V novom ASP.NET Core sa na písanie kódu používa veľké množstvo závislostných injekcií.

Napríklad v našom kurze Startup môžeme vidieť nasledovné:

AddMvc AddDbContext obsahuje AddDirectoryBrowser, ktorý sme používali na prehliadky adresárov predtým:

Všetky sú to rámce, ktoré poskytujú dobré služby a môžeme ich priamo využiť ich injekčným vkladaním.

Inverzia riadenia (IoC) je návrhový princíp v objektovo orientovanom programovaní, ktorý možno použiť na zníženie prepojenia medzi počítačovým kódom. Najbežnejšou metódou je Dependency Injection (DI) a existuje aj metóda nazývaná "Dependency Lookup". Riadením inverzie, keď je objekt vytvorený, externá entita, ktorá riadi všetky objekty v systéme, mu odovzdá odkaz na objekt, na ktorom závisí. Dá sa tiež povedať, že do objektu sú vložené závislosti.

Na použitie IOC musí trieda Startup odkazovať na Microsoft.Extensions.DependencyInjection (ps), čo je už dosť jednoduché: Microsoft.. Rozšír... Závislostná injekcia - - ,)

Injektujte životný cyklus služby

Microsoft poskytuje 3 životné cykly pre samoinjekčné služby.

Prechodný

Okamžitá služba životného cyklu, ktorá sa vytvára zakaždým, keď je požadovaná. Tento životný cyklus je najvhodnejší pre ľahké, bezštátne služby.

Scoped

V rovnakom rozsahu sa služba vytvára iba raz na požiadavku.

Singleton (len)

Globálny sa vytvorí len raz, prvýkrát, keď je požiadaný, a potom sa vždy použije.

Ako využívate tieto tri životné cykly? Pri injekcii môžeme priamo použiť rôzne metódy, kód je nasledovný:


Otestujme konkrétnu generáciu týchto troch životných cyklov

Napíšeme tri rozhrania s rôznymi názvami a 3 rôzne triedy na implementáciu rozhraní, nasledovne:

V konštruktore každej implementačnej triedy generujeme nový GUID, ktorý nám umožňuje zistiť, či trieda konštruktor znovu vykonala.

Injektovať služby do kontroléra

Vo všeobecnosti existujú tri spôsoby injekcie: konštruktorová injekcia, metóda injekcia a injekcia atribútov. Microsoftov vlastný IOC kontajner štandardne používa injekciu konštruktorov (Injektácia atribútov nie je podporovaná, ale dá sa to dosiahnuť náhradou kontajnera treťou stranou)

Zobraziť kód stránky:

Spustite projekt a pristupujte k nemu cez 2 rôzne prehliadače, ako je uvedené nižšie:



Zistili sme, že GUID generované dvakrát v okamžitom životnom cykle sú nekonzistentné, čo naznačuje, že objekt nie je rovnaký.

Životný cyklus rozsahu je však rovnaký, pretože v rovnakom rozsahu je GUID služby použitej dvakrát v tom istom prehliadači rovnaký, čo naznačuje, že sa používa ten istý objekt.

V prípade singletonu dva rôzne prehliadače vždy pristupujú k rovnakému GUID, čo znamená, že volá sa ten istý objekt.

(Koniec)






Predchádzajúci:.NET Core Entity používa Entity Framework Core na prepojenie databáz
Budúci:ASP.NET Core používa Autofac na implementáciu injekcie IOC
 Prenajímateľ| Zverejnené 9. 3. 2022 11:00:35 |
Nahradiť služby v zabudovaných DI kontajneroch ASP.NET Core

Kód:





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