Samouczek: używanie konfiguracji dynamicznej w aplikacji .NET Core

Biblioteka kliencka konfiguracji aplikacji platformy .NET Core obsługuje aktualizowanie konfiguracji na żądanie bez powodowania ponownego uruchomienia aplikacji. Można to wdrożyć, najpierw pobierając wystąpienie z IConfigurationRefresher opcji dla dostawcy konfiguracji, a następnie wywołując je TryRefreshAsync w dowolnym miejscu w kodzie.

Aby zachować zaktualizowane ustawienia i uniknąć zbyt wielu wywołań w magazynie konfiguracji, dla każdego ustawienia zostanie użyta pamięć podręczna. Do momentu wygaśnięcia zbuforowanej wartości ustawienia operacja odświeżania nie aktualizuje wartości, nawet jeśli wartość została zmieniona w magazynie konfiguracji. Domyślny czas wygaśnięcia dla każdego żądania wynosi 30 sekund, ale w razie potrzeby można go zastąpić.

W tym samouczku pokazano, jak zaimplementować dynamiczne aktualizacje konfiguracji w swoim kodzie. Jest ona oparta na aplikacji wprowadzonej w przewodnikach Szybki Start. Przed kontynuowaniem należy najpierw utworzyć aplikację platformy .NET Core z konfiguracją aplikacji .

Aby wykonać kroki opisane w tym samouczku, można użyć dowolnego edytora kodu. Visual Studio Code jest doskonałym rozwiązaniem dostępnym na platformach Windows, MacOS i Linux.

Ten samouczek zawiera informacje na temat wykonywania następujących czynności:

  • Skonfiguruj aplikację platformy .NET Core w celu zaktualizowania jej konfiguracji w odpowiedzi na zmiany w magazynie konfiguracji aplikacji.
  • Korzystaj z najnowszej konfiguracji w aplikacji.

Wymagania wstępne

Aby wykonać ten samouczek, zainstaluj zestaw .NET Core SDK.

Jeśli nie masz subskrypcji platformy Azure, przed rozpoczęciem Utwórz bezpłatne konto .

Ponowne ładowanie danych z usługi App Configuration

Otwórz program programy. cs i zaktualizuj plik, aby dodać odwołanie do System.Threading.Tasks przestrzeni nazw, aby określić konfigurację odświeżania w AddAzureAppConfiguration metodzie i wyzwalać ręczne odświeżanie przy użyciu TryRefreshAsync metody.

using System;
using System.Threading.Tasks;

namespace TestConsole
{
class Program
{
    private static IConfiguration _configuration = null;
    private static IConfigurationRefresher _refresher = null;

    static void Main(string[] args)
    {
        var builder = new ConfigurationBuilder();
        builder.AddAzureAppConfiguration(options =>
        {
            options.Connect(Environment.GetEnvironmentVariable("ConnectionString"))
                    .ConfigureRefresh(refresh =>
                    {
                        refresh.Register("TestApp:Settings:Message")
                               .SetCacheExpiration(TimeSpan.FromSeconds(10));
                    });
                    
                    _refresher = options.GetRefresher();
        });

        _configuration = builder.Build();
        PrintMessage().Wait();
    }

    private static async Task PrintMessage()
    {
        Console.WriteLine(_configuration["TestApp:Settings:Message"] ?? "Hello world!");

        // Wait for the user to press Enter
        Console.ReadLine();

        await _refresher.TryRefreshAsync();
        Console.WriteLine(_configuration["TestApp:Settings:Message"] ?? "Hello world!");
    }
}
}

Ta ConfigureRefresh Metoda służy do określania ustawień służących do aktualizowania danych konfiguracji z magazynem konfiguracji aplikacji w przypadku wyzwolenia operacji odświeżania. Wystąpienie IConfigurationRefresher można pobrać przez wywołanie GetRefresher metody w opcjach dostarczonych do AddAzureAppConfiguration metody, a TryRefreshAsync Metoda w tym wystąpieniu może służyć do wyzwalania operacji odświeżania wszędzie w kodzie.

Uwaga

Domyślny czas wygaśnięcia pamięci podręcznej dla ustawienia konfiguracji wynosi 30 sekund, ale można go zastąpić, wywołując SetCacheExpiration metodę z inicjatora opcji przekazaną jako argument do ConfigureRefresh metody.

Lokalne kompilowanie i uruchamianie aplikacji

  1. Ustaw zmienną środowiskową o nazwie ConnectionString i ustaw ją na klucz dostępu do magazynu konfiguracji aplikacji. Jeśli używasz wiersza polecenia systemu Windows, uruchom następujące polecenie i ponownie uruchom wiersz polecenia, aby zezwolić na wprowadzenie zmiany:

     setx ConnectionString "connection-string-of-your-app-configuration-store"
    

    Jeśli używasz programu Windows PowerShell, uruchom następujące polecenie:

     $Env:ConnectionString = "connection-string-of-your-app-configuration-store"
    

    Jeśli używasz macOS lub Linux, uruchom następujące polecenie:

     export ConnectionString='connection-string-of-your-app-configuration-store'
    
  2. Uruchom następujące polecenie, aby skompilować aplikację konsolową:

     dotnet build
    
  3. Po pomyślnym zakończeniu kompilacji Uruchom następujące polecenie, aby uruchomić aplikację lokalnie:

     dotnet run
    

    Lokalne uruchamianie aplikacji z przewodnika Szybki start

  4. Zaloguj się w witrynie Azure Portal. Wybierz pozycję wszystkie zasoby, a następnie wybierz wystąpienie magazynu konfiguracji aplikacji utworzone w ramach przewodnika Szybki Start.

  5. Wybierz pozycję Eksplorator konfiguracji i zaktualizuj wartości następujących kluczy:

    Klucz Wartość
    TestApp:Settings:Message Dane z konfiguracji aplikacji platformy Azure — zaktualizowane
  6. Naciśnij klawisz ENTER, aby wyzwolić odświeżanie i wydrukować zaktualizowaną wartość w wierszu polecenia lub w oknie programu PowerShell.

    Lokalne odświeżanie aplikacji z przewodnika Szybki start

    Uwaga

    Ponieważ czas wygaśnięcia pamięci podręcznej został ustawiony na 10 sekund przy użyciu SetCacheExpiration metody podczas określania konfiguracji dla operacji odświeżania, wartość ustawienia konfiguracji będzie aktualizowana tylko wtedy, gdy od czasu ostatniego odświeżenia tego ustawienia upłynie co najmniej 10 sekund.

Czyszczenie zasobów

Jeśli nie chcesz nadal używać zasobów utworzonych w tym artykule, Usuń utworzoną tutaj grupę zasobów, aby uniknąć naliczania opłat.

Ważne

Usunięcie grupy zasobów jest nieodwracalne. Grupa zasobów i wszystkie znajdujące się w niej zasoby są trwale usuwane. Uważaj, aby nie usunąć przypadkowo niewłaściwych zasobów lub niewłaściwej grupy zasobów. Jeśli zasoby dla tego artykułu zostały utworzone w grupie zasobów zawierającej inne zasoby, które chcesz zachować, Usuń każdy z nich oddzielnie, zamiast usuwać grupę zasobów.

  1. Zaloguj się do Azure Portali wybierz pozycję grupy zasobów.
  2. W polu Filtruj według nazwy wprowadź nazwę grupy zasobów.
  3. Z listy wynik wybierz nazwę grupy zasobów, aby wyświetlić przegląd.
  4. Wybierz pozycję Usuń grupę zasobów.
  5. Zobaczysz prośbę o potwierdzenie usunięcia grupy zasobów. Aby potwierdzić, wprowadź nazwę grupy zasobów, a następnie wybierz pozycję Usuń.

Po kilku chwilach Grupa zasobów i wszystkie jej zasoby zostaną usunięte.

Następne kroki

W tym samouczku włączono aplikację .NET Core do dynamicznego odświeżania ustawień konfiguracji z konfiguracji aplikacji. Aby dowiedzieć się, jak za pomocą tożsamości zarządzanej platformy Azure usprawnić dostęp do konfiguracji aplikacji, przejdź do następnego samouczka.