Ohjelmointi

Kuinka käyttää Autofacia ASP.Net Core -sovelluksessa

Riippuvuusinjektio helpottaa irrallista kytkentää ja edistää testattavuutta ja ylläpitoa. ASP.Net Core tarjoaa sisäänrakennetun tuen riippuvuusinjektiolle (eräänlainen ohjausinversio) minimalistisella riippuvuusinjektiosäiliöllä. Sisäänrakennetusta säiliöstä puuttuu kuitenkin monia ominaisuuksia, jotka johtuvat täysimittaisesta riippuvuusinjektiosta tai ohjaussäiliön kääntämisestä.

Voit voittaa tämän käyttämällä kolmannen osapuolen säilöjä ASP.Net Core -sovelluksessa. Toisin sanoen, voit helposti korvata sisäänrakennetun säilön kolmannen osapuolen säilöllä. Autofac on ohjaussäiliön inversio, jota voidaan käyttää riippuvuuksien ratkaisemiseen. Tässä artikkelissa käsitellään Autofacin käyttöä ASP.Net Core -sovelluksessa.

Luo ASP.Net-ydinprojekti Visual Studiossa

Luo ensin ASP.Net Core -projekti Visual Studiossa. Olettaen, että Visual Studio 2017 tai Visual Studio 2019 on asennettu järjestelmään, luo uusi ASP.Net Core -projekti Visual Studiossa noudattamalla seuraavia ohjeita.

  1. Käynnistä Visual Studio IDE.
  2. Napsauta Luo uusi projekti.
  3. Valitse Luo uusi projekti -ikkunassa ”ASP.Net Core Web Application” näkyvien mallien luettelosta.
  4. Napsauta Seuraava.
  5. Määritä uuden projektin määritys -ikkunassa uuden projektin nimi ja sijainti.
  6. Napsauta Luo.
  7. Valitse Luo uusi ASP.Net Core Web -sovellus -ikkunassa .Net Core ajonaikaiseksi ja ASP.Net Core 2.2 (tai uudempi) ylhäältä avattavasta luettelosta.
  8. Valitse projektisivuksi ”Web-sovellus”.
  9. Varmista, että valintaruudut Ota Docker-tuki käyttöön ja Määritä HTTPS: lle ei ole valittu, koska emme käytä näitä ominaisuuksia täällä.
  10. Varmista, että todennukseksi on määritetty Ei todentamista, koska emme myöskään käytä todennusta.
  11. Napsauta Luo.

Tämä luo uuden ASP.Net-ydinprojektin Visual Studioon. Käytämme tätä projektia tämän artikkelin seuraavissa osissa toimiakseen Autofacin kanssa.

Asenna Autofac ASP.Net Core -projektiisi

Autofac on helppo asentaa - voit asentaa sen NuGetistä. Tämän kirjoituksen ajankohtana Autofacin nykyinen versio on 4.9.2. Jotta voit työskennellä Autofacin kanssa, sinun on asennettava myös Autofac.Extensions.DependencyInjection-paketti. Tämä varmistaa, että tarvittavat riippuvuudet on asennettu Autofacin kanssa työskentelyyn.

Valitse luomasi ASP.Net-ydinverkkosovellusprojekti, napsauta hiiren kakkospainikkeella ja asenna Autofac.Extensions.DependencyInjection NuGet Package Managerin kautta. Hyväksy kaikki lisenssisopimukset, joita saatat pyytää asennuksen aikana. Vaihtoehtoisesti voit asentaa tämän paketin kirjoittamalla seuraavan komennon NuGet Package Manager -konsoliin:

Install-Package Autofac.Extensions.DependencyInjection

Luo luokka ASP.Net Core -sovellukseen

Tarvitsemme joitain esineitä, jotta voimme havainnollistaa riippuvuuden injektointia. Harkitse IAuthorRepository-käyttöliittymää, joka sisältää alla olevan GetMessage-menetelmän ilmoituksen.

 julkinen käyttöliittymä IAuthorRepository

    {

merkkijono GetMessage ();

    }

AuthorRepository-luokka toteuttaa IAuthorRepository-käyttöliittymän alla esitetyllä tavalla.

 public class AuthorRepository: IAuthorRepository

    {

julkinen merkkijono GetMessage ()

        {

palaa "Hello World";

        }

    }

Huomaa, että tämä on tietovaraston minimalistinen toteutus - ts. Se ei sisällä CRUD-menetelmiä, joita tyypillinen arkisto sisältää. Jätän teille CRUD-menetelmien asianmukaisen toteuttamisen.

Määritä Autofac ASP.Net Core -sovelluksessa

Autofacin määrittämiseksi sinun on määritettävä määrityskoodi Startup-luokan ConfigureServices-menetelmässä. Huomaa, että ConfigureServices-menetelmää käytetään palvelujen lisäämiseen ajon aikana säilöön.

Ensimmäinen vaihe on luoda säilönrakentaja tarvittavien palvelujen rekisteröimiseksi Autofac-säilöön. Ensimmäinen askel on kehyspalvelujen täyttäminen Populate-menetelmällä alla esitetyllä tavalla.

var containerBuilder = new ContainerBuilder ();

containerBuilder.Populate (palvelut);

Seuraava vaihe on rekisteröidä mukautetut palvelut Autofaciin. Voit tehdä tämän käyttämällä RegisterType-menetelmää säilönrakentajaesimerkissä alla olevan kuvan mukaisesti.

containerBuilder.RegisterType (). As ();

Kun haluat rakentaa säilön, kirjoita seuraava koodi.

var container = containerBuilder.Build ();

palautusastia.Resolve ();

Tässä on ConfigureServices-menetelmän täydellinen lähdekoodi viitteellesi:

public IServiceProvider ConfigureServices (IServiceCollection-palvelut)

   {

palvelut.AddMvc ();

var containerBuilder = new ContainerBuilder ();

containerBuilder.Populate (palvelut);

containerBuilder.RegisterType ().

Kuten();

var container = containerBuilder.Build ();

palautusastia.Resolve ();

   }

Käytä Autofacia ohjaimissasi ASP.Net Core -sovelluksessa

Nyt kun Autofac on asennettu ja määritetty projektiisi, voit aloittaa sen käytön ohjaimissasi. Seuraava koodinpätkä kuvaa, kuinka voit ratkaista riippuvuudet ValuesControllerissa.

  public class ValuesController: ControllerBase

  {

yksityinen IAuthorRepository _authorRepository;

public ValuesController (IAuthorRepository authorRepository)

        {

_authorRepository = authorRepository;

} // GET api / arvot

[HttpGet]

julkinen ActionResult Get ()

        {

return _authorRepository.GetMessage ();

        }

// Muut toimintamenetelmät

  }

Riippuvuuden ruiskutusperiaate on ohjausperiaatteen käänteisen toteutuminen. Se on tekniikka, jota käytetään riippuvuuksien poistamiseen toteutuksesta antamalla sinun lisätä näitä riippuvuuksia ulkoisesti. Ohjaussäiliöiden, kuten Autofacin, kääntäminen hyödyntää riippuvuusinjektiota kääntääkseen ohjausvirran ja auttaa automatisoimaan esineiden välittömän ja elinkaarihallinnan.

Riippuvuusinjektiolla on kolme muotoa: rakentajan ruiskutus, rajapinnan ruiskutus ja omaisuuden injektointi. Tässä esimerkissä käytimme konstruktori-injektiota riippuvuuden - nimittäin AuthorRepository-esiintymän - ruiskuttamiseen ajon aikana ValuesController-luokassa.

Olemme nähneet, kuinka Autofacia voidaan käyttää korvaamaan oletusarvoinen riippuvuusinjektiosäiliö ASP.Net Core -sovelluksessa, mutta olemme vain raaputtaneet sen ominaisuuksien pintaa. Tutkin Autofacia tarkemmin tulevissa viesteissä täällä.