Condividi tramite


Esercitazione: Abilitare le funzionalità condizionali con un filtro personalizzato in un'applicazione ASP.NET Core

I flag di funzionalità possono usare filtri di funzionalità per abilitare le funzionalità in modo condizionale. Per altre informazioni sui filtri delle funzionalità, vedere Esercitazione: Abilitare le funzionalità condizionali con filtri di funzionalità.

L'esempio usato in questa esercitazione si basa sull'applicazione ASP.NET Core introdotta nella guida introduttiva alla gestione delle funzionalità. Prima di continuare, completare la guida introduttiva per creare un'applicazione ASP.NET Core con un flag di funzionalità Beta. Al termine, è necessario aggiungere un filtro di funzionalità personalizzato al flag di funzionalità Beta nell'archivio di configurazione app.

In questa esercitazione si apprenderà a implementare un filtro di funzionalità personalizzato e usare il filtro delle funzionalità per abilitare le funzionalità in modo condizionale.

Prerequisiti

Implementare un filtro di funzionalità personalizzato

È stato aggiunto un filtro di funzionalità personalizzato denominato Casuale con un parametro Percentuale per il flag di funzionalità Beta nei prerequisiti. Successivamente, si implementerà il filtro delle funzionalità per abilitare il flag di funzionalità Beta in base alla probabilità definita dal parametro Percentuale.

  1. Aggiungere un file RandomFilter.cs con il codice seguente.

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

    È stata aggiunta una classe RandomFilter che implementa l’interfaccia IFeatureFilter dalla libreria Microsoft.FeatureManagement. L’interfaccia IFeatureFilter ha un singolo metodo denominato EvaluateAsync, che viene chiamato ogni volta che viene valutato un flag di funzionalità. In EvaluateAsync, un filtro di funzionalità abilita un flag di funzionalità restituendo true.

    È stato decorato un FilterAliasAttribute in RandomFilter per assegnare al filtro un alias Casuale, che corrisponde al nome del filtro impostato nel flag di funzionalità Beta in Configurazione app di Azure.

  2. Aprire il file Program.cs e registrare il RandomFilter chiamando il metodo 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 funzionalità in azione

Riavviare l'applicazione e aggiornare il browser per alcune volte. Senza attivare o disattivare manualmente il flag di funzionalità, si noterà che il menu Beta a volte viene visualizzato e a volte no.

Screenshot del browser con il menu Beta nascosto.

Screenshot del browser con il menu Beta.

Passaggi successivi

Per altre informazioni sui filtri di funzionalità predefiniti, continuare con le esercitazioni seguenti.

Per il rundown completo della funzionalità della libreria di gestione delle funzionalità .NET, continuare con il documento seguente.