Tutorial: Habilitar recursos condicionais com um filtro personalizado em um aplicativo ASP.NET Core

Os sinalizadores de recursos podem usar filtros de recursos para habilitar os recursos condicionalmente. Para saber mais sobre filtros de recursos, consulte Tutorial: Habilitar recursos condicionais com filtros de recursos.

O exemplo usado nesse tutorial baseia-se no aplicativo ASP.NET Core apresentado no início rápido do gerenciamento de recursos. Antes de continuar, conclua o início rápido para criar um aplicativo ASP.NET Core com um sinalizador de recurso Beta. Depois de concluído, você deve adicionar um filtro de recurso personalizado ao sinalizador de recurso Beta no repositório de Configuração de Aplicativos.

Neste tutorial, você aprenderá a implementar um filtro de recurso personalizado e usar o filtro de recursos para habilitar os recursos condicionalmente.

Pré-requisitos

Implementar um filtro de recurso personalizado

Você adicionou um filtro de recurso personalizado chamado Random com um parâmetro Percentage para o sinalizador de recurso Beta nos pré-requisitos. Em seguida, você implementará o filtro de recursos para habilitar o sinalizador de recurso Beta com base na chance definida pelo parâmetro Percentage.

  1. Adicione um arquivo RandomFilter.cs com o código a seguir.

    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);
            }
        }
    }
    

    Você adicionou uma classe RandomFilter que implementa a interface IFeatureFilter da bibliotecaMicrosoft.FeatureManagement. A interface IFeatureFilter tem um único método chamado EvaluateAsync, que é chamado sempre que um sinalizador de recurso é avaliado. Em EvaluateAsync, um filtro de recurso habilita um sinalizador de recurso retornando true.

    Você decorou um FilterAliasAttribute para o RandomFilter para dar ao filtro um alias Random, que corresponde ao nome do filtro definido no sinalizador de recurso Beta na Configuração de Aplicativos do Azure.

  2. Abra o arquivo Program.cs e registre o RandomFilter chamando o método 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
    // ... ...
    

Filtro de recurso em ação

Reinicie o aplicativo e atualize o navegador algumas vezes. Sem alternar manualmente o sinalizador de recursos, você verá que o menu Beta às vezes aparece e, às vezes, não.

Captura de tela do navegador com o menu Beta oculto.

Captura de tela do navegador com o menu Beta.

Próximas etapas

Para saber mais sobre os filtros de recursos, prossiga para os seguintes tutoriais:

Para obter o resumo completo dos recursos da biblioteca de gerenciamento de recursos .NET, continue para o documento a seguir.