Бөлісу құралы:


Руководство. Включение условных функций с пользовательским фильтром в приложении ASP.NET Core

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

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

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

Необходимые компоненты

Реализация настраиваемого фильтра компонентов

Вы добавили пользовательский фильтр функций с именем Random с параметром "Процент" для флага бета-функции в предварительных требованиях. Затем вы реализуете фильтр функций, чтобы включить флаг бета-функции на основе вероятности, определенной параметром Percentage .

  1. RandomFilter.cs Добавьте файл со следующим кодом.

    using Microsoft.FeatureManagement;
    
    namespace TestAppConfig
    {
        [FilterAlias("Random")]
        public class RandomFilter : IFeatureFilter
        {
            private readonly Random _random;
    
            public RandomFilter()
            {
                _random = new Random();
            }
    
            public Task<bool> EvaluateAsync(FeatureFilterEvaluationContext context)
            {
                int percentage = context.Parameters.GetSection("Percentage").Get<int>();
    
                int randomNumber = _random.Next(100);
    
                return Task.FromResult(randomNumber <= percentage);
            }
        }
    }
    

    Вы добавили RandomFilter класс, реализующий IFeatureFilter интерфейс из библиотеки Microsoft.FeatureManagement . Интерфейс IFeatureFilter имеет один метод с именем EvaluateAsync, который вызывается при оценке флага компонента. В EvaluateAsyncфильтре функций флаг компонента включается возвращаемый trueфлаг компонента.

    Вы декорировали фильтр FilterAliasAttribute RandomFilter, чтобы дать фильтру псевдоним Случайный, который соответствует имени фильтра, заданному в флаге бета-функции в Конфигурация приложений Azure.

  2. Откройте файл Program.cs и зарегистрируйте егоRandomFilter, вызвав AddFeatureFilter метод.

    // The rest of existing code in Program.cs
    // ... ...
    
    // Add feature management to the container of services.
    builder.Services.AddFeatureManagement()
                    .AddFeatureFilter<RandomFilter>();
    
    // The rest of existing code in Program.cs
    // ... ...
    

Фильтр компонентов в действии

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

Снимок экрана: браузер с скрытым меню бета-версии.

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

Следующие шаги

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

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