Compartir vía


Habilitación de características condicionales con un filtro personalizado en una aplicación de ASP.NET Core

Las marcas de características pueden usar filtros de características para habilitarlas de forma condicional. Para obtener más información sobre los filtros de características, consulte Habilitación de características condicionales con filtros de características.

En el ejemplo que se usa en esta guía, se utiliza la aplicación de ASP.NET Core que se usó en el inicio rápido de administración de características. Antes de continuar, complete el inicio rápido en el que se crea una aplicación de ASP.NET Core con una marca de característica beta. Una vez completado, debe agregar un filtro de características personalizado a la marca de característica beta en el almacén de App Configuration.

En esta guía, aprenderá a implementar un filtro de características personalizado y a usar el filtro de características para habilitarlas de forma condicional.

Requisitos previos

Implementación de un filtro de características personalizado

Ha agregado un filtro de características personalizado denominado Aleatorio con un parámetro de porcentaje para la marca de característica beta en los requisitos previos. A continuación, implementará el filtro de características para habilitar la marca de característica beta en función de la probabilidad definida por el parámetro de porcentaje.

  1. Agregue un archivo RandomFilter.cs con el código siguiente.

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

    Ha agregado una clase RandomFilter que implementa la interfaz IFeatureFilter desde la biblioteca de Microsoft.FeatureManagement. La interfaz IFeatureFilter tiene un único método denominado EvaluateAsync, al que se llama cada vez que se evalúa una marca de característica. En EvaluateAsync, un filtro de características habilita una marca de característica devolviendo true.

    Ha decorado un FilterAliasAttribute en el RandomFilter para proporcionar al filtro un alias Random, que coincide con el nombre de filtro que estableció en la marca de característica beta en Azure App Configuration.

  2. Abra el archivo Program.cs y registre el RandomFilter llamando al 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 características en acción

Vuelva a iniciar la aplicación y actualice el explorador varias veces. Sin alternar manualmente la marca de característica, verá que a veces aparece el menú Beta a veces aparece y otras veces no.

Captura de pantalla del explorador con el menú Beta oculto.

Captura de pantalla del explorador con el menú Beta.

Pasos siguientes

Para más información sobre los filtros de características integrados, continúe con los siguientes documentos.

Para obtener la lista completa de características de la biblioteca de administración de características de .NET, continúe con el siguiente documento.