Compartilhar via


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 obter mais informações sobre filtros de recursos, consulte Habilitar recursos condicionais com filtros de recursos.

Este guia mostra como implementar um filtro de recurso personalizado em um aplicativo ASP.NET Core e usar o filtro de recursos para habilitar os recursos condicionalmente.

Pré-requisitos

Implementar um filtro de recurso personalizado

No repositório de Configuração de Aplicativos, o sinalizador de recurso Beta tem um filtro de recursos personalizado chamado Random. Esse filtro tem um Percentage parâmetro. Para implementar o filtro de recursos, habilite o sinalizador de recurso Beta com base na chance definida pelo Percentage parâmetro.

  1. Vá para a pasta que contém o projeto de aplicativo ASP.NET Core do início rápido de gerenciamento de recursos listado em Pré-requisitos.

  2. Adicione um arquivo RandomFilter.cs que contém o seguinte código:

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

    A RandomFilter classe no código anterior implementa a IFeatureFilter interface da Microsoft.FeatureManagement biblioteca. 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.

    Nesse código, a RandomFilter classe é decorada com FilterAliasAttribute, o que fornece ao seu filtro o alias Random. Esse alias corresponde ao nome do filtro no sinalizador de recurso Beta na Configuração do Aplicativo.

  3. Abra o arquivo Program.cs. Registre RandomFilter adicionando uma chamada ao método AddFeatureFilter, conforme mostrado no seguinte código:

    // 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
    // ... ...
    

Aplicar o filtro de funcionalidade

  1. Crie seu aplicativo usando o dotnet build comando. Em seguida, execute-o usando dotnet run.

  2. Na saída do comando dotnet run, localize uma URL na qual o aplicativo Web esteja escutando. Abra um navegador e vá para essa URL.

  3. Atualize o navegador algumas vezes. Às vezes, o menu Beta aparece na página da Web e, às vezes, não aparece. O sinalizador de recurso Beta não está sendo ativado e desativado manualmente. A variação é causada pelo número aleatório que a implementação RandomFilter de EvaluateAsync gera quando o sinalizador de recurso é avaliado.

    Captura de tela de um navegador aberto para localhost:7207. O texto na página indica dados da Configuração de Aplicativos do Azure. Nenhum menu Beta está visível.

    Captura de tela de um navegador aberto para localhost:7207. O texto na página indica dados da Configuração de Aplicativos do Azure. Um menu Beta está realçado.

Próximas etapas

Para saber mais sobre filtros de funcionalidades embutidas, consulte os seguintes documentos:

Para a visão geral completa dos recursos da biblioteca de gerenciamento de recursos do .NET, siga para o seguinte documento: