Sdílet prostřednictvím


Kurz: Použití dynamické konfigurace ve službě .NET background

Data z konfigurace aplikace je možné načíst jako nastavení aplikace v aplikaci .NET. Další informace najdete v rychlém průvodci. Jak je však navrženo rozhraním .NET, nastavení aplikace se může aktualizovat pouze po restartování aplikace. Zprostředkovatel Konfigurace aplikace .NET je knihovna .NET Standard. Podporuje dynamicky ukládání do mezipaměti a aktualizaci konfigurace bez restartování aplikace. V tomto kurzu se dozvíte, jak můžete implementovat dynamické aktualizace konfigurace ve službě .NET background.

V tomto kurzu se naučíte:

  • Nastavte službu .NET na pozadí tak, aby aktualizovala svou konfiguraci v reakci na změny v App Configuration Storu.
  • Využití nejnovější konfigurace ve službě na pozadí

Požadavky

Přidání hodnoty klíče

Přidejte do obchodu App Configuration následující klíč-hodnota a ponechte popisek a typ obsahu s výchozími hodnotami. Další informace o tom, jak přidat hodnoty klíčů do úložiště pomocí webu Azure Portal nebo rozhraní příkazového řádku, najdete v tématu Vytvoření hodnoty klíče.

Klíč Hodnota
TestApp:Settings:Message Data z konfigurace Aplikace Azure

Vytvořte .NET službu na pozadí

K vytvoření nového projektu aplikace .NET použijete rozhraní příkazového řádku .NET (CLI ). Výhodou použití rozhraní příkazového řádku .NET přes Visual Studio je, že je k dispozici na platformách Windows, macOS a Linux. Případně můžete použít předinstalované nástroje dostupné v Azure Cloud Shellu.

  1. Vytvořte novou složku pro váš projekt.

  2. Spuštěním následujícího příkazu v nové složce vytvořte nový projekt služby .NET background:

    dotnet new worker
    

Opětovné načtení dat z konfigurace aplikace

  1. Přidejte odkazy na Microsoft.Extensions.Configuration.AzureAppConfiguration balíček NuGet spuštěním následujícího příkazu:

    dotnet add package Microsoft.Extensions.Configuration.AzureAppConfiguration
    
  2. Spuštěním následujícího příkazu obnovte balíčky pro váš projekt:

    dotnet restore
    
  3. Otevřete Program.cs a přidejte následující příkazy:

    using Microsoft.Extensions.Configuration;
    using Microsoft.Extensions.Configuration.AzureAppConfiguration;
    
  4. Připojte se ke službě App Configuration buď pomocí Microsoft Entra ID (doporučeno), nebo připojovacího řetězce.

    Použijete DefaultAzureCredential k ověření ve službě App Configuration Store. Postupujte podle pokynů a přiřaďte roli Čtenář dat konfigurace aplikace svým přihlašovacím údajům. Před spuštěním aplikace nezapomeňte povolit dostatek času, než se oprávnění rozšíří.

    // Existing code in Program.cs
    // ... ...
    
    var builder = Host.CreateApplicationBuilder(args);
    
    builder.Configuration.AddAzureAppConfiguration(options =>
    {
        string endpoint = Environment.GetEnvironmentVariable("Endpoint"); 
        options.Connect(new Uri(endpoint), new DefaultAzureCredential());
            // Load all keys that start with `TestApp:` and have no label.
            .Select("TestApp:*")
            // Reload configuration if any selected key-values have changed.
            .ConfigureRefresh(refreshOptions =>
            {
                refreshOptions.RegisterAll();
            });
    
        // Register the refresher so that the Worker service can consume it through DI
        builder.Services.AddSingleton(options.GetRefresher());
    });
    
    // The rest of existing code in Program.cs
    // ... ...
    

    ConfigureRefresh Uvnitř metody zavoláte metoduRegisterAll, která zprostředkovateli konfigurace aplikace dá pokyn, aby znovu načítal celou konfiguraci, kdykoli zjistí změnu v některé z vybraných hodnot klíče (ty, které začínají testAppem: a nemají žádný popisek). Pro více informací o sledování změn konfigurace viz Nejlepší praxe pro aktualizaci konfigurace.

    Návod

    Do metody můžete přidat volání refreshOptions.SetRefreshInterval , které určuje minimální čas mezi aktualizacemi konfigurace. V tomto příkladu použijete výchozí hodnotu 30 sekund. Pokud potřebujete snížit počet požadavků provedených ve službě App Configuration Store, upravte hodnotu na vyšší hodnotu.

  5. Otevřete Worker.cs. Vkládejte IConfiguration a IConfigurationRefresher do služby Worker a zaznamenávejte konfigurační data z App Configuration.

    public class Worker : BackgroundService
    {
        private readonly ILogger<Worker> _logger;
        private readonly IConfiguration _configuration;
        private readonly IConfigurationRefresher _refresher;
    
        public Worker(ILogger<Worker> logger, IConfiguration configuration, IConfigurationRefresher refresher)
        {
            _logger = logger ?? throw new ArgumentNullException(nameof(logger));
            _configuration = configuration ?? throw new ArgumentNullException(nameof(configuration));
            _refresher = refresher ?? throw new ArgumentNullException(nameof(refresher));
        }
    
        protected override async Task ExecuteAsync(CancellationToken stoppingToken)
        {
            while (!stoppingToken.IsCancellationRequested)
            {
                // Intentionally not await TryRefreshAsync to avoid blocking the execution.
                _refresher.TryRefreshAsync(stoppingToken);
    
                if (_logger.IsEnabled(LogLevel.Information))
                {
                    _logger.LogInformation(_configuration["TestApp:Settings:Message"] ?? "No data.");
                }
    
                await Task.Delay(TimeSpan.FromSeconds(30), stoppingToken);
            }
        }
    }
    

    ConfigureRefresh Volání samotné metody nezpůsobí automatickou aktualizaci konfigurace. Zavoláte metodu TryRefreshAsync z rozhraní IConfigurationRefresher , která aktivuje aktualizaci. Tento návrh spočívá v tom, že se vyhnete požadavkům odesílaným do služby App Configuration, i když je vaše aplikace nečinná. Můžete zahrnout volání, TryRefreshAsync ve kterém považujete aplikaci za aktivní. Může to být například, když zpracováváte příchozí zprávu, objednávku nebo iteraci složité úlohy. Může být také v časovači, pokud je vaše aplikace aktivní po celou dobu. V tomto příkladu voláte TryRefreshAsync při každém spuštění služby na pozadí. Mějte na paměti, že i když volání TryRefreshAsync z nějakého důvodu selže, bude vaše aplikace i nadále používat konfiguraci uloženou v mezipaměti. Další pokus bude proveden, až uplyne nakonfigurovaný interval aktualizace a volání TryRefreshAsync bude znovu aktivováno aktivitou vaší aplikace. Volání TryRefreshAsync je no-op před uplynutím nakonfigurovaného intervalu aktualizace, takže jeho dopad na výkon je minimální, i když se volá často.

Sestavení a místní spuštění aplikace

  1. Nastavte proměnnou prostředí.

    Nastavte proměnnou prostředí s názvem Endpoint na koncový bod vašeho úložiště App Configuration, který najdete v části Přehled svého obchodu na portálu Azure.

    Pokud používáte příkazový řádek systému Windows, spusťte následující příkaz a restartujte příkazový řádek, aby se změna projevila:

    setx Endpoint "<endpoint-of-your-app-configuration-store>"
    

    Pokud používáte PowerShell, spusťte následující příkaz:

    $Env:Endpoint = "<endpoint-of-your-app-configuration-store>"
    

    Pokud používáte macOS nebo Linux, spusťte následující příkaz:

    export Endpoint='<endpoint-of-your-app-configuration-store>'
    
  2. Spuštěním následujícího příkazu sestavte aplikaci.

    dotnet build
    
  3. Po úspěšném dokončení sestavení spusťte aplikaci místně spuštěním následujícího příkazu.

    dotnet run
    
  4. V konzole by se měly zobrazit následující výstupy.

    Snímek obrazovky se službou na pozadí

  5. Na Azure portálu přejděte do Průzkumníka konfigurace úložiště App Configuration a aktualizujte hodnotu následujícího klíče.

    Klíč Hodnota
    TestApp:Settings:Message Data z konfigurace Aplikace Azure – aktualizována
  6. Chvíli počkejte, než se časové období intervalu aktualizace prodá. Zobrazí se změněné výstupy konzoly.

    Snímek obrazovky s obnovenou službou na pozadí

Uvolnit zdroje

Pokud nechcete dál používat prostředky vytvořené v tomto článku, odstraňte skupinu prostředků, kterou jste tady vytvořili, abyste se vyhnuli poplatkům.

Důležité

Odstranění skupiny prostředků je nevratné. Skupina prostředků a všechny prostředky v ní se trvale odstraní. Dbejte na to, abyste omylem neodstranili nesprávnou skupinu prostředků nebo prostředky. Pokud jste vytvořili prostředky pro tento článek ve skupině prostředků, která obsahuje další prostředky, které chcete zachovat, odstraňte jednotlivé prostředky z příslušného podokna místo odstranění skupiny prostředků.

  1. Přihlaste se k webu Azure Portal a vyberte skupiny prostředků.
  2. Do pole Filtrovat podle názvu zadejte název vaší skupiny prostředků.
  3. V seznamu výsledků vyberte název skupiny prostředků, abyste zobrazili přehled.
  4. Vyberte Odstranit skupinu prostředků.
  5. Zobrazí se výzva k potvrzení odstranění skupiny prostředků. Potvrďte název skupiny prostředků a vyberte Odstranit.

Po několika okamžicích se skupina prostředků a všechny její prostředky vymažou.

Další kroky

V tomto kurzu jste povolili službu .NET background tak, aby dynamicky aktualizovala nastavení konfigurace z app Configuration. Pokud chcete zjistit, jak povolit dynamickou konfiguraci ve webové aplikaci ASP.NET, pokračujte dalším kurzem:

Pokud chcete zjistit, jak pomocí spravované identity Azure zjednodušit přístup ke službě App Configuration, pokračujte dalším kurzem: