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
- Creare un'app ASP.NET Core con un flag di funzionalità.
- Aggiungere un filtro di funzionalità personalizzato al flag di funzionalità
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.
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’interfacciaIFeatureFilter
dalla libreriaMicrosoft.FeatureManagement
. L’interfacciaIFeatureFilter
ha un singolo metodo denominatoEvaluateAsync
, che viene chiamato ogni volta che viene valutato un flag di funzionalità. InEvaluateAsync
, un filtro di funzionalità abilita un flag di funzionalità restituendotrue
.È stato decorato un
FilterAliasAttribute
inRandomFilter
per assegnare al filtro un alias Casuale, che corrisponde al nome del filtro impostato nel flag di funzionalità Beta in Configurazione app di Azure.Aprire il file Program.cs e registrare il
RandomFilter
chiamando il metodoAddFeatureFilter
.// 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.
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.