Naujajame "ASP.NET Core" kodui rašyti naudojama daugybė priklausomybės injekcijų.
Pavyzdžiui, mūsų paleisties klasėje galime pamatyti:
"AddMvc AddDbContext" apima "AddDirectoryBrowser", kurį anksčiau naudojome katalogų ekskursijoms:
Visos jos yra sistemos, teikiančios geras paslaugas, ir mes galime jas naudoti tiesiogiai, jas įleisdami.
Valdymo inversija (IoC) yra objektinio programavimo projektavimo principas, kuris gali būti naudojamas kompiuterio kodo susiejimui sumažinti. Labiausiai paplitęs metodas vadinamas priklausomybės injekcija (DI), taip pat yra metodas, vadinamas "Priklausomybės paieška". Kontroliuojant inversiją, kai sukuriamas objektas, išorinis subjektas, valdantis visus sistemos objektus, perduoda jam nuorodą į objektą, nuo kurio jis priklauso. Taip pat galima sakyti, kad priklausomybės įšvirkščiamos į objektą. Norint naudoti ioc, paleisties klasė turi nurodyti Microsoft.Extensions.DependencyInjection(ps, o tai jau gana paprasta: Microsoft.. Išplėsti... Priklausomybės injekcija - - ,)
Paslaugos gyvavimo ciklo įvedimas
"Microsoft" teikia 3 savarankiškų paslaugų gyvavimo ciklus.
Trumpalaikis
Momentinė gyvavimo ciklo paslauga, kuri sukuriama kiekvieną kartą, kai jos prašoma. Šis gyvavimo ciklas geriausiai tinka lengvoms paslaugoms be būsenos.
Taikymo sritis
Toje pačioje aprėptyje paslauga sukuriama tik vieną kartą per užklausą.
Singletonas (tik)
Visuotinis sukuriamas tik vieną kartą, pirmą kartą jo prašoma, o tada jis visada naudojamas.
Kaip naudojate šiuos tris gyvenimo ciklus? Tiesiogiai švirkščiant galime naudoti skirtingus metodus, kodas yra toks:
Išbandykime konkrečią šių trijų gyvenimo ciklų kartą
Mes rašome tris sąsajas su skirtingais pavadinimais ir 3 skirtingomis klasėmis, kad įgyvendintume sąsajas, taip:
Kiekvienos diegimo klasės konstruktoriuje sugeneruojame naują GUID, kuris leidžia nustatyti, ar klasė iš naujo įvykdė konstruktorių.
Įveskite paslaugas į valdiklį
Paprastai yra trys injekcijos būdai: konstruktoriaus injekcija, metodo injekcija ir atributų injekcija. "Microsoft" IOC konteineris pagal numatytuosius nustatymus naudoja konstruktoriaus injekciją (Atributų injekcija nepalaikoma, tačiau tai galima pasiekti pakeitus trečiosios šalies konteinerį)
Peržiūrėti puslapio kodą:
Paleiskite projektą ir pasiekite jį per 2 skirtingas naršykles, kaip parodyta toliau:
Mes nustatėme, kad du kartus per momentinį gyvavimo ciklą sugeneruoti GUID yra nenuoseklūs, o tai rodo, kad objektas nėra tas pats.
Tačiau aprėpties ciklas yra tas pats, nes toje pačioje aprėptyje tarnybos, naudojamos du kartus toje pačioje naršyklėje, GUID yra tas pats, nurodantis, kad naudojamas tas pats objektas.
Singletono atveju dvi skirtingos naršyklės visada pasiekia tą patį GUID, nurodydami, kad iškviečiamas tas pats objektas.
(Pabaiga)
|