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.
- Zaženite Visual Studio IDE.
- Kliknite »Ustvari nov projekt«.
- V oknu »Ustvari nov projekt« na prikazanih seznamih predlog izberite »Spletna aplikacija ASP.NET Core«.
- Kliknite Naprej.
- V naslednjem oknu »Konfiguriranje novega projekta« določite ime in mesto novega projekta.
- Kliknite Ustvari.
- 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.
- Kot predlogo projekta izberite »API«, da ustvarite novo aplikacijo ASP.NET Core API.
- Prepričajte se, da sta potrditveni polji »Omogoči podporo za Docker« in »Konfiguriranje za HTTPS« odstranjeni, saj tukaj ne bomo uporabljali teh funkcij.
- Prepričajte se, da je preverjanje pristnosti nastavljeno na »Brez preverjanja pristnosti«, saj tudi preverjanja pristnosti ne bomo uporabljali.
- 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