V novem ASP.NET Core se za pisanje kode uporablja veliko število injekcij odvisnosti.
Na primer, v našem tečaju Startup lahko vidimo naslednje:
AddMvc AddDbContext vključuje AddDirectoryBrowser, ki smo ga uporabljali za oglede imenikov prej:
Vsi so okviri, ki zagotavljajo dobre storitve, in jih lahko neposredno uporabimo z vbrizgavanjem.
Inverzija nadzora (IoC) je načelo načrtovanja v objektno usmerjenem programiranju, ki se lahko uporablja za zmanjšanje povezave med računalniško kodo. Najpogostejša metoda se imenuje Dependency Injection (DI), obstaja pa tudi metoda z imenom "Dependency Lookup". Z nadzorom inverzije, ko je objekt ustvarjen, zunanja entiteta, ki nadzoruje vse objekte v sistemu, mu posreduje referenco na objekt, od katerega je odvisen. Lahko tudi rečemo, da so odvisnosti vbrizgane v objekt. Za uporabo IOC mora razred Startup navajati Microsoft.Extensions.DependencyInjection (ps), kar je že precej enostavno: Microsoft... Razširi se... Injekcija odvisnosti - - ,)
Vbrizgajte življenjski cikel storitve
Microsoft zagotavlja 3 življenjske cikle za samovbrizgane storitve.
Prehodni
Storitev takojšnjega življenjskega cikla, ki se ustvari vsakič, ko je zahtevana. Ta življenjski cikel je najbolj primeren za lahke, brezdržavne storitve.
Scoped
V istem obsegu se storitev ustvari le enkrat na zahtevo.
Singleton (samo)
Globalni je ustvarjen le enkrat, prvič ob zahtevi, nato pa se vedno uporablja.
Kako uporabljate te tri življenjske cikle? Pri vbrizgavanju lahko neposredno uporabimo različne metode, koda je naslednja:
Preizkusimo specifično generacijo teh treh življenjskih ciklov
Za implementacijo vmesnikov napišemo tri vmesnike z različnimi imeni in tremi različnimi razredi, kot sledi:
V konstruktorju vsakega implementacijskega razreda ustvarimo nov GUID, ki nam omogoča ugotoviti, ali je razred ponovno izvedel konstruktor.
Vbrizgavanje storitev v krmilnik
Običajno obstajajo trije načini injiciranja: constructor injection, method injection in attribute injection. Microsoftov lastni IOC kontejner privzeto uporablja vbrizgavanje konstruktorjev (Vbrizgavanje atributov ni podprto, vendar jo je mogoče doseči z zamenjavo zabojnika s strani tretje osebe)
Poglej kodo strani:
Projekt zaženite in dostopajte do njega prek dveh različnih brskalnikov, kot je prikazano spodaj:
Ugotovili smo, da so GUID-ji, ustvarjeni dvakrat v trenutnem življenjskem ciklu, nedosledni, kar kaže, da objekt ni enak.
Vendar je življenjski cikel obsega enak, saj je v istem obsegu GUID storitve, uporabljene dvakrat v istem brskalniku, enak, kar pomeni, da se uporablja isti objekt.
V primeru singletona dva različna brskalnika vedno dostopata do istega GUID-a, kar pomeni, da se kliče isti objekt.
(Konec)
|