Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Флаги компонентов могут использовать фильтры компонентов для условного включения функций. Дополнительные сведения о фильтрах компонентов см. в разделе "Включение условных функций" с помощью фильтров компонентов.
В этом руководстве показано, как реализовать пользовательский фильтр компонентов в приложении 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 перейдите к следующему документу: