Руководство: Использование динамической конфигурации в решении Aspire

В этом руководстве показано, как включить динамические обновления конфигурации в решении Aspire. Он основан на веб-приложении, представленном в кратком руководстве. Приложение будет использовать библиотеку поставщика конфигурации приложений для его встроенных возможностей кэширования конфигурации и обновления. Прежде чем продолжить, сначала завершите создание решения Aspire с помощью конфигурации приложений Azure .

В этом руководстве вы узнаете, как:

  • Настройте приложение для обновления конфигурации в ответ на изменения в магазине конфигурации приложений.
  • Вставьте последнюю конфигурацию в приложение.

Предпосылки

Завершите настройку: Создайте решение Aspire с Azure App Configuration.

Повторная загрузка данных из App Configuration

  1. Перейдите в Web каталог проекта (созданный на этапах предварительных требований ). Выполните следующую команду, чтобы добавить Microsoft.Azure.AppConfiguration.AspNetCore пакет Nuget.

    dotnet add package Microsoft.Azure.AppConfiguration.AspNetCore
    
  2. Откройте AppHost.cs и обновите метод, который вы добавили во время краткого руководства.

    builder.AddAzureAppConfiguration(
        "appconfiguration",
        configureOptions: options =>
        {
            // Load all keys that start with `TestApp:` and have no label.
            options.Select("TestApp:*", LabelFilter.Null);
            // Reload configuration if any selected key-values have changed.
            options.ConfigureRefresh(refreshOptions =>
                refreshOptions.RegisterAll());
        });
    

    Метод Select используется для загрузки всех значений ключей, имя ключа которых начинается с TestApp: и не имеет метки. Метод можно вызывать Select несколько раз для загрузки конфигураций с различными префиксами или метками. Если вы предоставляете общий доступ к одному магазину конфигурации приложений с несколькими приложениями, этот подход помогает загрузить конфигурацию только для текущего приложения, а не загружать все из магазина.

    Внутри метода ConfigureRefresh вы вызываете метод RegisterAll, чтобы указать поставщику App Configuration перезагрузить всю конфигурацию при обнаружении изменений в любом из выбранных ключевых значений (начиная с TestApp: и без ярлыка). Дополнительные сведения об изменениях конфигурации мониторинга см. в рекомендациях по обновлению конфигурации.

  3. Добавьте ПО промежуточного слоя конфигурации приложений Azure в коллекцию служб приложения.

    Обновите Program.cs с помощью следующего кода.

    // Existing code in Program.cs
    // ... ...
    
    // Add Azure App Configuration middleware to the container of services.
    builder.Services.AddAzureAppConfiguration();
    
    var app = builder.Build();
    
    // The rest of existing code in program.cs
    // ... ...
    
  4. Вызовите метод UseAzureAppConfiguration . Это позволяет вашему приложению использовать промежуточное программное обеспечение для конфигурирования приложения, чтобы автоматически обновлять конфигурацию.

    Обновите Program.cs с помощью следующего кода.

    // Existing code in Program.cs
    // ... ...
    
    var app = builder.Build();
    
    if (!app.Environment.IsDevelopment())
    {
        app.UseExceptionHandler("/Error");
        app.UseHsts();
    }
    
    // Use Azure App Configuration middleware for dynamic configuration refresh.
    app.UseAzureAppConfiguration();
    
    // The rest of existing code in program.cs
    // ... ...
    

Обновление конфигурации на основе запросов

Обновление конфигурации активируется входящими запросами к веб-приложению. Обновление не будет происходит, если ваше приложение неактивно. Когда ваше приложение активно, промежуточное ПО конфигурации приложения отслеживает все ключи, зарегистрированные на обновление в вызове ConfigureRefresh. ПО промежуточного слоя активируется при каждом входящем запросе к приложению. Однако посредник отправит запросы для проверки значения в App Configuration только после истечения установленного интервала обновления.

  • Если запрос на настройку приложений для обнаружения изменений завершается сбоем, приложение продолжит использовать кэшированную конфигурацию. Новые попытки проверить наличие изменений будут периодически выполняться при наличии новых входящих запросов к приложению.
  • Обновление конфигурации выполняется асинхронно при обработке входящих запросов приложения. Он не будет блокировать или замедлять входящий запрос, который активировал обновление. Запрос, активировав обновление, может не получить обновленные значения конфигурации, но последующие запросы получат новые значения конфигурации.
  • Чтобы гарантировать активацию промежуточного ПО, вызовите метод app.UseAzureAppConfiguration() как можно раньше в вашем конвейере обработки запросов, так, чтобы другое промежуточное ПО не пропустило его в вашем приложении.

Локальный запуск приложения

  1. Запустите проект AppHost. Перейдите на панель мониторинга Aspire и откройте веб-приложение.

    Снимок экрана: веб-приложение с исходным сообщением из конфигурации приложений Azure.

  2. На портале Azure перейдите в обозреватель конфигураций хранилища Конфигурации приложений и обновите значение следующего ключа.

    Key Ценность
    TestApp:Settings:Message Привет из Azure App Configuration - обновлено!
  3. Обновите браузер несколько раз. Когда интервал обновления истекает через 30 секунд, страница отображается с обновленным содержимым.

    Снимок экрана: веб-приложение с обновленным сообщением из конфигурации приложений Azure.

  4. Перейдите на панель мониторинга Aspire и откройте структурированные журналы. Вы увидите, что webfrontend ресурс содержит журнал с сообщением "Конфигурация перезагрузилась".

    Снимок экрана: панель мониторинга Aspire с структурированными журналами.

Локальный запуск приложения

  1. Запустите проект AppHost. Перейдите на панель мониторинга Aspire и откройте веб-приложение.

    Снимок экрана: веб-приложение с исходным сообщением из конфигурации приложений Azure.

  2. Перейдите в пользовательский интерфейс эмулятора, измените значение следующего ключа.

    Key Ценность
    TestApp:Settings:Message Привет из Azure App Configuration - обновлено!
  3. Обновите браузер несколько раз. Когда интервал обновления истекает через 30 секунд, страница отображается с обновленным содержимым.

    Снимок экрана: веб-приложение с обновленным сообщением из конфигурации приложений Azure.

  4. Перейдите на панель мониторинга Aspire и откройте структурированные журналы. Вы увидите, что webfrontend ресурс содержит журнал с сообщением "Конфигурация перезагрузилась".

    Снимок экрана: панель мониторинга Aspire с структурированными журналами.

Дальнейшие шаги

В этом руководстве вы включили приложение Aspire для динамического обновления параметров конфигурации из конфигурации приложений. Чтобы узнать, как добавить флаг функции в приложение Aspire, перейдите к следующему руководству.