Programovanie

Ako používať Autofac v ASP.Net Core

Závislé vstrekovanie uľahčuje uvoľnené spojenie a podporuje testovateľnosť a údržbu. ASP.Net Core poskytuje zabudovanú podporu pre vkladanie závislostí (druh inverzie kontroly) s minimalistickým kontajnerom pre vkladanie závislostí. Zabudovaný kontajner však nemá veľa funkcií plnohodnotného vkladania závislostí alebo inverzie ovládacieho kontajnera.

Aby ste to prekonali, môžete v ASP.Net Core použiť kontajnery tretích strán. Inými slovami, zabudovaný kontajner môžete ľahko nahradiť kontajnerom iného výrobcu. Autofac je inverzia riadiaceho kontajnera, ktorá sa dá použiť na riešenie závislostí. Tento článok poskytuje diskusiu o tom, ako môžeme pracovať s funkciou Autofac v ASP.Net Core.

Vytvorte projekt ASP.Net Core v Visual Studio

Najprv si vytvoríme projekt ASP.Net Core v Visual Studio. Za predpokladu, že je vo vašom systéme nainštalované Visual Studio 2017 alebo Visual Studio 2019, vytvorte nový projekt ASP.Net Core v Visual Studio podľa pokynov uvedených nižšie.

  1. Spustite Visual Studio IDE.
  2. Kliknite na „Vytvoriť nový projekt“.
  3. V okne „Vytvoriť nový projekt“ zo zoznamu zobrazených šablón vyberte možnosť „Webová aplikácia ASP.Net Core“.
  4. Kliknite na Ďalej.
  5. V okne „Konfigurácia nového projektu“ zadajte názov a umiestnenie nového projektu.
  6. Kliknite na tlačidlo Vytvoriť.
  7. V okne „Vytvorenie novej webovej aplikácie ASP.Net Core“ vyberte z rozbaľovacieho zoznamu v hornej časti .Net Core ako runtime modul a ASP.Net Core 2.2 (alebo novší).
  8. Ako šablónu projektu vyberte možnosť „Webová aplikácia“.
  9. Skontrolujte, či nie sú začiarknuté políčka „Povoliť podporu Docker“ a „Konfigurovať pre HTTPS“, pretože tu nebudeme tieto funkcie používať.
  10. Skontrolujte, či je overenie nastavené na „Bez overenia“, pretože tiež nebudeme používať overenie.
  11. Kliknite na tlačidlo Vytvoriť.

Týmto sa v Visual Studio vytvorí nový projekt ASP.Net Core. Tento projekt použijeme v ďalších častiach tohto článku na prácu s Autofacom.

Nainštalujte si Autofac do svojho projektu ASP.Net Core

Inštalácia Autofacu je jednoduchá - môžete si ho nainštalovať z NuGet. V čase písania tohto článku je aktuálna verzia aplikácie Autofac 4.9.2. Ak chcete pracovať s programom Autofac, mali by ste si tiež nainštalovať balík Autofac.Extensions.DependencyInjection. Takto zaistíte, aby ste mali nainštalované potrebné závislosti pre prácu s Autofacom.

Vyberte projekt webovej aplikácie ASP.Net Core, ktorý ste vytvorili vyššie, potom kliknite pravým tlačidlom myši a nainštalujte aplikáciu Autofac.Extensions.DependencyInjection prostredníctvom správcu balíkov NuGet. Prijmite všetky licenčné zmluvy, na ktoré počas inštalácie môžete byť vyzvaní. Prípadne môžete tento balík nainštalovať zadaním nasledujúceho príkazu v konzole NuGet Package Manager Console:

Inštalačný balík Autofac.Extensions.DependencyInjection

Vytvorte triedu vo svojej aplikácii ASP.Net Core

Na ilustráciu vkladania závislostí budeme potrebovať niektoré objekty, s ktorými budeme pracovať. Zvážte rozhranie IAuthorRepository, ktoré obsahuje deklaráciu metódy GetMessage uvedenú nižšie.

 verejné rozhranie IAuthorRepository

    {

reťazec GetMessage ();

    }

Trieda AuthorRepository implementuje rozhranie IAuthorRepository, ako je uvedené nižšie.

 verejná trieda AuthorRepository: IAuthorRepository

    {

verejný reťazec GetMessage ()

        {

návrat "Hello World";

        }

    }

Upozorňujeme, že ide o minimalistickú implementáciu úložiska - to znamená, že neobsahuje metódy CRUD, ktoré obsahuje typické úložisko. Nechám na vás, aby ste metódy CRUD implementovali primerane.

Nakonfigurujte Autofac v ASP.Net Core

Ak chcete nakonfigurovať Autofac, mali by ste zadať konfiguračný kód v metóde ConfigureServices triedy Startup. Všimnite si, že metóda ConfigureServices sa používa na pridanie služieb za behu do kontajnera.

Prvým krokom je vytvorenie nástroja na tvorbu kontajnerov na registráciu potrebných služieb s kontajnerom Autofac. Prvým krokom je naplnenie služieb rámca pomocou metódy vyplnenia, ako je uvedené nižšie.

var containerBuilder = nový ContainerBuilder ();

containerBuilder.Populate (služby);

Ďalším krokom je registrácia vlastných služieb na serveri Autofac. Ak to chcete urobiť, použite metódu RegisterType na inštancii nástroja na tvorbu kontajnerov, ako je uvedené nižšie.

containerBuilder.RegisterType (). As ();

Ak chcete zostaviť kontajner, napíšte nasledujúci kód.

var container = containerBuilder.Build ();

vratny kontajner.Resolve ();

Tu je kompletný zdrojový kód metódy ConfigureServices pre vašu referenciu:

verejná služba IServiceProvider ConfigureServices (služby IServiceCollection)

   {

services.AddMvc ();

var containerBuilder = nový ContainerBuilder ();

containerBuilder.Populate (služby);

containerBuilder.RegisterType ().

Ako ();

var container = containerBuilder.Build ();

vratny kontajner.Resolve ();

   }

Použite Autofac vo svojich radičoch v ASP.Net Core

Teraz, keď je vo vašom projekte nainštalovaný a nakonfigurovaný Autofac, môžete ho začať používať vo svojich radičoch. Nasledujúci úryvok kódu ilustruje, ako môžete vyriešiť závislosti v nástroji ValuesController.

  verejná trieda ValuesController: ControllerBase

  {

súkromné ​​IAuthorRepository _authorRepository;

public ValuesController (IAuthorRepository authorRepository)

        {

_authorRepository = authorRepository;

} // ZÍSKAJTE API / hodnoty

[HttpGet]

public ActionResult Get ()

        {

return _authorRepository.GetMessage ();

        }

// Ostatné metódy akcie

  }

Princíp injektovania závislosti je realizáciou inverzie princípu riadenia. Je to technika, ktorá sa používa na odstránenie závislostí z implementácie tým, že vám umožňuje vložiť tieto závislosti externe. Inverzia riadiacich kontajnerov, ako je Autofac, využíva vkladanie závislostí na invertovanie toku riadenia a pomáha automatizovať vytváranie inštancií a správu životného cyklu objektov.

Vkladanie závislostí má tri formy: vstrekovanie konštruktoru, vstrekovanie rozhrania a vkladanie vlastností. V tomto príklade sme použili injektor konštruktora na vloženie závislosti - konkrétne inštancie typu AuthorRepository - za behu v triede ValuesController.

Videli sme, ako možno Autofac použiť na nahradenie predvoleného kontajnera na vkladanie závislostí v ASP.Net Core, ale iba sme poškriabali povrch jeho schopností. Autofac podrobnejšie preskúmam v budúcich príspevkoch tu.

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