チュートリアル: ASP.NET Core アプリケーションでカスタム フィルターを使用して条件付き機能を有効にする

機能フラグでは、機能フィルターを使用して、機能を条件に応じて有効にすることができます。 機能フィルターの詳細については、「チュートリアル: 機能フィルターを使用して条件付き機能を有効にする」を参照してください。

このチュートリアルで使用する例は、機能管理のクイックスタートで導入された ASP.NET Core アプリケーションに基づいています。 先に進む前に、このクイックスタートを完了して、Beta 機能フラグを設定した ASP.NET Core アプリケーションを作成します。 完了したら、App Configuration ストア内の Beta 機能フラグにカスタム機能フィルターを追加する必要があります。

このチュートリアルでは、カスタム機能フィルターを実装し、機能フィルターを使用して機能を条件付きで有効にする方法について説明します。

前提条件

カスタム機能フィルターを実装する

前提条件で Beta 機能フラグに対して Random という名前のカスタム機能フィルターと Percentage パラメーターを追加しました。 次に、機能フィルターを実装して、Percentage パラメーターで定義される確率に基づいて Beta 機能フラグを有効にします。

  1. 次のコードを使用して、RandomFilter.cs ファイルを追加します。

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

    Microsoft.FeatureManagement ライブラリから、IFeatureFilter インターフェイスを実装する RandomFilter クラスを追加しました。 IFeatureFilter インターフェイスには、機能フラグが評価されるたびに呼び出される、EvaluateAsync という名前 の 1 つのメソッドがあります。 EvaluateAsync では、機能フィルターは true を返すことで機能フラグを有効にします。

    FilterAliasAttributeRandomFilter に修飾して、フィルターに別名 Random を付けます。これは、Azure App Configuration で Beta 機能フラグに設定したフィルター名と一致します。

  2. Program.cs ファイルを開き、AddFeatureFilter メソッドを呼び出して RandomFilter を登録します。

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

機能フィルターの動作

アプリケーションを再起動し、ブラウザーを数回更新します。 機能フラグを手動で切り替えないと、Beta メニューは表示される場合もあれば、されない場合もあります。

Beta メニューが非表示になっているブラウザーのスクリーンショット。

Beta メニューが表示されているブラウザーのスクリーンショット。

次のステップ

組み込みの機能フィルターについてさらに学ぶには、次のチュートリアルに進んでください。

.NET 機能管理ライブラリの完全な機能の概要については、次のドキュメントに進んでください。