Når du arbejder i ASP.NET Core, angiver du ofte programmets indstillinger, gemmer dem i en fil og henter derefter disse indstillinger, når applikationen har brug for dem. Typisk registrerer du dine afhængigheder i ConfigureServices-metoden i opstartklassen. Du kan angive indstillingerne for din applikation i appsettings.json eller en anden .json-fil og derefter drage fordel af afhængighedsinjektion gennem IOptions for at læse disse indstillinger i din applikation.
Indstillingsmønstrene giver en elegant måde at tilføje stærkt indtastede indstillinger til din ASP.NET Core-applikation. Indstillingsmønsteret, som er en udvidelse oven på IServiceCollection-grænsefladen, udnytter klasser til at repræsentere en gruppe relaterede indstillinger. Denne artikel taler om indstillingsmønsteret, hvorfor det er nyttigt, og hvordan det kan bruges til at arbejde med konfigurationsdata i ASP.NET Core.
For at arbejde med kodeeksemplerne i denne artikel skal du have Visual Studio 2019 installeret i dit system. Hvis du ikke allerede har en kopi, kan du downloade Visual Studio 2019 her.
Opret et ASP.NET Core API-projekt
Lad os først starte med at oprette et ASP.NET Core-projekt i Visual Studio. Forudsat at Visual Studio 2019 er installeret i dit system, skal du følge trinene beskrevet nedenfor for at oprette et nyt ASP.NET Core API-projekt i Visual Studio.
- Start Visual Studio IDE.
- Klik på "Opret nyt projekt."
- I vinduet "Opret nyt projekt" skal du vælge "ASP.NET Core Web Application" fra listen over skabeloner, der vises.
- Klik på Næste.
- I vinduet "Konfigurer dit nye projekt", der vises nedenfor, skal du angive navnet og placeringen for det nye projekt.
- Klik på Opret.
- I vinduet "Opret ny ASP.NET Core-webapplikation" skal du vælge .NET Core som runtime og ASP.NET Core 3.0 (eller nyere) fra rullelisten øverst. Jeg bruger ASP.NET Core 3.1 her.
- Vælg “API” som projektskabelon for at oprette en ny ASP.NET Core API-applikation.
- Sørg for, at afkrydsningsfelterne "Aktivér Docker-support" og "Konfigurer til HTTPS" ikke er markeret, da vi ikke bruger disse funktioner her.
- Sørg for, at godkendelse er indstillet som "Ingen godkendelse", da vi heller ikke bruger godkendelse.
- Klik på Opret.
Dette opretter et nyt ASP.NET Core API-projekt i Visual Studio. Vælg Controllers-løsningsmappen i vinduet Solution Explorer, og klik på "Tilføj -> Controller ..." for at oprette en ny controller med navnet DefaultController. Vi bruger dette projekt i de efterfølgende afsnit i denne artikel.
Implementér indstillingsmønsteret i ASP.NET Core
For at bruge indstillingsmønsteret i ASP.NET Core har du brug for pakken Microsoft.Extensions.Options.ConfigurationExtensions. I øvrigt henviser ASP.NET Core-applikationer implicit til Microsoft.Extensions.Options.ConfigurationExtensions-pakken som standard.
Når du bruger indstillingsmønsteret, vil du typisk bruge klasser til at repræsentere en gruppe relaterede indstillinger. Når du isolerer konfigurationsindstillingerne i separate klasser, overholder din applikation følgende principper:
- Adskillelse af bekymringer: De indstillinger, der bruges i forskellige moduler i applikationen, afkobles fra hinanden.
- Princip for adskillelse af grænseflade: De klasser, der repræsenterer disse indstillinger, afhænger kun af de konfigurationsindstillinger, de vil bruge.
Skriv nu følgende indstillinger i filen appsettings.json.
"DatabaseSettings": {"Server": "localhost",
"Udbyder": "SQL Server",
"Database": "DemoDb",
"Havn": 23,
"Brugernavn": "sa",
"Adgangskode": "Joydip123"
}
Bemærk, at din konfigurationsklasse skal have offentlige get og set-egenskaber. Vi drager fordel af følgende klasse til at læse disse indstillinger snart.
offentlig klasse DatabaseSettings{
public string Server {get; sæt; }
public string Provider {get; sæt; }
public string Database {get; sæt; }
offentlig int Port {get; sæt; }
public string UserName {get; sæt; }
public string Adgangskode {get; sæt; }
}
Du kan nu bruge konfigurationsudvidelsesmetoden til IServiceCollection til at binde din indstillingsklasse til din konfiguration som vist i kodestykket nedenfor.
offentlig ugyldighed ConfigureServices (IServiceCollection-tjenester){
services.AddControllers ();
tjenester.Konfigurer
(optioner => Configuration.GetSection ("DatabaseSettings"). Bind (optioner));
}
Læs konfigurationsdata i controlleren i ASP.NET Core
Vi drager nu fordel af DefaultController, vi oprettede tidligere, for at demonstrere, hvordan vi kan læse konfigurationsdata i controlleren. IOptions-grænsefladen udsætter en værdiegenskab, der kan bruges til at hente forekomsten af indstillingsklassen.
Følgende kodestykke viser, hvordan du kan bruge klassen DatabaseSettings i din controller ved navn DefaultController. Bemærk hvordan afhængighedsinjektion (konstruktørinjektion i dette eksempel) er blevet brugt her.
offentlig klasse DefaultController: ControllerBase{
private DatabaseSettings _indstillinger;
offentlig DefaultController (IOptions-indstillinger)
{
_indstillinger = indstillinger. værdi;
}
// Handlingsmetoder
}
Håndhæv regler for konfigurationer i ASP.NET Core
Du kan også håndhæve visse regler som vist i kodestykket nedenfor. Bemærk, hvordan en forekomst af hjælperklassen til SQL Server eller MySQL tilføjes som en singleton her.
services.Configure (optioner =>{
hvis (optioner.Provider.ToLower (). Trim (). Lig med ("sqlserver"))
{
services.AddSingleton (ny SqlDbHelper ());
}
ellers hvis (optioner.Provider.ToLower (). Trim (). Lig med ("mysql"))
{
services.AddSingleton (ny MySqlDbHelper ());
}
});
Understøttelse af stærkt indtastet konfiguration er en fantastisk funktion i ASP.NET Core, der giver dig mulighed for at anvende adskillelse af bekymringer og grænsefladeseparation. I et fremtidigt indlæg her på valgmønsteret vil jeg tale om konfigurationsvalidering og konfiguration, der kan genindlæses, med særligt fokus på IOptionsMonitor-grænsefladen. Indtil da kan du læse mere om indstillingsmønsteret i Microsofts online-dokumentation her.
Sådan gør du mere i ASP.NET og ASP.NET Core:
- Sådan bruges cache i hukommelsen i ASP.NET Core
- Sådan håndteres fejl i ASP.NET Web API
- Sådan overføres flere parametre til Web API-controller-metoder
- Sådan logges anmodnings- og svarmetadata i ASP.NET Web API
- Sådan arbejder du med HttpModules i ASP.NET
- Avanceret versionering i ASP.NET Core Web API
- Sådan bruges afhængighedsinjektion i ASP.NET Core
- Sådan arbejder du med sessioner i ASP.NET
- Sådan arbejder du med HTTPHandlers i ASP.NET
- Sådan bruges IHostedService i ASP.NET Core
- Sådan forbruges en WCF SOAP-tjeneste i ASP.NET Core
- Sådan forbedres ydeevnen for ASP.NET Core-applikationer
- Sådan forbruges en ASP.NET Core Web API ved hjælp af RestSharp
- Sådan arbejder du med logning i ASP.NET Core
- Sådan bruges MediatR i ASP.NET Core
- Sådan arbejder du med sessionstilstand i ASP.NET Core
- Sådan bruges Nancy i ASP.NET Core
- Forstå parameterbinding i ASP.NET Web API
- Sådan uploades filer i ASP.NET Core MVC
- Sådan implementeres global undtagelseshåndtering i ASP.NET Core Web API
- Sådan implementeres sundhedstjek i ASP.NET Core
- Bedste fremgangsmåder inden caching i ASP.NET
- Sådan bruges Apache Kafka-meddelelser i .NET
- Sådan aktiveres CORS på din web-API
- Hvornår skal man bruge WebClient vs. HttpClient vs. HttpWebRequest
- Sådan arbejder du med Redis Cache i .NET
- Hvornår skal man bruge Task.WaitAll vs. Task.WhenAll i .NET