ASP.NET Core アプリケーションでカスタム フィルターを使用して条件付き機能を有効にする
機能フラグでは、機能フィルターを使用して、機能を条件に応じて有効にすることができます。 機能フィルターの詳細については、「機能フィルターを使用して条件付き機能を有効にする」を参照してください。
このガイドで使用する例は、機能管理のクイックスタートで導入された ASP.NET Core アプリケーションに基づいています。 先に進む前に、このクイックスタートを完了して、Beta 機能フラグを設定した ASP.NET Core アプリケーションを作成します。 完了したら、App Configuration ストア内の Beta 機能フラグにカスタム機能フィルターを追加する必要があります。
このガイドでは、カスタム機能フィルターを実装し、機能フィルターを使用して機能を条件付きで有効にする方法について説明します。
前提条件
カスタム機能フィルターを実装する
前提条件で Beta 機能フラグに対して Random という名前のカスタム機能フィルターと Percentage パラメーターを追加しました。 次に、機能フィルターを実装して、Percentage パラメーターで定義される確率に基づいて Beta 機能フラグを有効にします。
次のコードを使用して、
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
を返すことで機能フラグを有効にします。FilterAliasAttribute
をRandomFilter
に修飾して、フィルターに別名 Random を付けます。これは、Azure App Configuration で Beta 機能フラグに設定したフィルター名と一致します。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 メニューは表示される場合もあれば、されない場合もあります。
次のステップ
組み込みの機能フィルターについてさらに学ぶには、次のドキュメントに進んでください。
.NET 機能管理ライブラリの詳細な機能の説明については、次のドキュメントに進んでください。