Programavimas

Kaip naudoti „Autofac“ ASP.Net Core

Priklausomybės įpurškimas palengvina laisvą sujungimą ir skatina testavimą bei priežiūrą. ASP.Net Core teikia integruotą palaikymo įpurškimui (tam tikra valdymo inversija) su minimalistiniu priklausomybės įpurškimo konteineriu. Tačiau įmontuotame konteineryje nėra daugybės visaverčio priklausomybės įpurškimo ar valdymo konteinerio inversijos savybių.

Norėdami tai įveikti, galite naudoti trečiųjų šalių sudėtinius rodinius ASP.Net Core. Kitaip tariant, įmontuotą konteinerį galite lengvai pakeisti trečiosios šalies konteineriu. „Autofac“ yra valdymo talpyklos inversija, kurią galima naudoti norint išspręsti priklausomybes. Šiame straipsnyje aptariama, kaip mes galime dirbti su „Autofac“ ASP.Net Core.

„Visual Studio“ sukurkite pagrindinį ASP.Net projektą

Pirmiausia sukurkime „ASP.Net Core“ projektą „Visual Studio“. Darant prielaidą, kad „Visual Studio 2017“ arba „Visual Studio 2019“ yra įdiegta jūsų sistemoje, atlikite toliau nurodytus veiksmus, kad sukurtumėte naują „ASP.Net Core“ projektą „Visual Studio“.

  1. Paleiskite „Visual Studio IDE“.
  2. Spustelėkite „Sukurti naują projektą“.
  3. Lange „Kurti naują projektą“ iš rodomų šablonų sąrašo pasirinkite „ASP.Net Core Web Application“.
  4. Spustelėkite Pirmyn.
  5. Lange „Konfigūruoti naują projektą“ nurodykite naujo projekto pavadinimą ir vietą.
  6. Spustelėkite Sukurti.
  7. Lange „Kurti naują ASP.Net pagrindinę žiniatinklio programą“ viršuje esančiame išskleidžiamajame sąraše pasirinkite .Net Core kaip vykdymo laiką ir ASP.Net Core 2.2 (ar naujesnę).
  8. Kaip projekto šabloną pasirinkite „Web Application“.
  9. Įsitikinkite, kad nepažymėti žymės langeliai „Įgalinti„ Docker “palaikymą“ ir „Konfigūruoti HTTPS“, nes čia nenaudosime tų funkcijų.
  10. Įsitikinkite, kad autentifikavimas nustatytas kaip „Be autentifikavimo“, nes mes taip pat nenaudosime autentifikavimo.
  11. Spustelėkite Sukurti.

Tai sukurs naują „ASP.Net Core“ projektą „Visual Studio“. Šį projektą naudosime tolesniuose šio straipsnio skyriuose, kad galėtume dirbti su „Autofac“.

Įdiekite „Autofac“ į savo ASP.Net Core projektą

„Autofac“ įdiegti lengva - galite įdiegti iš „NuGet“. Šio rašymo metu dabartinė „Autofac“ versija yra 4.9.2. Norėdami dirbti su „Autofac“, taip pat turėtumėte įdiegti paketą „Autofac.Extensions.DependencyInjection“. Tai užtikrins, kad turite įdiegę reikalingas priklausomybes darbui su „Autofac“.

Pasirinkite anksčiau sukurtą ASP.Net pagrindinės žiniatinklio programos projektą, tada dešiniuoju pelės mygtuku spustelėkite ir įdiekite „Autofac.Extensions.DependencyInjection“ per „NuGet Package Manager“. Sutikite su licencijavimo sutartimis, kurių galite paprašyti diegdami. Arba galite įdiegti šį paketą įvesdami šią komandą „NuGet Package Manager Console“:

„Install-Package Autofac.Extensions.DependencyInjection“

Sukurkite klasę savo ASP.Net Core programoje

Norėdami iliustruoti priklausomybės injekciją, mums reikės kai kurių objektų, su kuriais galėtume dirbti. Apsvarstykite „IAuthorRepository“ sąsają, kurioje yra žemiau pateiktas „GetMessage“ metodo deklaravimas.

 viešoji sąsaja „IAuthorRepository“

    {

eilutė „GetMessage“ ();

    }

„AuthorRepository“ klasė įdiegia „IAuthorRepository“ sąsają, kaip parodyta žemiau.

 public class Autorių saugykla: „IAuthorRepository“

    {

viešoji eilutė „GetMessage“ ()

        {

grįžti „Hello World“;

        }

    }

Atkreipkite dėmesį, kad tai yra minimalistinis saugyklos įgyvendinimas, t. Y. Jame nėra CRUD metodų, kurie yra įprastoje saugykloje. Paliksiu jums tinkamai įgyvendinti CRUD metodus.

Konfigūruokite „Autofac“ sistemoje „ASP.Net Core“

Norėdami sukonfigūruoti „Autofac“, turėtumėte nurodyti konfigūracijos kodą „Startup“ klasės „ConfigureServices“ metode. Atminkite, kad „ConfigureServices“ metodas naudojamas paslaugų įtraukimui vykdymo metu pridėti prie sudėtinio rodinio.

Pirmasis žingsnis - sukurti konteinerių kūrimo priemonę, kad būtinos paslaugos būtų užregistruotos „Autofac“ konteineryje. Pirmasis žingsnis yra užpildyti pagrindines paslaugas naudojant „Populate“ metodą, kaip parodyta žemiau.

var containerBuilder = new ContainerBuilder ();

containerBuilder.Populate (paslaugos);

Kitas žingsnis - registruoti pasirinktines paslaugas „Autofac“. Norėdami tai padaryti, naudokite „RegisterType“ metodą konteinerių kūrimo priemonėje, kaip parodyta žemiau.

containerBuilder.RegisterType (). As ();

Norėdami sukurti talpyklą, parašykite šį kodą.

var container = containerBuilder.Build ();

grąžinimo konteineris.Rolve ();

Čia pateikiamas visas „ConfigureServices“ metodo šaltinio kodas, skirtas jūsų nuorodai:

viešosios „IServiceProvider ConfigureServices“ („IServiceCollection“ paslaugos)

   {

paslaugos.AddMvc ();

var containerBuilder = new ContainerBuilder ();

containerBuilder.Populiacija (paslaugos);

containerBuilder.RegisterType ().

As ();

var container = containerBuilder.Build ();

grąžinimo konteineris.Resolve ();

   }

Naudokite „Autofac“ savo valdikliuose ASP.Net Core

Dabar, kai „Autofac“ yra įdiegtas ir sukonfigūruotas jūsų projekte, galite pradėti jį naudoti valdikliuose. Šis kodo fragmentas parodo, kaip galite išspręsti priklausomybes „ValuesController“.

  viešosios klasės „ValuesController“: „ControllerBase“

  {

privati ​​„IAuthorRepository“ _authorRepository;

public ValuesController („IAuthorRepository authorRepository“)

        {

_authorRepository = authorRepository;

} // GAUTI api / reikšmes

[HttpGet]

viešas „ActionResult Get“ ()

        {

grąžinti _authorRepository.GetMessage ();

        }

// Kiti veiksmo metodai

  }

Priklausomybės įpurškimo principas yra valdymo principo inversijos realizavimas. Tai yra technika, kuri naudojama pašalinant priklausomybes nuo įgyvendinimo, leidžiant jums injekuoti šias priklausomybes į išorę. Valdymo talpyklų, tokių kaip „Autofac“, apvertimas pasinaudoja priklausomybės įpurškimo pranašumais, kad pakeistų valdymo srautą ir padėtų automatizuoti objektų greitinimą ir gyvavimo ciklą.

Priklausomybės injekcija yra trijų formų: konstruktoriaus injekcija, sąsajos injekcija ir nuosavybės injekcija. Šiame pavyzdyje mes naudojome konstruktoriaus įpurškimą, norėdami įvesti priklausomybę - būtent „AuthorRepository“ tipo egzempliorių - vykdymo metu „ValuesController“ klasėje.

Mes matėme, kaip „Autofac“ gali būti naudojamas pakeisti numatytąjį priklausomybės įpurškimo konteinerį „ASP.Net Core“, tačiau mes tik subraižėme jo galimybių paviršių. Aš išsamiau išnagrinėsiu „Autofac“ būsimuose įrašuose čia.

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