Kako koristiti Autofac u ASP.Net Coreu

Injektiranje ovisnosti olakšava labavo spajanje i promiče provjerljivost i održavanje. ASP.Net Core pruža ugrađenu podršku za ubrizgavanje ovisnosti (vrsta inverzije upravljanja) s minimalističkim spremnikom za ubrizgavanje ovisnosti. Međutim, ugrađenom spremniku nedostaju mnoge značajke punopravne injekcije ovisnosti ili inverzije upravljačkog spremnika.

Da biste to prevladali, možete upotrijebiti spremnike treće strane u ASP.Net Coreu. Drugim riječima, ugrađeni spremnik možete jednostavno zamijeniti spremnikom treće strane. Autofac je inverzija kontrolnog spremnika koja se može koristiti za rješavanje ovisnosti. Ovaj članak nudi raspravu o tome kako možemo raditi s Autofac-om u ASP.Net Coreu.

Stvorite projekt ASP.Net Core u Visual Studiju

Prvo stvorimo projekt ASP.Net Core u Visual Studiju. Pod pretpostavkom da je Visual Studio 2017 ili Visual Studio 2019 instaliran u vašem sustavu, slijedite korake opisane u nastavku da biste stvorili novi ASP.Net Core projekt u Visual Studio.

  1. Pokrenite Visual Studio IDE.
  2. Kliknite "Stvori novi projekt".
  3. U prozoru "Stvori novi projekt" s popisa predložaka odaberite "ASP.Net Core Web Application".
  4. Kliknite Dalje.
  5. U prozoru „Konfiguriranje novog projekta“ navedite naziv i mjesto za novi projekt.
  6. Kliknite Stvori.
  7. U prozoru "Stvori novu web-aplikaciju ASP.Net Core" odaberite .Net Core kao vrijeme izvođenja i ASP.Net Core 2.2 (ili noviju) s padajućeg popisa na vrhu.
  8. Kao predložak projekta odaberite “Web Application”. 
  9. Obavezno označite potvrdne okvire "Omogući podršku za Docker" i "Konfiguriraj za HTTPS" jer ovdje nećemo koristiti te značajke.
  10. Provjerite je li provjera autentičnosti postavljena na "Bez provjere autentičnosti" jer ni mi nećemo koristiti provjeru autentičnosti.
  11. Kliknite Stvori.

To će stvoriti novi ASP.Net Core projekt u Visual Studiju. Ovaj projekt koristit ćemo u sljedećim odjeljcima ovog članka za rad s Autofacom.

Instalirajte Autofac u svoj ASP.Net Core projekt

Lako je instalirati Autofac - možete ga instalirati iz NuGet-a. U vrijeme pisanja ovog članka, trenutna verzija Autofaca je 4.9.2. Da biste radili s Autofacom, trebali biste instalirati i paket Autofac.Extensions.DependencyInjection. To će osigurati da imate instalirane potrebne ovisnosti za rad s Autofacom.

Odaberite projekt ASP.Net Core Web Application koji ste prethodno kreirali, a zatim desnom tipkom miša kliknite i instalirajte Autofac.Extensions.DependencyInjection putem NuGet Package Manager. Prihvatite sve ugovore o licenciranju za koje biste mogli zatražiti tijekom instalacije. Drugi paket možete instalirati unošenjem sljedeće naredbe u konzolu NuGet Package Manager:

Instaliraj-paket Autofac.Extensions.DependencyInjection

Stvorite klasu u svojoj aplikaciji ASP.Net Core

Da bismo ilustrirali ubrizgavanje ovisnosti, trebat će nam neki objekti s kojima ćemo raditi. Razmotrite sučelje IAuthorRepository koje sadrži deklaraciju metode GetMessage u nastavku.

 javno sučelje IAuthorRepository

    {

        niz GetMessage ();

    }

Klasa AuthorRepository implementira sučelje IAuthorRepository kako je prikazano u nastavku.

 javna klasa AuthorRepository: IAuthorRepository

    {

        javni niz GetMessage ()

        {

            povratak "Hello World";

        }

    }

Imajte na umu da je ovo minimalistička implementacija spremišta - tj. Ne sadrži CRUD metode koje sadrži tipično spremište. Prepustit ću vama da na odgovarajući način implementirate CRUD metode.

Konfigurirajte Autofac u ASP.Net Core

Da biste konfigurirali Autofac, trebali biste navesti konfiguracijski kôd u metodi ConfigureServices klase Startup. Napominjemo da se metoda ConfigureServices koristi za dodavanje usluga tijekom izvođenja u spremnik.

Prvi je korak stvoriti graditelj spremnika za registraciju potrebnih usluga s spremnikom Autofac. Prvi korak je popunjavanje usluga okvira metodom populacije kao što je prikazano u nastavku.

var containerBuilder = novi ContainerBuilder ();

containerBuilder.Populate (usluge);

Sljedeći je korak registracija prilagođenih usluga u Autofac. Da biste to učinili, upotrijebite metodu RegisterType na instanci graditelja spremnika kao što je prikazano u nastavku.

containerBuilder.RegisterType (). As ();

Za izgradnju spremnika napišite sljedeći kod.

var kontejner = containerBuilder.Build ();

povratni spremnik.Resolve ();

Evo potpunog izvornog koda metode ConfigureServices za vašu referencu:

javni IServiceProvider ConfigureServices (usluge IServiceCollection)

   {

       usluge.AddMvc ();

       var containerBuilder = novi ContainerBuilder ();

       containerBuilder.Populate (usluge);

       containerBuilder.RegisterType ().

       Kao();

       var kontejner = containerBuilder.Build ();

       povratni spremnik.Resolve ();

   }

Koristite Autofac u svojim kontrolerima u ASP.Net Coreu

Sada kada je Autofac instaliran i konfiguriran u vašem projektu, možete ga početi koristiti u svojim kontrolerima. Sljedeći isječak koda ilustrira kako možete riješiti ovisnosti u programu ValuesController.

  javna klasa ValuesController: ControllerBase

  {

        privatni IAuthorRepository _authorRepository; 

        javni ValuesController (IAuthorRepository authorRepository) 

        {

            _authorRepository = authorRepository;

        } // DOBITI api / vrijednosti

        [HttpGet]

        javni ActionResult Nabavite ()

        {

            return _authorRepository.GetMessage ();

        }

     // Ostale metode djelovanja

  }

Načelo ubrizgavanja ovisnosti realizacija je načela inverzije upravljanja. To je tehnika koja se koristi za uklanjanje ovisnosti iz implementacije omogućujući vam ubrizgavanje tih ovisnosti izvana. Inverzija kontrolnih spremnika kao što je Autofac iskorištava ubrizgavanje ovisnosti za invertiranje toka kontrole i pomaže u automatizaciji instanciranja i upravljanja životnim ciklusom objekata.

Ubrizgavanje ovisnosti ima tri oblika: ubrizgavanje konstruktora, ubrizgavanje sučelja i ubrizgavanje svojstava. U ovom smo primjeru koristili ubrizgavanje konstruktora za ubrizgavanje ovisnosti - naime instance tipa AuthorRepository - za vrijeme izvođenja u klasi ValuesController.

Vidjeli smo kako se Autofac može koristiti za zamjenu zadanog spremnika za ubrizgavanje ovisnosti u ASP.Net Core, ali samo smo ogrebali površinu njegovih mogućnosti. Autofac ću detaljnije istražiti u budućim postovima ovdje.