Programmering

Sådan bruges indstillingsmønsteret i ASP.NET Core

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.

  1. Start Visual Studio IDE.
  2. Klik på "Opret nyt projekt."
  3. I vinduet "Opret nyt projekt" skal du vælge "ASP.NET Core Web Application" fra listen over skabeloner, der vises.
  4. Klik på Næste.
  5. I vinduet "Konfigurer dit nye projekt", der vises nedenfor, skal du angive navnet og placeringen for det nye projekt.
  6. Klik på Opret.
  7. 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.
  8. Vælg “API” som projektskabelon for at oprette en ny ASP.NET Core API-applikation.
  9. Sørg for, at afkrydsningsfelterne "Aktivér Docker-support" og "Konfigurer til HTTPS" ikke er markeret, da vi ikke bruger disse funktioner her.
  10. Sørg for, at godkendelse er indstillet som "Ingen godkendelse", da vi heller ikke bruger godkendelse.
  11. 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