Programmēšana

Kā lietot Autofac ASP.Net Core

Atkarības iesmidzināšana atvieglo brīvu savienošanu un veicina pārbaudāmību un uzturēšanu. ASP.Net Core nodrošina iebūvētu atbalstu atkarības ievadīšanai (sava ​​veida vadības inversija) ar minimālistisku atkarības iesmidzināšanas konteineru. Tomēr iebūvētajā konteinerā trūkst daudzu pilnvērtīgas atkarības iesmidzināšanas vai vadības konteinera inversijas iezīmju.

Lai to pārvarētu, varat izmantot trešo pušu konteinerus ASP.Net Core. Citiem vārdiem sakot, iebūvēto konteineru varat viegli aizstāt ar trešās puses konteineru. Autofac ir vadības konteinera inversija, ko var izmantot, lai atrisinātu atkarības. Šajā rakstā ir sniegta diskusija par to, kā mēs varam strādāt ar Autofac ASP.Net Core.

Izveidojiet ASP.Net Core projektu Visual Studio

Vispirms izveidosim ASP.Net Core projektu Visual Studio. Pieņemot, ka Visual Studio 2017 vai Visual Studio 2019 ir instalēta jūsu sistēmā, veiciet tālāk norādītās darbības, lai izveidotu jaunu ASP.Net Core projektu Visual Studio.

  1. Palaidiet Visual Studio IDE.
  2. Noklikšķiniet uz “Izveidot jaunu projektu”.
  3. Logā “Izveidot jaunu projektu” parādīto veidņu sarakstā atlasiet “ASP.Net Core Web Application”.
  4. Noklikšķiniet uz Tālāk.
  5. Logā “Konfigurēt jauno projektu” norādiet jaunā projekta nosaukumu un vietu.
  6. Noklikšķiniet uz Izveidot.
  7. Logā “Izveidot jaunu ASP.Net Core tīmekļa lietojumprogrammu” augšdaļā esošajā nolaižamajā sarakstā atlasiet .Net Core kā izpildlaiku un ASP.Net Core 2.2 (vai jaunāku).
  8. Kā projekta veidni atlasiet “Web Application”.
  9. Pārliecinieties, vai nav atzīmētas izvēles rūtiņas “Iespējot Docker atbalstu” un “Konfigurēt HTTPS”, jo mēs šeit neizmantosim šīs funkcijas.
  10. Pārliecinieties, ka autentifikācija ir iestatīta kā “Nav autentifikācijas”, jo mēs arī neizmantosim autentifikāciju.
  11. Noklikšķiniet uz Izveidot.

Tas Visual Studio izveidos jaunu ASP.Net Core projektu. Mēs izmantosim šo projektu turpmākajās šī raksta sadaļās, lai strādātu ar Autofac.

Instalējiet Autofac savā ASP.Net Core projektā

Autofac ir viegli instalēt - to var instalēt no NuGet. Šīs rakstīšanas laikā pašreizējā Autofac versija ir 4.9.2. Lai strādātu ar Autofac, jāinstalē arī pakete Autofac.Extensions.DependencyInjection. Tas nodrošinās, ka jums ir instalētas nepieciešamās atkarības darbam ar Autofac.

Atlasiet iepriekš izveidoto ASP.Net pamata tīmekļa lietojumprogrammas projektu, pēc tam ar peles labo pogu noklikšķiniet un instalējiet Autofac.Extensions.DependencyInjection, izmantojot NuGet pakešu pārvaldnieku. Pieņemiet visus licencēšanas līgumus, kurus instalēšanas laikā jums var lūgt. Varat arī instalēt šo pakotni, NuGet pakešu pārvaldnieka konsolē ievadot šādu komandu:

Install-Package Autofac.Extensions.DependencyInjection

Izveidojiet klasi savā ASP.Net Core lietojumprogrammā

Lai ilustrētu atkarības ievadīšanu, mums būs nepieciešami daži objekti, ar kuriem strādāt. Apsveriet IAuthorRepository saskarni, kas satur zemāk GetMessage metodes deklarāciju.

 publiskā saskarne IAuthorRepository

    {

virkne GetMessage ();

    }

Klase AuthorRepository ievieš IAuthorRepository saskarni, kā parādīts zemāk.

 public class AuthorRepository: IAuthorRepository

    {

publiskā virkne GetMessage ()

        {

atgriezties "Hello World";

        }

    }

Ņemiet vērā, ka šī ir minimālistiska repozitorija ieviešana - t.i., tajā nav CRUD metožu, kuras satur tipisks repozitorijs. Es atstāšu jūsu ziņā pareizi īstenot CRUD metodes.

Konfigurējiet Autofac programmā ASP.Net Core

Lai konfigurētu Autofac, Startup klases ConfigureServices metodē jānorāda konfigurācijas kods. Ņemiet vērā, ka metodi ConfigureServices izmanto, lai konteineram pievienotu pakalpojumus izpildlaika laikā.

Pirmais solis ir izveidot konteineru veidotāju, lai reģistrētu nepieciešamos pakalpojumus Autofac konteinerā. Pirmais solis ir ietvert pamatpakalpojumus, izmantojot aizpildīšanas metodi, kā parādīts zemāk.

var containerBuilder = new ContainerBuilder ();

containerBuilder.Populācija (pakalpojumi);

Nākamais solis ir reģistrēt pielāgotos pakalpojumus Autofac. Lai to izdarītu, konteineru veidotāja instancē izmantojiet metodi RegisterType, kā parādīts zemāk.

containerBuilder.RegisterType (). As ();

Lai izveidotu konteineru, ierakstiet šādu kodu.

var container = containerBuilder.Build ();

atgriešanās konteiners. Atrisiniet ();

Šeit ir pilns ConfigureServices metodes avota kods jūsu atsaucei:

publiskais IServiceProvider ConfigureServices (IServiceCollection pakalpojumi)

   {

pakalpojumi.AddMvc ();

var containerBuilder = new ContainerBuilder ();

containerBuilder.Populācija (pakalpojumi);

containerBuilder.RegisterType ().

As ();

var container = containerBuilder.Build ();

atgriešanās konteiners. Atrisiniet ();

   }

Izmantojiet Autofac savos kontrolleros ASP.Net Core

Tagad, kad Autofac ir instalēts un konfigurēts jūsu projektā, varat sākt to izmantot savos kontrolieros. Šis koda fragments parāda, kā var atrisināt atkarības no ValuesController.

  public class ValuesController: ControllerBase

  {

privāts IAuthorRepository _authorRepository;

public ValuesController (IAuthorRepository authorRepository)

        {

_authorRepository = authorRepository;

} // IEGŪT api / vērtības

[HttpGet]

public ActionResult Get ()

        {

atgriezt _authorRepository.GetMessage ();

        }

// Citas darbības metodes

  }

Atkarības ievadīšanas princips ir vadības principa inversijas realizācija. Tas ir paņēmiens, ko izmanto, lai noņemtu atkarības no ieviešanas, ļaujot injicēt šīs atkarības ārēji. Vadības konteineru, piemēram, Autofac, inversija izmanto atkarības ievadīšanas priekšrocības, lai apgrieztu vadības plūsmu un palīdzētu automatizēt objektu momentāno un dzīves cikla pārvaldību.

Atkarības injekcijai ir trīs formas: konstruktora injekcija, saskarnes injekcija un īpašuma injekcija. Šajā piemērā mēs izmantojām konstruktora injekciju, lai izpildes laikā injicētu atkarību - proti, AuthorRepository tipa gadījumu - ValuesController klasē.

Mēs esam redzējuši, kā Autofac var izmantot, lai aizstātu noklusējuma atkarības iesmidzināšanas konteineru ASP.Net Core, taču mēs esam tikai saskrāpējuši tā iespējas. Es sīkāk izpētīšu Autofac turpmākajos ierakstos šeit.

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