Быстрый старт: Добавление флагов функций в приложение Aspire

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

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

Предпосылки

Следуйте документам, чтобы создать решение Aspire с динамической конфигурацией.

Создание флага компонента

Добавьте флаг компонента с именем Beta в хранилище конфигурации приложений (созданное на этапах предварительных требований ) и оставьте метку и описание со значениями по умолчанию. Дополнительные сведения о добавлении флагов компонентов в хранилище с помощью портал Azure или интерфейса командной строки см. в разделе "Создание флага функции".

Снимок экрана: добавление флага функции с именем Beta.

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

Key Тип контента Ценность
.appconfig.featureflag/Beta application/vnd.microsoft.appconfig.ff+json; charset=utf-8 {"id":"Beta","enabled":false}

Снимок экрана: добавление флага компонента в эмулятор.

Флаги функций — это специальные ключевые значения, определяющие флаги компонентов Майкрософт. Поставщики конфигурации определяют флаг функции по определенному типу контента и префиксу ключа. Значение флага фичи — это объект JSON, который следует Microsoft Feature Flag schema.

  • Тип контента флага компонента: application/vnd.microsoft.appconfig.ff+json;charset=utf-8
  • Префикс ключа флага компонента: .appconfig.featureflag/

Использование флага компонента

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

    dotnet add package Microsoft.FeatureManagement.AspNetCore
    
  2. Откройте Program.cs и добавьте вызов UseFeatureFlags метода внутри AddAzureAppConfiguration вызова. Вы можете подключиться к конфигурации приложения, используя либо Microsoft Entra ID (рекомендуется), либо строку подключения. Следующий фрагмент кода демонстрирует использование Microsoft Entra ID.

    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 key-values have changed.
            options.ConfigureRefresh(refreshOptions =>
                refreshOptions.RegisterAll());
            // Load all feature flags with no label
            options.UseFeatureFlags();
        });
    

    Подсказка

    Если параметр не передается методу UseFeatureFlags , он загружает все флаги функций без меток в хранилище конфигурации приложений. Интервал обновления по умолчанию флагов компонентов составляет 30 секунд. Это поведение можно настроить с помощью FeatureFlagOptions параметра. Например, следующий фрагмент кода загружает только флаги функций, начинающиеся с TestApp: в имениключа и разработки меток. Код также изменяет время обновления на 5 минут. Обратите внимание, что это время интервала обновления отличается от того, что для регулярных значений ключей.

    options.UseFeatureFlags(featureFlagOptions =>
    {
        featureFlagOptions.Select("TestApp:*", "dev");
        featureFlagOptions.CacheExpirationInterval = TimeSpan.FromMinutes(5);
    });
    
  3. Добавьте управление функциями в коллекцию служб приложения путем вызова AddFeatureManagement.

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

    // Existing code in Program.cs
    // ... ...
    
    // Add Azure App Configuration middleware to the container of services.
    builder.Services.AddAzureAppConfiguration();
    
    // Add feature management to the container of services.
    builder.Services.AddFeatureManagement();
    
    var app = builder.Build();
    
    // The rest of existing code in program.cs
    // ... ...
    

    Добавьте using Microsoft.FeatureManagement; в начало файла, если он отсутствует.

  4. Добавьте новую страницу Razor с именем Beta.razor в каталоге Components/Pages .

    @page "/beta"
    
    @inject IFeatureManager FeatureManager
    
    @if (isBetaEnabled)
    {
        <h1>This is the beta website.</h1>
    } 
    else
    {
        <h1>Not found.</h1>
    }
    
    @code {
        private bool isBetaEnabled;
    
        protected override async Task OnInitializedAsync()
        {
            isBetaEnabled = await FeatureManager.IsEnabledAsync("Beta");
        }
    }
    
  5. Откройте _Imports.razor и импортируйте пространство имен управления функциями.

    @using Microsoft.FeatureManagement
    
  6. Откройте NavMenu.razor в каталоге Components/Layout .

    Вставьте IVariantFeatureManager в начало файла.

    @inject IVariantFeatureManager FeatureManager
    
    <div class="top-row ps-3 navbar navbar-dark">
        <div class="container-fluid">
            <a class="navbar-brand" href="">AspireApp</a>
        </div>
    </div>
    

    Добавьте следующий код.

    // Existing code
    // ... ...
    <div class="nav-scrollable" onclick="document.querySelector('.navbar-toggler').click()">
        <nav class="nav flex-column">
            // Existing code
            // ... ...
    
            @if (isBetaEnabled)
            {
                <div class="nav-item px-3">
                    <NavLink class="nav-link" href="beta">
                        <span class="bi bi-list-nested" aria-hidden="true"></span> Beta
                    </NavLink>
                </div>
            }
        </nav>
    </div>
    
    @code {
        private bool isBetaEnabled;
    
        protected override async Task OnInitializedAsync()
        {
            isBetaEnabled = await FeatureManager.IsEnabledAsync("Beta");
        }
    }
    

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

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

    Снимок экрана: веб-приложение с тремя кнопками на боковой панели.

  2. На портале Azure перейдите к диспетчеру компонентов магазина конфигурации приложений и найдите флаг бета-функции . Включите флаг, выбрав флажок в разделе "Включено".

  3. Обновите страницу несколько раз. После прохождения интервала обновления страница будет отображаться с обновленным содержимым.

    Снимок экрана: веб-приложение с кнопкой бета-версии на боковой панели.

  4. Нажмите кнопку "Бета-версия ". Он приведет вас на бета-страницу, которую вы динамически активировали.

    Снимок экрана: страница бета-версии.

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

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

    Снимок экрана: веб-приложение с тремя кнопками на боковой панели.

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

    Key Ценность
    appconfig.featureflag/Beta {"id":"Beta","enabled":true}
  3. Обновите страницу несколько раз. После прохождения интервала обновления страница будет отображаться с обновленным содержимым.

    Снимок экрана: веб-приложение с кнопкой бета-версии на боковой панели.

  4. Нажмите кнопку "Бета-версия ". Это приведет вас к бета-странице, которую вы активировали динамически.

    Снимок экрана: страница бета-версии.

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

В этом кратком руководстве вы добавили возможность управления функциями в приложение Aspire в дополнение к динамической конфигурации. Библиотека Microsoft.FeatureManagement.AspNetCore обеспечивает интеграцию с приложениями ASP.NET Core, включая управление функциями в действиях контроллера MVC, Razor Pages, представлениях, маршрутах и middleware. Для полного запуска функции библиотеки управления функциями .NET перейдите к следующему документу.

Хотя флаг компонента позволяет активировать или деактивировать функции в приложении, вы можете настроить флаг функции на основе логики приложения. Фильтры функций позволяют условно включить флаг компонента. Дополнительные сведения см. в следующем руководстве.

Конфигурация приложений Azure предлагает встроенные фильтры функций, позволяющие активировать флаг функции только в течение определенного периода или для определенной целевой аудитории вашего приложения. Дополнительные сведения см. в следующем руководстве.

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

Дополнительные сведения об управлении флагами функций в Конфигурация приложений Azure см. в следующем руководстве.