Partage via


Tutoriel : Activer les fonctionnalités conditionnelles avec un filtre personnalisé dans une application ASP.NET Core

Les indicateurs de fonctionnalités peuvent utiliser des filtres de fonctionnalités pour activer des fonctionnalités de manière conditionnelle. Pour en savoir plus sur les filtres de fonctionnalités, consultez Tutoriel : Activer des fonctionnalités conditionnelles avec des filtres de fonctionnalités.

L’exemple utilisé dans ce tutoriel est basé sur l’application ASP.NET Core introduite dans le guide de démarrage rapide sur la gestion des fonctionnalités. Avant de continuer, suivez ce guide de démarrage rapide pour créer une application ASP.NET Core avec un indicateur de fonctionnalité Beta. Une fois terminé, vous devez ajouter un filtre de fonctionnalités personnalisé à l’indicateur de fonctionnalité Beta dans votre magasin App Configuration.

Dans ce tutoriel, vous allez apprendre à implémenter un filtre de fonctionnalités personnalisé et à l’utiliser pour activer les fonctionnalités de manière conditionnelle.

Prérequis

Implémenter un filtre de fonctionnalité personnalisé

Vous avez ajouté un filtre de fonctionnalités personnalisé nommé Random avec un paramètre Percentage pour votre indicateur de fonctionnalité Beta dans les prérequis. Ensuite, vous allez implémenter le filtre de fonctionnalités pour activer l’indicateur de fonctionnalité Beta en fonction de la chance définie par le paramètre Percentage.

  1. Ajoutez un fichier RandomFilter.cs avec le code suivant.

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

    Vous avez ajouté une classe RandomFilter qui implémente l’interface IFeatureFilter à partir de la bibliothèque Microsoft.FeatureManagement. L’interface IFeatureFilter a une méthode unique nommée EvaluateAsync, appelée chaque fois qu’un indicateur de fonctionnalité est évalué. Dans EvaluateAsync, un filtre de fonctionnalités active un indicateur de fonctionnalité en retournant true.

    Vous avez décoré un FilterAliasAttribute pour le RandomFilter afin de donner à votre filtre un alias Random, qui correspond au nom de filtre que vous avez défini dans l’indicateur de fonctionnalité Beta dans Azure App Configuration.

  2. Ouvrez le fichier Program.cs et inscrivez le RandomFilter en appelant la méthode 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
    // ... ...
    

Filtre de fonctionnalités en action

Relancez l’application et actualisez le navigateur quelques fois. Sans activer manuellement l’indicateur de fonctionnalité, vous voyez que le menu Beta apparaît parfois et parfois pas.

Capture d’écran du navigateur avec le menu Beta masqué.

Capture d’écran du navigateur avec le menu Beta.

Étapes suivantes

Pour en savoir plus sur les filtres de fonctionnalités intégrés, passez aux tutoriels suivants.