Freigeben über


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 finden Sie unter Aktivieren von bedingten Features mit Featurefiltern.

In diesem Handbuch erfahren Sie, wie Sie einen benutzerdefinierten Featurefilter in einer ASP.NET Core-Anwendung implementieren und den Featurefilter verwenden, um Features bedingt zu aktivieren.

Voraussetzungen

  • Die ASP.NET Core-Anwendung mit einem Beta-Feature-Flag, das Sie erstellen, wenn Sie die Schritte in der Schnellstartanleitung ausführen: Hinzufügen von Featurekennzeichnungen zu einer ASP.NET Core-App. Dieser Leitfaden baut auf der Schnellstartanleitung für die Featureverwaltung auf.
  • Ein benutzerdefinierter Featurefilter namens Random, der dem Beta-Featureflag in Ihrem Azure App-Konfigurationsspeicher hinzugefügt wurde. Anweisungen finden Sie unter Hinzufügen eines benutzerdefinierten Featurefilters.

Implementieren eines benutzerdefinierten Featurefilters

Im App-Konfigurationsspeicher verfügt das Feature-Flag "Beta" über einen benutzerdefinierten Featurefilter namens Random. Dieser Filter weist einen Percentage Parameter auf. Um den Featurefilter zu implementieren, aktivieren Sie den Beta-Funktionsschalter basierend auf der durch den Percentage-Parameter definierten Wahrscheinlichkeit.

  1. Wechseln Sie zu dem Ordner, der das ASP.NET Core-Anwendungsprojekt enthält, aus der Schnellstartanleitung zur Featureverwaltung, die unter "Voraussetzungen" aufgeführt ist.

  2. Fügen Sie eine RandomFilter.cs Datei hinzu , die den folgenden Code enthält:

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

    Die RandomFilter Klasse im vorherigen Code implementiert die IFeatureFilter Schnittstelle aus der Microsoft.FeatureManagement Bibliothek. 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.

    In diesem Code ist die RandomFilter Klasse mit FilterAliasAttributeversehen, mit der Ihr Filter den Alias Randomerhält. Dieser Alias entspricht dem Filternamen in der Beta-Featurekennzeichnung in der App-Konfiguration.

  3. Öffnen Sie die Datei Program.cs. Registrieren Sie RandomFilter, indem Sie, wie im folgenden Code gezeigt, einen Aufruf der Methode AddFeatureFilter hinzufügen.

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

Anwenden des Featurefilters

  1. Erstellen Sie Ihre App mithilfe des dotnet build Befehls. Führen Sie es dann mithilfe von dotnet run aus.

  2. Suchen Sie in der Ausgabe des dotnet run Befehls nach einer URL, auf der die Web-App lauscht. Öffnen Sie einen Browser, und wechseln Sie zu dieser URL.

  3. Aktualisieren Sie den Browser mehrmals. Das Menü "Beta" wird manchmal auf der Webseite angezeigt und manchmal nicht sichtbar. Das Beta-Feature-Flag wird nicht manuell ein- und ausgeschaltet. Die Variation wird durch die Zufallszahl verursacht, die von der RandomFilter-Implementierung von EvaluateAsync generiert wird, wenn das Feature-Flag ausgewertet wird.

    Screenshot eines Browsers, der für localhost:7207 geöffnet ist. Text auf der Seite gibt Daten aus der Azure App-Konfiguration an. Kein Betamenü ist sichtbar.

    Screenshot eines Browsers, der für localhost:7207 geöffnet ist. Text auf der Seite gibt Daten aus der Azure App-Konfiguration an. Ein Betamenü ist hervorgehoben.

Nächste Schritte

Um mehr über integrierte Featurefilter zu erfahren, fahren Sie mit den folgenden Dokumenten fort:

Gehen Sie für die vollständige Funktionsübersicht der .NET-Bibliothek zur Featureverwaltung zu dem folgenden Dokument: