Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
Флаги компонентов могут использовать фильтры компонентов для условного включения функций. Дополнительные сведения о фильтрах компонентов см. в разделе "Включение условных функций" с помощью фильтров компонентов.
В этом руководстве показано, как реализовать пользовательский фильтр компонентов в приложении ASP.NET Core и использовать фильтр компонентов для условного включения функций.
Необходимые компоненты
- Приложение ASP.NET Core с флагом Beta, которое создается при выполнении шагов в кратком руководстве: Добавление флагов функций в приложение ASP.NET Core. В этом руководстве развиваются идеи, представленные в кратком руководстве по управлению функциями.
- Настраиваемый фильтр функций, называемый
Random, добавлен к флагу Beta в хранилище конфигурации приложений Azure. Инструкции см. в разделе "Добавление настраиваемого фильтра функций".
Реализация настраиваемого фильтра компонентов
В хранилище конфигураций приложений флаг бета-функции имеет настраиваемый фильтр функций с именем Random. Этот фильтр имеет Percentage параметр. Чтобы реализовать фильтр компонентов, включите флаг бета-функции в зависимости от вероятности, определенной параметром Percentage .
Перейдите в папку, содержащую проект приложения ASP.NET Core из краткого руководства по управлению функциями, указанного в предварительных требованиях.
Добавьте файл 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флаг компонента.В этом коде класс
RandomFilterдекорирован атрибутомFilterAliasAttribute, который присваивает псевдонимRandomвашему фильтру. Этот псевдоним соответствует имени фильтра в флаге бета-функции в конфигурации приложений.Откройте файл Program.cs. Зарегистрируйте
RandomFilter, добавив вызов методаAddFeatureFilter, как показано в следующем коде.// Existing code in Program.cs // ... ... // Add feature management to the container of services. builder.Services.AddFeatureManagement() .AddFeatureFilter<RandomFilter>(); // The rest of the existing code in Program.cs // ... ...
Применение фильтра компонентов
Создайте приложение с помощью
dotnet buildкоманды. Затем запустите его с помощьюdotnet run.В выходных данных команды
dotnet runнайдите URL-адрес, по которому веб-приложение принимает запросы. Откройте браузер и перейдите по этому URL-адресу.Обновите браузер несколько раз. Меню бета-версии иногда отображается на веб-странице, и иногда это не так. Флаг бета-функции не включен и отключен вручную. Вариация вызвана случайным числом, которое
RandomFilterсоздается реализациейEvaluateAsyncпри оценке флага функции.
Следующие шаги
Чтобы узнать больше о встроенных фильтрах функций, перейдите к следующим документам:
Для полного обзора возможностей библиотеки управления функциями .NET перейдите к следующему документу: