Condividi tramite


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 Abilitare le funzionalità condizionali con i filtri delle funzionalità.

Questa guida illustra come implementare un filtro di funzionalità personalizzato in un'applicazione ASP.NET Core e usare il filtro delle funzionalità per abilitare le funzionalità in modo condizionale.

Prerequisiti

Implementare un filtro di funzionalità personalizzato

Nel negozio di configurazione dell'applicazione, il flag di funzionalità Beta ha un filtro di funzionalità personalizzato denominato Random. Tale filtro ha un Percentage parametro . Per implementare il filtro delle funzionalità, abilitare il flag di funzionalità Beta in base alla probabilità definita dal Percentage parametro .

  1. Passare alla cartella contenente il progetto di applicazione ASP.NET Core della guida introduttiva alla gestione delle funzionalità elencata in Prerequisiti.

  2. Aggiungere un file RandomFilter.cs contenente 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);
            }
        }
    }
    

    La RandomFilter classe nel codice precedente implementa l'interfaccia IFeatureFilter dalla Microsoft.FeatureManagement libreria. 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.

    In questo codice la RandomFilter classe è decorata con FilterAliasAttribute, che fornisce al filtro l'alias Random. Tale alias corrisponde al nome del filtro nel flag di funzionalità Beta in Configurazione app.

  3. Aprire il file Program.cs. Registrare RandomFilter aggiungendo una chiamata al metodo AddFeatureFilter, come illustrato nel codice seguente:

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

Applicare il filtro delle funzionalità

  1. Compilare l'app usando il dotnet build comando . Quindi eseguilo usando dotnet run.

  2. Nell'output del comando dotnet run trovare un URL su cui sta ascoltando l'app Web. Aprire un browser e passare a tale URL.

  3. Aggiornare alcune volte il browser. Il menu Beta a volte viene visualizzato nella pagina Web e a volte non lo fa. Il flag di funzionalità beta non viene attivato e disattivato manualmente. La variazione è causata dal numero casuale generato dall'implementazione RandomFilter di EvaluateAsync quando viene valutato il flag di funzionalità.

    Screenshot di un browser aperto a localhost:7207. Il testo nella pagina indica Dati da Configurazione app di Azure. Nessun menu Beta è visibile.

    Screenshot di un browser aperto a localhost:7207. Il testo sulla pagina riporta Dati da Configurazione app di Azure. È evidenziato un menu Beta.

Passaggi successivi

Per altre informazioni sui filtri di funzionalità predefiniti, continuare con i documenti seguenti:

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