Programiranje

Kako uporabiti vbrizganje odvisnosti v ASP.Net Core

Podpora za vbrizgavanje odvisnosti je vgrajena v ASP.Net Core, Microsoftov odprtokodni, večplastni, vitki in modularni okvir za izdelavo visoko zmogljivih, razširljivih spletnih aplikacij. V ASP.Net Core lahko v svoje razrede vstavite tako okvirne kot aplikacijske storitve, namesto da bi bile tesno povezane. V tem članku bomo preučili, kako lahko delujemo z vbrizganjem odvisnosti v ASP.Net Core.

Vbrizganje odvisnosti (znano tudi kot DI) je vzorec načrtovanja, pri katerem se razredu ali predmetu vbrizgajo odvisni razredi (ki mu jih posreduje drug razred ali predmet), namesto da bi jih ustvarili neposredno. Vbrizgavanje odvisnosti olajša spenjanje in spodbuja preverljivost in vzdrževanje. Poleg tega vam vbrizgavanje odvisnosti omogoča spreminjanje izvedb, ne da bi morali spreminjati razrede ali vmesnike, ki te izvedbe izkoriščajo.

Dajanje storitve na voljo z vbrizganjem odvisnosti v ASP.Net

Zdaj bomo v programu Visual Studio z uporabo ASP.Net Core zgradili preprosto storitev in ponazorili, kako jo lahko dodamo v vsebnik za vbrizgavanje odvisnosti, jo registriramo v cevovodu in nato uporabimo v naši aplikaciji. Sledite tem korakom za ustvarjanje novega projekta ASP.Net Core v Visual Studio 2017 ali Visual Studio 2015. Če uporabljate Visual Studio 2015, preverite, ali je nameščen .Net Core.

  1. Odprite Visual Studio
  2. Kliknite Datoteka -> Novo -> Projekt
  3. V pogovornem oknu New Project izberite predlogo projekta »ASP.NET Core Web Application«
  4. Določite ime in lokacijo za svoj projekt in kliknite V redu, da shranite

Zdaj ustvarite naslednji razred POCO (navadni stari objekt CLI). Ta razred vsebuje samo eno lastnost - predstavlja vsa tematska področja, ki jih pokrivajo avtorji določenega založniškega podjetja.

javni razred TopicArea

    {

javni niz Ime {get; set; }

    }

Razmislite o naslednjem imenovanem vmesniku ITopicAreaService ki predstavlja pogodbo za TopicAreaService.

javni vmesnik ITopicAreaService

    {

IEnumerable GetAllTopicAreas ();

    }

The ITopicAreaService vmesnik vsebuje izjavo ene imenovane metode GetAllTopicAreas (). The TopicAreaService razred izvaja ITopicAreaService kot je prikazano spodaj.

javni razred TopicAreaService: ITopicAreaService

    {

javni IEnumerable GetAllTopicAreas ()

        {

vrni nov seznam

        {

novo TopicArea {Ime},

novo TopicArea {Ime},

novo TopicArea {Ime}

        };

        }

    }

Registracija storitev za vbrizgavanje odvisnosti v ASP.Net

Naslednji korak je registracija TopicAreaService z vsebnikom za vbrizgavanje odvisnosti, ki je na voljo kot del kode ASP.Net. Če želite to narediti, v kodo napišite naslednji del kode ConfigureServices v datoteki Startup.cs. The ConfigureServices metoda doda storitve v vsebnik storitev, zaradi česar so na voljo v vaši aplikaciji z vbrizganjem odvisnosti. Izvede ga samodejno izvajalno okolje.

public void ConfigureServices (storitve IServiceCollection)

        {

services.AddTransient ();

// Dodaj okvirne storitve.

services.AddMvc ();

        }

Če imate več storitev, ki jih je treba registrirati, lahko uporabite razširitveni način, kot je prikazano spodaj.

javni statični razred ServiceExtensions

    {

javne statične IServiceCollection RegisterServices (

te storitve IServiceCollection)

        {

services.AddTransient ();

// Tukaj dodajte vse druge storitve.

storitve vračanja;

        }

    }

Uporabljati RegisterServices metoda vam omogoča, da obdržite svoj ConfigureServices metoda vitka in vzdržna. Namesto da bi v storitvi ConfigureServices, vse kar morate storiti je, da pokličete RegisterServices podaljšek enkrat v vašem ConfigureServices metoda, kot je prikazano v spodnjem delčku kode.

public void ConfigureServices (storitve IServiceCollection)

        {

services.RegisterServices ();

// Dodaj okvirne storitve.

services.AddMvc ();

        }

Življenjske dobe vbrizgavanja odvisnosti v ASP.Net

Življenjska doba vbrizgavanja odvisnosti se uporablja za določanje, kdaj se ustvarijo in znova ustvarijo odvisni predmeti. Kar zadeva življenjske dobe primerkov vbrizgavanja odvisnosti v aplikacijah ASP.Net Core, obstajajo tri možnosti:

  1. Singleton: To pomeni, da bodo vsi potrošniki ustvarili in delili samo en primerek.
  2. Obseg: To pomeni, da bo ustvarjen en primerek na obseg (tj. En primerek na zahtevo za aplikacijo).
  3. Prehodno: To pomeni, da komponente ne bodo v skupni rabi, ampak bodo ustvarjene vsakič, ko bodo zahtevane.

Upoštevajte, da smo v tem primeru uporabili Prehodno tip. Naslednji delček kode prikazuje, kako lahko pri registraciji storitve uporabljate druge vrste življenjske dobe.

services.AddScoped ();

services.AddSingleton ();

Uporaba storitve prek vbrizgavanja odvisnosti v ASP.Net

Zdaj, ko smo storitev, ki smo jo uvedli, dodali v cevovod, jo lahko uporabite v katerem koli krmilniku v vašem projektu ASP.Net Core. Naslednji delček kode prikazuje, kako lahko zahtevate primerek datoteke TopicAreaService v krmilniku.

zasebno samo za branje ITopicAreaService _topicAreaService;

javni DefaultController (ITopicAreaService topicAreaService)

    {

_topicAreaService = topicAreaService;

    }

Evo, kako GetAllTopicAreas metoda TopicAreaService se pokliče iz metode delovanja vašega krmilnika.

[HttpGet]

javni IEnumerable GetAllTopicAreas ()

        {

return _topicAreaService.GetAllTopicAreas ();

        }

Spodaj je celoten seznam kod razreda krmilnika za vašo referenco.
z uporabo Microsoft.AspNetCore.Mvc;

z uporabo System.Collections.Generic;

imenski prostor ASPNETCoreDI.Controllers

{

[Izdeluje (»application / json«)]

[Pot (»api / privzeto«)]

javni razred DefaultController: krmilnik

    {

zasebno samo za branje ITopicAreaService _topicAreaService;

javni DefaultController (ITopicAreaService topicAreaService)

        {

_topicAreaService = topicAreaService;

        }

[HttpGet]

javni IEnumerable GetAllTopicAreas ()

        {

return _topicAreaService.GetAllTopicAreas ();

        }

    }

}

Vgrajeno podporo za vbrizgavanje odvisnosti v ASP.Net Core lahko izkoristite za izdelavo modularnih, vitkih in čistih aplikacij, enostavnih za vzdrževanje in preizkušanje. Vgrajeni ponudnik vbrizgavanja odvisnosti v ASP.Net Core ni tako bogat s funkcijami, kot sta vsebnika, kot sta StructureMap in Ninject, vendar je precej hiter in, kot smo videli, enostaven za konfiguracijo in uporabo.

$config[zx-auto] not found$config[zx-overlay] not found