Programiranje

Kako uporabljati Autofac v ASP.Net Core

Vbrizgavanje odvisnosti olajša spenjanje in spodbuja preverljivost in vzdrževanje. ASP.Net Core ponuja vgrajeno podporo za vbrizgavanje odvisnosti (nekakšna inverzija nadzora) z minimalističnim vsebnikom za vbrizgavanje odvisnosti. Vendar vgrajeni vsebnik nima veliko funkcij polnopravnega vbrizgavanja odvisnosti ali inverzije nadzornega vsebnika.

Da bi to odpravili, lahko uporabite vsebnike tretjih oseb v ASP.Net Core. Z drugimi besedami, vgrajeni vsebnik lahko enostavno nadomestite s kontejnerjem drugega proizvajalca. Autofac je inverzija nadzornega vsebnika, ki se lahko uporablja za reševanje odvisnosti. Ta članek vsebuje razpravo o tem, kako lahko delujemo z Autofac v ASP.Net Core.

Ustvarite projekt ASP.Net Core v Visual Studio

Najprej ustvarimo projekt ASP.Net Core v Visual Studio. Če predpostavimo, da je Visual Studio 2017 ali Visual Studio 2019 nameščen v vašem sistemu, sledite spodnjim korakom, da ustvarite nov projekt ASP.Net Core v Visual Studio.

  1. Zaženite Visual Studio IDE.
  2. Kliknite »Ustvari nov projekt«.
  3. V oknu »Ustvari nov projekt« na seznamu prikazanih predlog izberite »ASP.Net Core Web Application«.
  4. Kliknite Naprej.
  5. V oknu »Konfiguriranje novega projekta« določite ime in mesto novega projekta.
  6. Kliknite Ustvari.
  7. V oknu »Ustvari novo spletno aplikacijo ASP.Net Core« izberite .Net Core kot izvajalno okolje in ASP.Net Core 2.2 (ali novejšo) s spustnega seznama na vrhu.
  8. Kot predlogo projekta izberite »Spletna aplikacija«.
  9. Prepričajte se, da sta potrditveni polji »Omogoči podporo za Docker« in »Konfiguriranje za HTTPS« odstranjeni, saj tukaj ne bomo uporabljali teh funkcij.
  10. Prepričajte se, da je preverjanje pristnosti nastavljeno na »Brez preverjanja pristnosti«, saj tudi preverjanja pristnosti ne bomo uporabljali.
  11. Kliknite Ustvari.

To bo ustvarilo nov projekt ASP.Net Core v Visual Studio. Ta projekt bomo uporabili v naslednjih razdelkih tega članka za delo z Autofac.

Namestite Autofac v svoj projekt ASP.Net Core

Autofac je enostavno namestiti - namestite ga lahko iz NuGet. V času pisanja tega dokumenta je trenutna različica Autofaca 4.9.2. Če želite delati z Autofac, morate namestiti tudi paket Autofac.Extensions.DependencyInjection. Tako boste zagotovili, da imate nameščene potrebne odvisnosti za delo z Autofac.

Izberite projekt ASP.Net Core Web Application, ki ste ga ustvarili zgoraj, nato z desno miškino tipko kliknite in namestite Autofac.Extensions.DependencyInjection prek upravitelja paketov NuGet. Sprejmite vse licenčne pogodbe, za katere boste pozvani med namestitvijo. Ta paket lahko namestite tudi tako, da v konzolo NuGet Package Manager vnesete naslednji ukaz:

Install-Package Autofac.Extensions.DependencyInjection

Ustvarite predavanje v aplikaciji ASP.Net Core

Za ponazoritev vbrizgavanja odvisnosti bomo potrebovali nekaj predmetov, s katerimi bomo delali. Razmislite o vmesniku IAuthorRepository, ki vsebuje spodnjo izjavo metode GetMessage.

 javni vmesnik IAuthorRepository

    {

niz GetMessage ();

    }

Razred AuthorRepository izvaja vmesnik IAuthorRepository, kot je prikazano spodaj.

 javni razred AuthorRepository: IAuthorRepository

    {

javni niz GetMessage ()

        {

vrnitev "Hello World";

        }

    }

Upoštevajte, da gre za minimalistično izvedbo repozitorija - torej ne vsebuje metod CRUD, ki jih vsebuje tipično repozitorij. Prepuščam vam, da pravilno uporabite metode CRUD.

Konfigurirajte Autofac v ASP.Net Core

Če želite konfigurirati Autofac, morate določiti konfiguracijsko kodo v metodi ConfigureServices razreda zagona. Upoštevajte, da se metoda ConfigureServices uporablja za dodajanje storitev med izvajanjem v vsebnik.

Prvi korak je ustvariti graditelja vsebnikov, ki bo registriral potrebne storitve s vsebnikom Autofac. Prvi korak je izpolniti okvirne storitve z uporabo metode Populate, kot je prikazano spodaj.

var containerBuilder = novo ContainerBuilder ();

containerBuilder.Populate (storitve);

Naslednji korak je registracija storitev po meri pri Autofac. Če želite to narediti, uporabite metodo RegisterType v primerku graditelja vsebnikov, kot je prikazano spodaj.

containerBuilder.RegisterType (). As ();

Če želite zgraditi vsebnik, napišite naslednjo kodo.

var vsebnik = containerBuilder.Build ();

povratna posoda.Resolve ();

Tu je celotna izvorna koda metode ConfigureServices za vašo referenco:

javni IServiceProvider ConfigureServices (storitve IServiceCollection)

   {

services.AddMvc ();

var containerBuilder = novo ContainerBuilder ();

containerBuilder.Populate (storitve);

containerBuilder.RegisterType ().

Kot ();

var vsebnik = containerBuilder.Build ();

povratna posoda.Resolve ();

   }

Uporabite Autofac v krmilnikih v ASP.Net Core

Zdaj, ko je bil Autofac nameščen in konfiguriran v vašem projektu, ga lahko začnete uporabljati v svojih krmilnikih. Naslednji delček kode prikazuje, kako lahko razrešite odvisnosti v nadzorniku vrednosti.

  javni razred ValuesController: ControllerBase

  {

zasebni IAuthorRepository _authorRepository;

public ValuesController (IAuthorRepository authorRepository)

        {

_authorRepository = authorRepository;

} // PRIDOBI api / vrednosti

[HttpGet]

javni ActionResult Get ()

        {

return _authorRepository.GetMessage ();

        }

// Druge akcijske metode

  }

Načelo vbrizgavanja odvisnosti je uresničitev načela inverzije nadzora. To je tehnika, ki se uporablja za odstranjevanje odvisnosti iz izvedbe tako, da vam omogoča, da te odvisnosti vbrizgate navzven. Inverzija kontrolnih vsebnikov, kot je Autofac, izkorišča vbrizganje odvisnosti, da obrne tok nadzora in pomaga avtomatizirati instanciranje in upravljanje življenjskega cikla predmetov.

Vbrizgavanje odvisnosti ima tri oblike: vbrizgavanje konstruktorja, vbrizgavanje vmesnika in vbrizgavanje lastnosti. V tem primeru smo z vbrizgavanjem konstruktorja vbrizgali odvisnost - in sicer primerek tipa AuthorRepository - med izvajanjem v razredu ValuesController.

Videli smo, kako lahko Autofac nadomesti privzeti vsebnik za vbrizgavanje odvisnosti v ASP.Net Core, vendar smo samo opraskali površino njegovih zmogljivosti. Autofac bom podrobneje raziskal v prihodnjih objavah tukaj.

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