Uues ASP.NET Core'is kasutatakse koodi kirjutamiseks suurt hulka sõltuvussüsteid.
Näiteks meie Startup-klassis näeme järgmist:
AddMvc AddDbContext sisaldab AddDirectoryBrowseri, mida kasutasime kataloogituuride jaoks varem:
Need on kõik raamistikud, mis pakuvad häid teenuseid, ja me saame neid otse kasutada, lisades neid.
Juhtimise pööramine (IoC) on objektorienteeritud programmeerimise disainipõhimõte, mida saab kasutada arvutikoodi sidumise vähendamiseks. Kõige levinum meetod on Dependency Injection (DI) ning on olemas ka meetod nimega "Dependency Lookup". Inversiooni juhtimise kaudu, kui objekt luuakse, edastab väline üksus, mis kontrollib kõiki süsteemi objekte, sellele viite objektile, millest ta sõltub. Samuti võib öelda, et sõltuvused süstitakse objekti. IOC kasutamiseks peab Startup klass viitama Microsoft.Extensions.DependencyInjection(ps, mis on juba üsna lihtne: Microsoft.. Laienda... Sõltuvussüstimine - - ,)
Sisesta teenuse elutsükkel
Microsoft pakub ise süstitud teenustele 3 elutsüklit.
Mööduv
Hetkeline elutsükli teenus, mis luuakse iga kord, kui seda taotletakse. See elutsükkel sobib kõige paremini kergete, kodakondsuseta teenustele.
Scoped
Samas ulatuses luuakse teenus ainult üks kord iga päringu kohta.
Singleton (ainult)
Globaalne luuakse ainult korra, esimesel korral, kui seda taotletakse, ja siis kasutatakse seda alati.
Kuidas kasutada neid kolme elutsüklit? Süstimisel saame kasutada erinevaid meetodeid otse, kood on järgmine:
Testime nende kolme elutsükli konkreetset generatsiooni
Kirjutame kolm liidest erinevate nimedega ja 3 erineva klassiga, et liideste ellu viia, järgmiselt:
Iga rakendusklassi konstruktoris genereerime uue GUID-i, mis võimaldab meil kindlaks teha, kas klass on konstruktori uuesti käivitanud.
Süstida teenuseid kontrollerisse
Süstimiseks on üldiselt kolm viisi: konstruktorsüstimine, meetodi süstimine ja atribuudi süstimine. Microsofti enda IOC konteiner kasutab vaikimisi konstruktori süstimist (Atribuudi süstimist ei toetata, kuid seda saab saavutada kolmanda osapoole konteineri asendamisega)
Vaata lehe koodi:
Käivita projekt ja pääse sellele ligi kahe erineva brauseri kaudu, nagu allpool näidatud:
Leidsime, et hetkelise elutsükli jooksul kaks korda genereeritud GUID-id on ebajärjekindlad, mis viitab sellele, et objekt ei ole sama.
Kuid ulatuse elutsükkel on sama, sest sama ulatuse korral on sama brauseris kaks korda kasutatava teenuse GUID sama, mis näitab, et kasutatakse sama objekti.
Singletoni puhul pääsevad kaks erinevat brauserit alati ligi samale GUID-le, mis näitab, et kutsutakse sama objekti.
(Lõpp)
|