Share via


Tutorial: Aktivieren bedingter Features mit einem benutzerdefinierten Filter in einer ASP.NET Core-Anwendung

Featureflags können Featurefilter verwenden, um Features bedingt zu aktivieren. Weitere Informationen zu Featurefiltern erhalten Sie im Tutorial: Aktivieren von bedingten Features mit Featurefiltern.

Das in diesem Tutorial verwendete Beispiel basiert auf der ASP.NET Core-Anwendung, die im Schnellstart der Featureverwaltung eingeführt wurde. Bevor Sie fortfahren, führen Sie den Schnellstart aus, um eine ASP.NET Core-Anwendung mit einem Beta-Featureflag zu erstellen. Nach Abschluss müssen Sie dem Beta-Featureflag in Ihrem App Configuration-Speicher einen benutzerdefinierten Featurefilter hinzufügen.

In diesem Tutorial erfahren Sie, wie Sie einen benutzerdefinierten Featurefilter implementieren und den Featurefilter verwenden, um Features bedingt zu aktivieren.

Voraussetzungen

Implementieren eines benutzerdefinierten Featurefilters

Sie haben einen benutzerdefinierten Featurefilter namens Random mit einem Percentage-Parameter für Ihr Beta-Featureflag in den Voraussetzungen hinzugefügt. Als Nächstes implementieren Sie den Featurefilter, um das Beta-Featureflag basierend auf der durch den Percentage-Parameter definierten Chance zu aktivieren.

  1. Fügen Sie eine Datei RandomFilter.cs mit dem folgenden Code hinzu.

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

    Sie haben eine RandomFilter-Klasse hinzugefügt, die die IFeatureFilter-Schnittstelle aus der Microsoft.FeatureManagement-Bibliothek implementiert. Die IFeatureFilter-Schnittstelle verfügt über eine einzelne Methode namens EvaluateAsync, die immer dann aufgerufen wird, wenn ein Featureflag ausgewertet wird. In EvaluateAsync aktiviert ein Featurefilter ein Featureflag, indem true zurückgegeben wird.

    Sie haben dem RandomFilter ein FilterAliasAttribute hinzugefügt, um Ihrem Filter einen Alias Random zuzuweisen, der dem Filternamen entspricht, den Sie im Beta-Featureflag in Azure App Configuration festgelegt haben.

  2. Öffnen Sie die Datei Program.cs, und registrieren Sie den RandomFilter, indem Sie die AddFeatureFilter-Methode aufrufen.

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

Featurefilter in Aktion

Starten Sie die Anwendung neu, und aktualisieren Sie den Browser ein paar Mal. Ohne das Featureflag manuell umzuschalten, sehen Sie, dass das Beta-Menü manchmal angezeigt wird und manchmal nicht.

Screenshot des Browsers mit ausgeblendetem Beta-Menü.

Screenshot des Browsers mit Beta-Menü.

Nächste Schritte

Wenn Sie mehr über die eingebauten Featurefilter erfahren möchten, fahren Sie mit den folgenden Tutorials fort.