Az új ASP.NET Core-ban számos függőségi injekciót használnak kód írására.
Például a Startup osztályunkban a következőket láthatjuk:
Az AddMvc AddDbContext tartalmazza azt az AddDirectoryBrowser-t, amit korábban könyvtárkörútokhoz használtunk:
Mind olyan keretrendszerek, amelyek jó szolgáltatásokat nyújtanak, és közvetlenül is használhatjuk őket befecskendezéssel.
Az irányítás inverziója (IoC) egy tervezési elv az objektumorientált programozásban, amely használható a számítógépes kód közötti kapcsolódás csökkentésére. A leggyakoribb módszer a függőségi injekció (DI), és létezik egy "Dependency Lookup" módszer is. Az inverzió vezérlésével, amikor egy objektumot létrehoznak, egy külső entitás, amely minden objektumot irányít a rendszerben, átadja neki a hivatkozást arra az objektumra, amelyhez támaszkodik. Mondhatjuk azt is, hogy függőségek injektálódnak az objektumba. Az IOC használatához a Startup osztálynak hivatkoznia kell a Microsoft.Extensions.DependencyInjection(ps) nevű fájlra, ami már így is elég egyértelmű: Microsoft... Bővítsd... Függőségi injekció - - ,)
A szolgáltatás életciklusának beépítése
A Microsoft 3 életciklust biztosít az öninjektált szolgáltatásokhoz.
Átmeneti
Egy azonnali életciklusú szolgáltatás, amely minden kéréskor létrejön. Ez az életciklus leginkább könnyű, állampolgárságtól független szolgáltatásokra alkalmas.
Távcső
Ugyanebben a körben a szolgáltatást csak egyszer hozza létre kérésenként.
Singleton (csak)
A globális rendszer csak egyszer jön létre, az első kéréskor, és akkor mindig használják.
Hogyan használod ezt a három életciklust? Különböző módszereket is használhatunk közvetlenül injektáláshoz, a kód a következő:
Teszteljük e három életciklus konkrét generációját
Három különböző nevű interfészt és 3 különböző osztályt írunk az interfészek megvalósításához, a következők szerint:
Minden implementációs osztály konstruktorában új GUID-et generálunk, amely lehetővé teszi, hogy meghatározzuk, újraindította-e az osztály a konstruktort.
Szolgáltatások befecskendezése a vezérlőbe
Általában három módja van az injekciónak: konstruktor injekció, módszer injekció és attribútuminjekció. A Microsoft saját IOC konténerje alapértelmezés szerint konstruktor injekciót használ (Az attribútum-injekció nem támogatott, de ez megvalósítható egy harmadik féltől származó konténercserével is)
Oldalkód megtekintése:
Indítsd el a projektet, és használd hozzá két különböző böngészőn keresztül, ahogy az alábbiakban látható:
Megállapítottuk, hogy a pillanatnyi életciklusban kétszer generált GUID-ek következetlenek, ami arra utal, hogy az objektum nem ugyanaz.
Azonban a scope életciklusa ugyanaz, mert ugyanezen a hatókörben a szolgáltatás kétszer használt GUID-je ugyanaz, ami azt jelzi, hogy ugyanazt az objektumot használják.
Singleton esetén két különböző böngésző mindig ugyanazt a GUID-et éri el, ami azt jelzi, hogy ugyanazt az objektumot hívják.
(Vége)
|