Kako se koristi obrazac opcija u ASP.NET Core

Kada radite u ASP.NET Core, često ćete odrediti postavke svoje aplikacije, spremiti ih u neku datoteku, a zatim dohvatiti te postavke kad ih aplikacija zatreba. Obično biste svoje ovisnosti registrirali u metodi ConfigureServices klase Startup. Možete odrediti postavke svoje aplikacije u appsettings.json ili nekoj drugoj .json datoteci, a zatim iskoristiti injekciju ovisnosti putem IOptions da biste pročitali ove postavke u svojoj aplikaciji.

Uzorci opcija pružaju elegantan način dodavanja čvrsto otkucanih postavki u vašu aplikaciju ASP.NET Core. Uzorak opcija, koji je proširenje na vrhu sučelja IServiceCollection, koristi klase kako bi predstavio skupinu povezanih postavki. Ovaj članak govori o uzorku opcija, zašto je koristan i kako se može koristiti za rad s podacima o konfiguraciji u ASP.NET Core.

Da biste radili s primjerima koda iz ovog članka, u sustavu biste trebali instalirati Visual Studio 2019. Ako još nemate kopiju, ovdje možete preuzeti Visual Studio 2019.

Stvorite projekt ASP.NET Core API

Prvo, kreirajmo ASP.NET Core projekt u Visual Studiju. Pod pretpostavkom da je Visual Studio 2019 instaliran u vašem sustavu, slijedite korake opisane u nastavku da biste u Visual Studiou stvorili novi ASP.NET Core API projekt.

  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 sljedećem 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 3.0 (ili noviju) s padajućeg popisa na vrhu. Ovdje ću koristiti ASP.NET Core 3.1.
  8. Odaberite "API" kao predložak projekta da biste stvorili novu aplikaciju ASP.NET Core API. 
  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 API projekt u Visual Studiju. Odaberite mapu rješenja Controllers u prozoru Solution Explorer i kliknite "Dodaj -> Controller ..." da biste stvorili novi kontroler nazvan DefaultController. Ovaj projekt koristit ćemo u sljedećim odjeljcima ovog članka.

Primijenite obrazac opcija u ASP.NET Core

Da biste koristili obrazac opcija u ASP.NET Core, potreban vam je paket Microsoft.Extensions.Options.ConfigurationExtensions. Inače, aplikacije ASP.NET Core podrazumijevano upućuju na paket Microsoft.Extensions.Options.ConfigurationExtensions.

Kada koristite obrazac opcija, obično biste željeli koristiti klase za predstavljanje skupine povezanih postavki. Izolirajući postavke konfiguracije u zasebne klase, vaša se aplikacija pridržava sljedećih načela:

  • Razdvajanje problema: Postavke korištene u različitim modulima aplikacije međusobno su odvojene. 
  • Načelo razdvajanja sučelja: Klase koje predstavljaju ove postavke ovise samo o postavkama konfiguracije koje bi koristili. 

Sada napišite sljedeće postavke u datoteku appsettings.json.

"Postavke baze podataka": {

    "Poslužitelj": "localhost",

    "Provider": "SQL Server",

    "Baza podataka": "DemoDb",

    "Luka": 23,

    "UserName": "sa",

    "Lozinka": "Joydip123"

  }

Napominjemo da bi vaša konfiguracijska klasa trebala imati javna svojstva dobivanja i postavljanja. Iskoristit ćemo sljedeću nastavu da bismo uskoro pročitali ove postavke.

 postavke baze podataka javne klase

    {

        javni niz poslužitelja {get; postavljen; }

        javni davatelj nizova {get; postavljen; }

        baza podataka javnog niza {get; postavljen; }

        javni int Port {get; postavljen; }

        javni niz UserName {get; postavljen; }

        javni niz Lozinka {get; postavljen; }

    }

Sada možete koristiti metodu Konfiguriranje proširenja za IServiceCollection za povezivanje klase postavki s vašom konfiguracijom, kao što je prikazano u isječku koda koji je dan u nastavku.

javna praznina ConfigureServices (usluge IServiceCollection)

{

   services.AddControllers ();

   usluge.Konfiguriraj

   (options => Configuration.GetSection ("DatabaseSettings"). Veza (opcije));

}

Pročitajte podatke o konfiguraciji u upravljaču u ASP.NET Core

Sada ćemo iskoristiti DefaultController koji smo ranije stvorili da pokažemo kako možemo čitati podatke o konfiguraciji u kontroleru. Sučelje IOptions izlaže svojstvo Value koje se može koristiti za dohvaćanje instance klase postavki.

Sljedeći isječak koda pokazuje kako možete koristiti klasu DatabaseSettings u vašem kontroloru pod nazivom DefaultController. Primijetite kako se ovdje koristi ubrizgavanje ovisnosti (ubrizgavanje konstruktora u ovom primjeru).

javna klasa DefaultController: ControllerBase

{

   private DatabaseSettings _settings;

   javni DefaultController (postavke IOptions)

   {

      _settings = settings.Value;

   }

   // Metode djelovanja

}

Provedite pravila za konfiguracije u ASP.NET Core

Također možete provesti određena pravila kao što je prikazano u isječku koda u nastavku. Obratite pažnju na to kako se primjer pomoćne klase za SQL Server ili MySQL ovdje dodaje kao jednotočka.

usluge.Konfiguriraj (opcije =>

 {

     if (options.Provider.ToLower (). Trim (). Jednako ("sqlserver"))

     {

        services.AddSingleton (novi SqlDbHelper ());

     }

     inače ako (options.Provider.ToLower (). Trim (). Jednako ("mysql"))

     {

         services.AddSingleton (novi MySqlDbHelper ());

     }

 });

Podrška za snažno otkucane konfiguracije sjajna je značajka u ASP.NET Coreu koja vam omogućuje primjenu razdvajanja problema i načela segregacije sučelja. U budućem postu ovdje o obrascu opcija, govorit ću o provjeri valjanosti konfiguracije i ponovljivoj konfiguraciji s posebnim naglaskom na sučelju IOptionsMonitor. Do tada, više o uzorku opcija možete pročitati u Microsoftovoj internetskoj dokumentaciji ovdje. 

Kako učiniti više u ASP.NET i ASP.NET Core:

  • Kako se koristi predmemoriranje u memoriji u ASP.NET Core
  • Kako postupati s pogreškama u ASP.NET web API-ju
  • Kako proslijediti više parametara metodama kontrolera Web API-ja
  • Kako prijaviti metapodatke zahtjeva i odgovora u ASP.NET Web API
  • Kako raditi s HttpModules-om u ASP.NET-u
  • Napredna verzija u ASP.NET Core Web API
  • Kako se koristi ubrizgavanje ovisnosti u ASP.NET Core
  • Kako raditi sa sesijama u ASP.NET-u
  • Kako raditi s HTTPHandlerima u ASP.NET-u
  • Kako koristiti IHostedService u ASP.NET Core
  • Kako potrošiti WCF SOAP uslugu u ASP.NET Core
  • Kako poboljšati izvedbu ASP.NET Core aplikacija
  • Kako konzumirati ASP.NET Core Web API pomoću RestSharp
  • Kako raditi s prijavom u ASP.NET Core
  • Kako koristiti MediatR u ASP.NET Core
  • Kako raditi sa stanjem sesije u ASP.NET Coreu
  • Kako koristiti Nancy u ASP.NET Coreu
  • Razumijevanje vezivanja parametara u ASP.NET Web API-ju
  • Kako prenijeti datoteke u ASP.NET Core MVC
  • Kako implementirati rukovanje globalnim iznimkama u ASP.NET Core Web API
  • Kako implementirati provjere zdravlja u ASP.NET Core
  • Najbolji primjeri u predmemoriranju u ASP.NET-u
  • Kako koristiti Apache Kafka razmjenu poruka u .NET-u
  • Kako omogućiti CORS na vašem web API-ju
  • Kada koristiti WebClient u odnosu na HttpClient u odnosu na HttpWebRequest
  • Kako raditi s predmemorijom Redis u .NET-u
  • Kada koristiti Task.WaitAll vs. Task.WhenAll u .NET