機能フラグでは、機能フィルターを使用して、機能を条件に応じて有効にすることができます。 機能フィルターの詳細については、「機能フィルター を使用して条件付き機能を有効にする」を参照してください。
このガイドでは、ASP.NET Core アプリケーションでカスタム機能フィルターを実装し、その機能フィルターを使用して機能を条件付きで有効にする方法について説明します。
前提条件
- 「クイック スタート: ASP.NET Core アプリに機能フラグを追加する」の手順を完了したときに作成するベータ機能フラグを含む ASP.NET Core アプリケーション。 このガイドは、その機能管理のクイック スタートに基づいています。
- azure App Configuration ストアの
Random機能フラグに追加された、と呼ばれるカスタム機能フィルター。 手順については、「 カスタム機能フィルターの追加」を参照してください。
カスタム機能フィルターを実装する
App Configuration ストアの ベータ 機能フラグには、 Randomという名前のカスタム機能フィルターがあります。 そのフィルターには、 Percentage パラメーターがあります。 機能フィルターを実装するには、 パラメーターによって定義された確率に基づいてPercentage機能フラグを有効にします。
前提条件に記載されている機能管理クイック スタートから、ASP.NET Core アプリケーション プロジェクトを含むフォルダーに移動 します。
次のコードを含む 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 の ベータ 機能フラグのフィルター名と一致します。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 // ... ...
機能フィルターを適用する
dotnet buildコマンドを使用してアプリをビルドします。 次に、dotnet runを使用して実行します。dotnet runコマンドの出力で、Web アプリがリッスンしている URL を見つけます。 ブラウザーを開き、その URL に移動します。ブラウザーを数回更新します。 ベータ メニューが Web ページに表示される場合もあれば、表示されない場合もあります。 ベータ機能フラグは、手動でオンとオフを切り替えられません。 このバリエーションは、
RandomFilterのEvaluateAsync実装が特徴フラグの評価時に生成する乱数によって発生します。
次のステップ
組み込みの機能フィルターの詳細については、次のドキュメントに進んでください。
.NET 機能管理ライブラリの完全な機能ランダウンについては、次のドキュメントに進んでください。