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

Dane z usługi App Configuration można załadować jako Ustawienia aplikacji .NET Framework. Aby uzyskać więcej informacji, zobacz przewodnik Szybki start. Jednak zgodnie z założeniami programu .NET Framework Ustawienia aplikacji mogą być odświeżane tylko po ponownym uruchomieniu aplikacji. Dostawca .NET usługi App Configuration to biblioteka .NET Standard. Obsługuje ona buforowanie i odświeżanie konfiguracji dynamicznie bez ponownego uruchamiania aplikacji. W tym samouczku pokazano, jak wdrożyć dynamiczne aktualizacje konfiguracji w aplikacji konsolowej programu .NET Framework.

Z tego samouczka dowiesz się, jak wykonywać następujące czynności:

  • Skonfiguruj aplikację .NET Framework, aby zaktualizować jej konfigurację w odpowiedzi na zmiany w sklepie App Configuration.
  • Wstrzykiwanie najnowszej konfiguracji w aplikacji.

Wymagania wstępne

Dodawanie wartości klucza

Dodaj następującą wartość klucza do magazynu App Configuration i pozostaw wartości domyślne Etykieta i Typ zawartości. Aby uzyskać więcej informacji na temat dodawania wartości klucz-wartości do magazynu przy użyciu witryny Azure Portal lub interfejsu wiersza polecenia, przejdź do artykułu Create a key-value (Tworzenie wartości klucza).

Key Wartość
TestApp:Ustawienia:Message Dane z konfiguracji aplikacja systemu Azure

Tworzenie aplikacji konsolowej .NET Framework

  1. Uruchom program Visual Studio i wybierz pozycję Utwórz nowy projekt.

  2. W obszarze Tworzenie nowego projektu przefiltruj typ projektu Konsola i wybierz pozycję Aplikacja konsolowa (.NET Framework) przy użyciu języka C# z listy szablonów projektu. Naciśnij przycisk Dalej.

  3. W obszarze Konfigurowanie nowego projektu wprowadź nazwę projektu. W obszarze Framework wybierz pozycję .NET Framework 4.7.2 lub nowszy. Kliknij przycisk Utwórz.

Ponowne ładowanie danych z usługi App Configuration

  1. Kliknij projekt prawym przyciskiem myszy i wybierz polecenie Zarządzaj pakietami NuGet. Na karcie Przeglądaj wyszukaj i dodaj do projektu najnowszą wersję następującego pakietu NuGet.

    Microsoft.Extensions.Configuration.AzureAppConfiguration

  2. Otwórz Program.cs i dodaj następujące przestrzenie nazw.

    using Microsoft.Extensions.Configuration;
    using Microsoft.Extensions.Configuration.AzureAppConfiguration;
    
  3. Dodaj dwie zmienne do przechowywania obiektów związanych z konfiguracją.

    private static IConfiguration _configuration;
    private static IConfigurationRefresher _refresher;
    
  4. Zaktualizuj metodę Main w celu nawiązania połączenia z usługą App Configuration przy użyciu określonych opcji odświeżania.

    static void Main(string[] args)
    {
        var builder = new ConfigurationBuilder();
        builder.AddAzureAppConfiguration(options =>
        {
            options.Connect(Environment.GetEnvironmentVariable("ConnectionString"))
                    // Load all keys that start with `TestApp:`.
                    .Select("TestApp:*")
                    // Configure to reload the key 'TestApp:Settings:Message' if it is modified.
                    .ConfigureRefresh(refresh =>
                    {
                        refresh.Register("TestApp:Settings:Message")
                               .SetCacheExpiration(TimeSpan.FromSeconds(10));
                    });
    
            _refresher = options.GetRefresher();
        });
    
        _configuration = builder.Build();
        PrintMessage().Wait();
    }
    

    W metodzie ConfigureRefresh klucz w magazynie usługi App Configuration jest zarejestrowany do monitorowania zmian. Metoda Register ma opcjonalny parametr refreshAll logiczny, który może służyć do wskazania, czy wszystkie wartości konfiguracji powinny zostać odświeżone, jeśli zarejestrowany klucz ulegnie zmianie. W tym przykładzie zostanie odświeżony tylko klucz TestApp:Ustawienia:Message. Metoda SetCacheExpiration określa minimalny czas, który musi upłynąć przed wprowadzeniem nowego żądania do usługi App Configuration, aby sprawdzić, czy nie wprowadzono żadnych zmian konfiguracji. W tym przykładzie zastąpisz domyślny czas wygaśnięcia 30 sekund, określając zamiast tego czas 10 sekund w celach demonstracyjnych.

  5. Dodaj metodę o nazwie PrintMessage() , która wyzwala odświeżanie danych konfiguracji z usługi App Configuration.

    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!");
    }
    

    ConfigureRefresh Wywołanie samej metody nie spowoduje automatycznego odświeżenia konfiguracji. Wywołasz metodę TryRefreshAsync z interfejsu IConfigurationRefresher , aby wyzwolić odświeżanie. Ten projekt polega na unikaniu żądań wysyłanych do usługi App Configuration nawet wtedy, gdy aplikacja jest bezczynna. Możesz dołączyć wywołanie TryRefreshAsync , w którym rozważasz aktywną aplikację. Może to być na przykład podczas przetwarzania komunikatu przychodzącego, zamówienia lub iteracji złożonego zadania. Może również znajdować się w czasomierzu, jeśli aplikacja jest aktywna przez cały czas. W tym przykładzie wywołasz wywołanie TryRefreshAsync po naciśnięciu klawisza Enter. Należy pamiętać, że nawet jeśli wywołanie TryRefreshAsync zakończy się niepowodzeniem z jakiegokolwiek powodu, aplikacja będzie nadal używać buforowanej konfiguracji. Kolejna próba zostanie podjęta po upływie skonfigurowanego czasu wygaśnięcia pamięci podręcznej, a TryRefreshAsync wywołanie zostanie ponownie wyzwolone przez działanie aplikacji. Wywołanie TryRefreshAsync jest operacją no-op przed upływem skonfigurowanego czasu wygaśnięcia pamięci podręcznej, więc jej wpływ na wydajność jest minimalny, nawet jeśli jest często wywoływany.

Lokalne kompilowanie i uruchamianie aplikacji

  1. Ustaw zmienną środowiskową o nazwie Połączenie ionString na klucz tylko do odczytu parametry połączenia uzyskany podczas tworzenia magazynu usługi App Configuration.

    Jeśli używasz wiersza polecenia systemu Windows, uruchom następujące polecenie:

    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"
    
  2. Uruchom ponownie program Visual Studio, aby umożliwić zastosowanie zmiany.

  3. Naciśnij klawisze Ctrl + F5, aby skompilować i uruchomić aplikację konsolową.

    App launch local

  4. W witrynie Azure Portal przejdź do Eksploratora konfiguracji magazynu usługi App Configuration i zaktualizuj wartość następującego klucza.

    Key Wartość
    TestApp:Ustawienia:Message Dane z konfiguracji aplikacja systemu Azure — zaktualizowano
  5. Po powrocie do uruchomionej aplikacji naciśnij klawisz Enter, aby wyzwolić odświeżenie i wydrukować zaktualizowaną wartość w wierszu polecenia lub oknie programu PowerShell.

    App refresh local

    Uwaga

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

Czyszczenie zasobów

Jeśli nie chcesz nadal korzystać z 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 zasoby w niej są trwale usuwane. Upewnij się, że nie usuniesz przypadkowo nieprawidłowej grupy zasobów ani 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 zasób oddzielnie z odpowiedniego okienka zamiast usuwać grupę zasobów.

  1. Zaloguj się do witryny Azure Portal i wybierz pozycję Grupy zasobów.
  2. W polu Filtruj według nazwy wprowadź nazwę grupy zasobów.
  3. Na liście wyników 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. Wprowadź nazwę grupy zasobów, aby potwierdzić, 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 Framework w celu dynamicznego odświeżania ustawień konfiguracji z poziomu usługi App Configuration. Aby dowiedzieć się, jak włączyć konfigurację dynamiczną w aplikacji internetowej ASP.NET (.NET Framework), przejdź do następnego samouczka:

Aby dowiedzieć się, jak używać tożsamości zarządzanej platformy Azure w celu usprawnienia dostępu do usługi App Configuration, przejdź do następnego samouczka: