Programiranje

Kako uporabiti vzorec možnosti v ASP.NET Core

Pri delu v ASP.NET Core pogosto določite nastavitve aplikacije, jih shranite v neko datoteko in nato te nastavitve pridobite, ko jih aplikacija potrebuje. Običajno bi odvisnosti registrirali v metodi ConfigureServices razreda Startup. Nastavitve aplikacije lahko določite v datoteki appsettings.json ali kateri koli drugi datoteki .json in nato izkoristite vbrizganje odvisnosti prek IOptions, da preberete te nastavitve v aplikaciji.

Vzorci možnosti omogočajo eleganten način dodajanja močno vtipkanih nastavitev v aplikacijo ASP.NET Core. Vzorec možnosti, ki je razširitev na vrhu vmesnika IServiceCollection, izkorišča razrede, da predstavlja skupino povezanih nastavitev. Ta članek govori o vzorcu možnosti, zakaj je uporaben in kako ga je mogoče uporabiti za delo s konfiguracijskimi podatki v ASP.NET Core.

Če želite delati s primeri kod v tem članku, morate imeti v sistemu nameščen Visual Studio 2019. Če kopije še nimate, lahko Visual Studio 2019 prenesete tukaj.

Ustvarite projekt ASP.NET Core API

Najprej ustvarimo projekt ASP.NET Core v Visual Studio. Ob predpostavki, da je Visual Studio 2019 nameščen v vašem sistemu, sledite spodnjim korakom, da v Visual Studio ustvarite nov projekt API-ja ASP.NET Core.

  1. Zaženite Visual Studio IDE.
  2. Kliknite »Ustvari nov projekt«.
  3. V oknu »Ustvari nov projekt« na prikazanih seznamih predlog izberite »Spletna aplikacija ASP.NET Core«.
  4. Kliknite Naprej.
  5. V naslednjem oknu »Konfiguriranje novega projekta« določite ime in mesto novega projekta.
  6. Kliknite Ustvari.
  7. V oknu »Ustvari novo spletno aplikacijo ASP.NET Core« izberite .NET Core kot izvajalno okolje in ASP.NET Core 3.0 (ali novejšo) s spustnega seznama na vrhu. Tukaj bom uporabljal ASP.NET Core 3.1.
  8. Kot predlogo projekta izberite »API«, da ustvarite novo aplikacijo ASP.NET Core API.
  9. Prepričajte se, da sta potrditveni polji »Omogoči podporo za Docker« in »Konfiguriranje za HTTPS« odstranjeni, saj tukaj ne bomo uporabljali teh funkcij.
  10. Prepričajte se, da je preverjanje pristnosti nastavljeno na »Brez preverjanja pristnosti«, saj tudi preverjanja pristnosti ne bomo uporabljali.
  11. Kliknite Ustvari.

To bo ustvarilo nov projekt API-ja ASP.NET Core v Visual Studio. Izberite mapo rešitve Controllers v oknu Solution Explorer in kliknite »Add -> Controller ...«, da ustvarite nov krmilnik z imenom DefaultController. Ta projekt bomo uporabili v naslednjih oddelkih tega članka.

Izvedite vzorec možnosti v ASP.NET Core

Če želite uporabiti vzorec možnosti v ASP.NET Core, potrebujete paket Microsoft.Extensions.Options.ConfigurationExtensions. Mimogrede se aplikacije ASP.NET Core privzeto sklicujejo na paket Microsoft.Extensions.Options.ConfigurationExtensions.

Ko uporabljate vzorec možnosti, bi običajno želeli uporabiti razrede za predstavitev skupine povezanih nastavitev. Pri ločevanju nastavitev konfiguracije v ločene razrede se vaša aplikacija drži naslednjih načel:

  • Ločitev pomislekov: Nastavitve, uporabljene v različnih modulih aplikacije, so ločene med seboj.
  • Načelo ločevanja vmesnika: Razredi, ki predstavljajo te nastavitve, so odvisni samo od nastavitev konfiguracije, ki bi jih uporabili.

Zdaj v datoteko appsettings.json zapišite naslednje nastavitve.

"DatabaseSettings": {

"Strežnik": "localhost",

"Provider": "SQL Server",

"Baza podatkov": "DemoDb",

"Pristanišče": 23,

"UserName": "sa",

"Geslo": "Joydip123"

  }

Upoštevajte, da mora imeti vaš konfiguracijski razred javne lastnosti pridobivanja in nastavljanja. Če želite v kratkem prebrati te nastavitve, bomo izkoristili naslednji tečaj.

 nastavitve baze podatkov javnega razreda

    {

javni niz strežnika {get; set; }

ponudnik javnih nizov {get; set; }

javni niz podatkovnih zbirk {get; set; }

javni int Port {get; set; }

javni niz UserName {get; set; }

javni niz Geslo {get; set; }

    }

Zdaj lahko s pomočjo metode Konfiguriraj razširitev IServiceCollection povežete razred nastavitev s svojo konfiguracijo, kot je prikazano v spodnjem delčku kode.

public void ConfigureServices (storitve IServiceCollection)

{

services.AddControllers ();

Konfigurirajte

(options => Configuration.GetSection ("DatabaseSettings"). Vezava (možnosti));

}

Preberite konfiguracijske podatke v krmilniku v ASP.NET Core

Zdaj bomo izkoristili DefaultController, ki smo ga ustvarili prej, da pokažemo, kako lahko beremo konfiguracijske podatke v krmilniku. Vmesnik IOptions razkrije lastnost Value, s katero je mogoče pridobiti primerek razreda nastavitev.

Naslednji delček kode prikazuje, kako lahko uporabite razred DatabaseSettings v krmilniku z imenom DefaultController. Upoštevajte, kako je bilo tukaj uporabljeno vbrizgavanje odvisnosti (vbrizgavanje konstruktorja v tem primeru).

javni razred DefaultController: ControllerBase

{

private DatabaseSettings _settings;

javni DefaultController (nastavitve IOptions)

   {

_settings = settings.Value;

   }

// Akcijske metode

}

Uveljavi pravila za konfiguracije v ASP.NET Core

Izvajate lahko tudi določena pravila, kot je prikazano v spodnjem delčku kode. Upoštevajte, kako je primerek pomožnega razreda za SQL Server ali MySQL tukaj dodan kot enoten.

storitve. Konfiguriraj (možnosti =>

 {

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

     {

services.AddSingleton (novo SqlDbHelper ());

     }

sicer če (options.Provider.ToLower (). Trim (). Enako ("mysql"))

     {

services.AddSingleton (novo MySqlDbHelper ());

     }

 });

Podpora za močno tipizirano konfiguracijo je odlična funkcija v ASP.NET Core, ki vam omogoča uporabo ločevanja skrbi in načel ločevanja vmesnikov. V prihodnjem prispevku o vzorcu možnosti bom govoril o preverjanju veljavnosti konfiguracije in prenosljivi konfiguraciji s posebnim poudarkom na vmesniku IOptionsMonitor. Do takrat lahko več o vzorcu možnosti preberete v Microsoftovi spletni dokumentaciji tukaj.

Kako narediti več v ASP.NET in ASP.NET Core:

  • Kako uporabljati predpomnjenje v pomnilniku v ASP.NET Core
  • Kako ravnati z napakami v spletnem API-ju ASP.NET
  • Kako prenesti več parametrov v metode krmilnika spletnega API-ja
  • Kako zapisati metapodatke zahtev in odzivov v spletni API ASP.NET
  • Kako delati s HttpModules v ASP.NET
  • Napredno spreminjanje različic v ASP.NET Core Web API
  • Kako uporabiti vbrizgavanje odvisnosti v ASP.NET Core
  • Kako delati s sejami v ASP.NET
  • Kako delati z HTTPHandlers v ASP.NET
  • Kako uporabljati IHostedService v ASP.NET Core
  • Kako porabiti storitev WCF SOAP v ASP.NET Core
  • Kako izboljšati delovanje aplikacij ASP.NET Core
  • Kako porabiti spletni API ASP.NET Core s pomočjo RestSharp
  • Kako delati s prijavo v ASP.NET Core
  • Kako uporabljati MediatR v ASP.NET Core
  • Kako delati s stanjem seje v ASP.NET Core
  • Kako uporabljati Nancy v ASP.NET Core
  • Razumevanje vezave parametrov v spletnem API-ju ASP.NET
  • Kako naložiti datoteke v ASP.NET Core MVC
  • Kako implementirati globalno obravnavo izjem v ASP.NET Core Web API
  • Kako izvajati zdravstvene preglede v ASP.NET Core
  • Najboljše prakse predpomnjenja v ASP.NET
  • Kako uporabljati sporočila Apache Kafka v .NET
  • Kako omogočiti CORS v spletnem API-ju
  • Kdaj uporabiti WebClient v primerjavi s HttpClient v primerjavi s HttpWebRequest
  • Kako delati s predpomnilnikom Redis v .NET
  • Kdaj uporabiti Task.WaitAll v primerjavi z Task.WhenAll v .NET
$config[zx-auto] not found$config[zx-overlay] not found