Programování

Jak používat vzor možností v ASP.NET Core

Při práci v ASP.NET Core často zadáte nastavení vaší aplikace, uložíte je do nějakého souboru a poté načtete tato nastavení, když je aplikace potřebuje. Typicky byste své závislosti zaregistrovali v metodě ConfigureServices třídy Startup. Můžete určit nastavení vaší aplikace v souboru appsettings.json nebo v jiném souboru .json a poté využít výhod vkládání závislostí prostřednictvím IOptions a přečíst si tato nastavení ve vaší aplikaci.

Možnosti vzory poskytují elegantní způsob, jak přidat silně zadané nastavení do vaší aplikace ASP.NET Core. Vzor možností, což je rozšíření v horní části rozhraní IServiceCollection, využívá výhod tříd k reprezentaci skupiny souvisejících nastavení. Tento článek hovoří o vzoru možností, proč je to užitečné a jak ho lze použít pro práci s konfiguračními daty v ASP.NET Core.

Chcete-li pracovat s příklady kódu uvedenými v tomto článku, měli byste mít ve svém systému nainstalovanou Visual Studio 2019. Pokud ještě nemáte kopii, můžete si stáhnout Visual Studio 2019 zde.

Vytvořte projekt rozhraní API ASP.NET Core

Nejprve si vytvořme projekt ASP.NET Core v sadě Visual Studio. Za předpokladu, že je ve vašem systému nainstalovaná Visual Studio 2019, vytvořte nový projekt rozhraní API ASP.NET Core v sadě Visual Studio podle pokynů uvedených níže.

  1. Spusťte Visual Studio IDE.
  2. Klikněte na „Vytvořit nový projekt“.
  3. V okně „Vytvořit nový projekt“ vyberte ze zobrazeného seznamu šablon „Webová aplikace ASP.NET Core“.
  4. Klikněte na Další.
  5. V dalším okně „Konfigurace nového projektu“ zadejte název a umístění nového projektu.
  6. Klikněte na Vytvořit.
  7. V okně „Vytvořit novou webovou aplikaci ASP.NET Core“ vyberte jako běhový modul .NET Core a v rozevíracím seznamu nahoře vyberte ASP.NET Core 3.0 (nebo novější). Budu zde používat ASP.NET Core 3.1.
  8. Vyberte „API“ jako šablonu projektu a vytvořte novou aplikaci API ASP.NET Core.
  9. Ujistěte se, že políčka „Povolit podporu Dockeru“ a „Konfigurovat pro HTTPS“ nejsou zaškrtnuta, protože zde tyto funkce nebudeme používat.
  10. Ujistěte se, že je ověřování nastaveno na „Žádné ověřování“, protože také nebudeme používat ověřování.
  11. Klikněte na Vytvořit.

Tím se vytvoří nový projekt rozhraní API ASP.NET Core v sadě Visual Studio. Vyberte složku řešení Controllers v okně Solution Explorer a kliknutím na „Přidat -> Controller ...“ vytvořte nový řadič s názvem DefaultController. Tento projekt použijeme v následujících částech tohoto článku.

Implementujte vzor možností v ASP.NET Core

Chcete-li použít vzor možností v ASP.NET Core, potřebujete balíček Microsoft.Extensions.Options.ConfigurationExtensions. Mimochodem, aplikace ASP.NET Core implicitně odkazují na balíček Microsoft.Extensions.Options.ConfigurationExtensions ve výchozím nastavení.

Při použití vzoru možností byste obvykle chtěli použít třídy k reprezentaci skupiny souvisejících nastavení. Při izolaci nastavení konfigurace do samostatných tříd vaše aplikace dodržuje následující zásady:

  • Oddělení obav: Nastavení použitá v různých modulech aplikace jsou od sebe oddělena.
  • Princip segregace rozhraní: Třídy, které představují tato nastavení, závisí pouze na nastavení konfigurace, které by použili.

Nyní zapište následující nastavení do souboru appsettings.json.

"DatabaseSettings": {

"Server": "localhost",

"Provider": "SQL Server",

"Database": "DemoDb",

"Port": 23,

"UserName": "sa",

"Password": "Joydip123"

  }

Všimněte si, že vaše třída konfigurace by měla mít veřejné vlastnosti get a set. Následující třídu využijeme k tomu, abychom si tato nastavení brzy přečetli.

 veřejná třída DatabaseSettings

    {

public string Server {get; soubor; }

public string Provider {get; soubor; }

public string Database {get; soubor; }

public int Port {get; soubor; }

veřejný řetězec UserName {get; soubor; }

public string Heslo {get; soubor; }

    }

Nyní můžete použít metodu Konfigurovat rozšíření IServiceCollection k svázání vaší třídy nastavení s vaší konfigurací, jak je znázorněno v úryvku kódu uvedeném níže.

public void ConfigureServices (služby IServiceCollection)

{

services.AddControllers ();

služby. Nakonfigurujte

(options => Configuration.GetSection ("DatabaseSettings"). Bind (options));

}

Přečtěte si konfigurační data v řadiči v ASP.NET Core

Nyní využijeme výhod DefaultController, který jsme vytvořili dříve, abychom ukázali, jak můžeme číst konfigurační data v ovladači. Rozhraní IOptions zpřístupňuje Value vlastnost, kterou lze použít k načtení instance třídy nastavení.

Následující fragment kódu ukazuje, jak můžete použít třídu DatabaseSettings ve vašem řadiči s názvem DefaultController. Všimněte si, jak se zde použilo vkládání závislostí (v tomto příkladu konstruktorový nástřik).

veřejná třída DefaultController: ControllerBase

{

private DatabaseSettings _settings;

public DefaultController (nastavení IOptions)

   {

_settings = settings.Value;

   }

// Metody akce

}

Vynutit pravidla pro konfigurace v ASP.NET Core

Můžete také vynutit určitá pravidla, jak je uvedeno v úryvku kódu níže. Všimněte si, jak je zde přidána instance třídy pomocníka pro SQL Server nebo MySQL jako singleton.

services.Configure (možnosti =>

 {

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

     {

services.AddSingleton (nový SqlDbHelper ());

     }

else if (options.Provider.ToLower (). Trim (). Equals ("mysql"))

     {

services.AddSingleton (nový MySqlDbHelper ());

     }

 });

Podpora pro silně zadanou konfiguraci je skvělá funkce v ASP.NET Core, která umožňuje použít oddělení obav a principy segregace rozhraní. V budoucím příspěvku zde o vzoru možností budu hovořit o ověření konfigurace a znovu načtitelné konfiguraci se zvláštním zaměřením na rozhraní IOptionsMonitor. Do té doby si můžete přečíst více o vzoru možností v online dokumentaci společnosti Microsoft zde.

Jak udělat více v ASP.NET a ASP.NET Core:

  • Jak používat ukládání do mezipaměti v paměti ASP.NET Core
  • Jak zpracovat chyby v ASP.NET Web API
  • Jak předat více parametrů metodám webového kontroleru API
  • Jak protokolovat metadata požadavků a odpovědí ve webovém rozhraní API ASP.NET
  • Jak pracovat s HttpModules v ASP.NET
  • Pokročilé správy verzí v ASP.NET Core Web API
  • Jak používat vkládání závislostí v ASP.NET Core
  • Jak pracovat s relacemi v ASP.NET
  • Jak pracovat s HTTPHandlers v ASP.NET
  • Jak používat IHostedService v ASP.NET Core
  • Jak využívat službu WCF SOAP v ASP.NET Core
  • Jak zlepšit výkon aplikací ASP.NET Core
  • Jak konzumovat webové rozhraní API ASP.NET Core pomocí RestSharp
  • Jak pracovat s protokolováním v ASP.NET Core
  • Jak používat MediatR v ASP.NET Core
  • Jak pracovat se stavem relace v ASP.NET Core
  • Jak používat Nancy v ASP.NET Core
  • Vysvětlení vazby parametrů v ASP.NET Web API
  • Jak nahrávat soubory v ASP.NET Core MVC
  • Jak implementovat globální zpracování výjimek ve webovém rozhraní API ASP.NET Core
  • Jak implementovat kontroly stavu v ASP.NET Core
  • Osvědčené postupy při ukládání do mezipaměti v ASP.NET
  • Jak používat zasílání zpráv Apache Kafka v .NET
  • Jak povolit CORS ve vašem webovém rozhraní API
  • Kdy použít WebClient vs. HttpClient vs. HttpWebRequest
  • Jak pracovat s Redis Cache v .NET
  • Kdy použít Task.WaitAll vs. Task.WhenAll v .NET
$config[zx-auto] not found$config[zx-overlay] not found