次の方法で共有


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

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

このガイドでは、ASP.NET Core アプリケーションでカスタム機能フィルターを実装し、その機能フィルターを使用して機能を条件付きで有効にする方法について説明します。

前提条件

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

App Configuration ストアの ベータ 機能フラグには、 Randomという名前のカスタム機能フィルターがあります。 そのフィルターには、 Percentage パラメーターがあります。 機能フィルターを実装するには、 パラメーターによって定義された確率に基づいてPercentage機能フラグを有効にします。

  1. 前提条件に記載されている機能管理クイック スタートから、ASP.NET Core アプリケーション プロジェクトを含むフォルダーに移動 します

  2. 次のコードを含む 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);
            }
        }
    }
    

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

    このコードでは、 RandomFilter クラスは FilterAliasAttribute で修飾され、フィルターにエイリアス Randomが提供されます。 このエイリアスは、App Configuration の ベータ 機能フラグのフィルター名と一致します。

  3. Program.cs ファイルを開きます。 次のコードに示すように、RandomFilter メソッドへの呼び出しを追加して、AddFeatureFilterを登録します。

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

機能フィルターを適用する

  1. dotnet build コマンドを使用してアプリをビルドします。 次に、 dotnet runを使用して実行します。

  2. dotnet run コマンドの出力で、Web アプリがリッスンしている URL を見つけます。 ブラウザーを開き、その URL に移動します。

  3. ブラウザーを数回更新します。 ベータ メニューが Web ページに表示される場合もあれば、表示されない場合もあります。 ベータ機能フラグは、手動でオンとオフを切り替えられません。 このバリエーションは、RandomFilterEvaluateAsync実装が特徴フラグの評価時に生成する乱数によって発生します。

    localhost:7207 が開いているブラウザーのスクリーンショット。ページ上のテキストには、Azure App Configuration からのデータが表示されます。[ベータ] メニューは表示されません。

    localhost:7207 が開いているブラウザーのスクリーンショット。ページ上のテキストには、Azure App Configuration からのデータが表示されます。ベータ メニューが強調表示されています。

次のステップ

組み込みの機能フィルターの詳細については、次のドキュメントに進んでください。

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