Udostępnij za pomocą


Włączanie funkcji warunkowych przy użyciu filtru niestandardowego w aplikacji ASP.NET Core

Flagi funkcji mogą używać filtrów funkcji w celu warunkowego włączania funkcji. Aby uzyskać więcej informacji na temat filtrów funkcji, zobacz Włączanie funkcji warunkowych z filtrami funkcji.

W tym przewodniku pokazano, jak zaimplementować niestandardowy filtr funkcji w aplikacji ASP.NET Core i użyć filtru funkcji w celu warunkowego włączenia funkcji.

Wymagania wstępne

Implementowanie niestandardowego filtru funkcji

W sklepie App Configuration flaga funkcji beta ma niestandardowy filtr funkcji o nazwie Random. Ten filtr ma Percentage parametr. Aby zaimplementować filtr funkcji, należy włączyć flagę funkcji beta na podstawie prawdopodobieństwa zdefiniowanego Percentage przez parametr .

  1. Przejdź do folderu zawierającego projekt aplikacji ASP.NET Core z szybkim startem dotyczącym zarządzania funkcjami wymienionym w Wymagania wstępne.

  2. Dodaj plik RandomFilter.cs zawierający następujący kod:

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

    Klasa RandomFilter w poprzednim kodzie implementuje IFeatureFilter interfejs z Microsoft.FeatureManagement biblioteki. Interfejs IFeatureFilter ma jedną metodę o nazwie EvaluateAsync, która jest wywoływana za każdym razem, gdy zostanie obliczona flaga funkcji. W EvaluateAsyncsystemie filtr funkcji włącza flagę funkcji, zwracając wartość true.

    W tym kodzie klasa RandomFilter jest ozdobiona FilterAliasAttribute, co nadaje twojemu filtrowi alias Random. Ten alias pasuje do nazwy filtru w flagi funkcji beta w usłudze App Configuration.

  3. Otwórz plik Program.cs. Zarejestruj RandomFilter dodając wywołanie metody AddFeatureFilter, jak pokazano w poniższym kodzie:

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

Stosowanie filtru funkcji

  1. Utwórz aplikację przy użyciu polecenia dotnet build. Następnie uruchom go przy użyciu polecenia dotnet run.

  2. W danych wyjściowych polecenia dotnet run znajdź adres URL, na którym nasłuchuje aplikacja webowa. Otwórz przeglądarkę i przejdź do tego adresu URL.

  3. Odśwież przeglądarkę kilka razy. Menu beta czasami pojawia się na stronie internetowej, a czasami nie. Flaga funkcji beta nie jest ręcznie włączona i wyłączona. Zmiana jest spowodowana przez losową liczbę, którą generuje RandomFilter implementacja EvaluateAsync gdy oceniana jest flaga funkcji.

    Zrzut ekranu przedstawiający przeglądarkę otwartą na localhost:7207. Tekst na stronie wskazuje dane z usługi Azure App Configuration. Menu beta nie jest widoczne.

    Zrzut ekranu przedstawiający przeglądarkę otwartą na localhost:7207. Tekst na stronie wskazuje dane z usługi Azure App Configuration. Wyróżniono menu beta.

Następne kroki

Aby dowiedzieć się więcej na temat wbudowanych filtrów funkcji, przejdź do następujących dokumentów:

Aby uruchomić pełną funkcję biblioteki zarządzania funkcjami platformy .NET, przejdź do następującego dokumentu: