Programavimas

Kaip naudoti priklausomybės injekciją ASP.Net Core

Priklausomybės įpurškimo palaikymas yra integruotas į „ASP.Net Core“, „Microsoft“ atvirojo kodo, daugiašalę platformą, liesą ir modulinę sistemą, skirtą kurti našias, keičiamo dydžio interneto programas. ASP.Net Core sistemoje tiek pagrindinės paslaugos, tiek programų paslaugos gali būti įtrauktos į jūsų klases, o ne glaudžiai susietos. Šiame straipsnyje mes apžvelgsime, kaip mes galime dirbti su priklausomybės injekcija ASP.Net Core.

Priklausomybės įpurškimas (taip pat žinomas kaip DI) yra dizaino modelis, pagal kurį klasė ar objektas suleidžia savo priklausomas klases (jas perduoda kita klasė ar objektas), o ne kuria jas tiesiogiai. Priklausomybės įpurškimas palengvina laisvą sujungimą ir skatina testavimą bei priežiūrą. Be to, priklausomybės įpurškimas leidžia pakeisti diegimus nekeičiant klasių ar sąsajų, kurios skatina tuos diegimus.

Paslaugos teikimas per priklausomybės injekciją ASP.Net

Dabar sukursime paprastą paslaugą „Visual Studio“ naudodami „ASP.Net Core“ ir parodysime, kaip galime ją pridėti prie priklausomybės įpurškimo talpyklos, užregistruoti ją dujotiekyje ir suvartoti savo programoje. Atlikite šiuos veiksmus, kad sukurtumėte naują „ASP.Net Core“ projektą „Visual Studio 2017“ arba „Visual Studio 2015“. Jei naudojate „Visual Studio 2015“, įsitikinkite, kad įdiegėte .Net Core.

  1. Atidarykite „Visual Studio“
  2. Spustelėkite Failas -> Naujas -> Projektas
  3. Naujo projekto dialogo lange pasirinkite projekto šabloną „ASP.NET Core Web Application“
  4. Nurodykite savo projekto pavadinimą ir vietą ir spustelėkite Gerai, kad išsaugotumėte

Dabar sukurkite šią POCO (paprasto seno CLI objekto) klasę. Šioje klasėje yra tik viena nuosavybė - ji atspindi visas konkrečios leidybos įmonės autorių nagrinėjamas temų sritis.

visuomenės klasė „TopicArea“

    {

viešoji eilutė Pavadinimas {get; rinkinys; }

    }

Apsvarstykite šią sąsają, pavadintą „ITopicAreaService“ tai reiškia „TopicAreaService“.

viešoji sąsaja „ITopicAreaService“

    {

Nesuskaičiuojamas „GetAllTopicAreas“ ();

    }

„ITopicAreaService“ sąsajoje yra vieno vadinamo metodo deklaracija „GetAllTopicAreas“ (). „TopicAreaService“ klasė įgyvendina „ITopicAreaService“ kaip parodyta žemiau.

viešoji klasė „TopicAreaService“: „ITopicAreaService“

    {

public IEnumerable GetAllTopicAreas ()

        {

grąžinti naują sąrašą

        {

nauja „TopicArea“ {Name},

nauja „TopicArea“ {Name},

nauja „TopicArea“ {Name}

        };

        }

    }

Registruojamos priklausomybės injekcijos paslaugos ASP.Net

Kitas žingsnis - užregistruoti „TopicAreaService“ su priklausomybės įpurškimo konteineriu, kurį galite įsigyti kaip ASP.Net kodo dalį. Norėdami tai padaryti, įrašykite šį kodo fragmentą į „ConfigureServices“ metodas faile „Startup.cs“. „ConfigureServices“ metodas prideda paslaugas prie paslaugų sudėtinio rodinio, todėl jos yra pasiekiamos jūsų programoje per priklausomybės injekciją. Tai vykdymo metu vadinama automatiškai.

public void „ConfigureServices“ („IServiceCollection“ paslaugos)

        {

paslaugos.AddTransient ();

// Pridėti pagrindines paslaugas.

paslaugos.AddMvc ();

        }

Jei turite kelias paslaugas, kurias reikia užregistruoti, galite naudoti plėtinio metodą, kaip parodyta žemiau.

viešoji statinė klasė „ServiceExtensions“

    {

viešasis statinis „IServiceCollection RegisterServices“ (

šios IServiceCollection paslaugos)

        {

paslaugos.AddTransient ();

// Čia pridėkite visas kitas paslaugas.

grąžinimo paslaugos;

        }

    }

Naudojant „RegisterServices“ metodas leidžia jums išlaikyti savo „ConfigureServices“ metodas liesas ir prižiūrimas. Užuot nurodęs kiekvieną paslaugą „ConfigureServices“, viskas, ką jums reikia padaryti, tai paskambinti „RegisterServices“ pratęsimo metodas vieną kartą jūsų „ConfigureServices“ metodas, kaip parodyta toliau pateiktame kodo fragmente.

public void „ConfigureServices“ („IServiceCollection“ paslaugos)

        {

paslaugos.RegistruotisPaslaugos ();

// Pridėti pagrindines paslaugas.

paslaugos.AddMvc ();

        }

Priklausomybės injekcijos trukmė ASP.Net

Priklausomybės įpurškimo trukmė naudojama nurodyti, kada kuriami ir iš naujo kuriami priklausomi objektai. Kalbant apie priklausomybės injekcijos egzempliorių ASP.Net Core programose, yra trys galimybės:

  1. „Singleton“: tai reiškia, kad visi vartotojai sukurs ir pasidalins tik vienu egzemplioriumi.
  2. Taikymo sritis: tai reiškia, kad bus sukurtas vienas egzempliorius kiekvienai sričiai (t. Y. Vienas egzempliorius kiekvienai užklausai programai).
  3. Laikinas: tai reiškia, kad komponentai nebus bendrinami, bet bus sukurti kiekvieną kartą, kai jų bus prašoma.

Atkreipkite dėmesį, kad šiame pavyzdyje mes naudojome Trumpalaikis tipo. Šis kodo fragmentas parodo, kaip registruodami paslaugą galite naudoti kitų tipų gyvenimo trukmę.

paslaugos.AddScoped ();

paslaugos.AddSingleton ();

Paslaugos naudojimas per priklausomybės injekciją ASP.Net

Dabar, kai mūsų įdiegta paslauga buvo pridėta prie vamzdyno, galite ją naudoti bet kuriame valdiklyje savo ASP.Net Core projekte. Šis kodo fragmentas parodo, kaip galite pateikti užklausą „TopicAreaService“ savo valdiklyje.

privatus, tik skaitomas ITopicAreaService _topicAreaService;

public DefaultController (ITopicAreaService topicAreaService)

    {

_topicAreaService = topicAreaService;

    }

Štai kaip „GetAllTopicAreas“ metodas „TopicAreaService“ yra iškviečiamas iš jūsų valdiklio veikimo metodo.

[HttpGet]

public IEnumerable GetAllTopicAreas ()

        {

grįžti _topicAreaService.GetAllTopicAreas ();

        }

Toliau pateikiamas visas valdiklių klasės kodų sąrašas, skirtas jūsų nuorodai.
naudojant „Microsoft.AspNetCore.Mvc“;

naudojant „System.Collections.Generic“;

vardų sritis ASPNETCoreDI.Valdikliai

{

[Prodiusuoja („application / json“)]

[Maršrutas („api / Default“)]

public class DefaultController: valdiklis

    {

privatus, tik skaitomas ITopicAreaService _topicAreaService;

public DefaultController (ITopicAreaService topicAreaService)

        {

_topicAreaService = topicAreaService;

        }

[HttpGet]

public IEnumerable GetAllTopicAreas ()

        {

grįžti _topicAreaService.GetAllTopicAreas ();

        }

    }

}

Galite panaudoti integruotą palaikymo įpurškimo palaikymą ASP.Net Core, kad sukurtumėte modulines, liesas ir švarias, lengvai prižiūrimas ir išbandomas programas. „ASP.Net Core“ įmontuotas priklausomybės injekcijos teikėjas nėra toks turtingas kaip konteineriai, tokie kaip „StructureMap“ ir „Ninject“, tačiau yra gana greitas ir, kaip matėme, lengvai sukonfigūruojamas ir naudojamas.

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