このクイック スタートでは、Azure App Configuration で機能フラグを作成し、それを使用して、再起動や再デプロイを行わずに、アスパイア アプリの新しい Web ページの可用性を動的に制御します。
機能管理のサポートにより、App Configuration の動的構成機能が拡張されます。 このクイックスタートの例は、動的構成チュートリアルで導入されたアスパイア アプリに基づいています。 続行する前に、 クイックスタートと チュートリアル を完了し、最初に動的構成でアスパイア アプリを作成します。
[前提条件]
ドキュメントに従って、動的な構成でアスパイア ソリューションを作成します。
機能フラグを作成する
ベータ と呼 ばれる機能フラグを ( 前提条件 の手順で作成された) App Configuration ストアに追加し、 ラベル と 説明 を既定値のままにします。 Azure portal または CLI を使用してストアに機能フラグを追加する方法の詳細については、「 機能フラグの作成」を参照してください。
App Configuration エミュレーター UI を使用して、次のキー値を追加します。
| Key | コンテンツ タイプ | 価値 |
|---|---|---|
| .appconfig.featureflag/Beta | application/vnd.microsoft.appconfig.ff+json;charset=utf-8 | {"id":"Beta","enabled":false} |
機能フラグは、Microsoft の機能フラグを定義する特別なキー値です。 構成プロバイダーは、特定のコンテンツ タイプとキー プレフィックスによって機能フラグを識別します。 機能フラグの値は、 Microsoft Feature Flag schemaに続く json オブジェクトです。
- 機能フラグのコンテンツ タイプ:
application/vnd.microsoft.appconfig.ff+json;charset=utf-8 - 機能フラグ のキー プレフィックス:
.appconfig.featureflag/
機能フラグを使用する
Webプロジェクトのディレクトリに移動します (前提条件の手順で作成)。 次のコマンドを実行して、Microsoft.FeatureManagement.AspNetCoreNuget パッケージを追加します。dotnet add package Microsoft.FeatureManagement.AspNetCoreProgram.csを開き、
UseFeatureFlags呼び出し内のAddAzureAppConfigurationメソッドへの呼び出しを追加します。 Microsoft Entra ID (推奨) または接続文字列を使用して App Configuration に接続できます。 次のコード スニペットは、Microsoft Entra ID を使用する場合を示しています。builder.AddAzureAppConfiguration( "appconfiguration", configureOptions: options => { // Load all keys that start with `TestApp:` and have no label. options.Select("TestApp:*", LabelFilter.Null); // Reload configuration if any key-values have changed. options.ConfigureRefresh(refreshOptions => refreshOptions.RegisterAll()); // Load all feature flags with no label options.UseFeatureFlags(); });ヒント
UseFeatureFlagsメソッドにパラメーターが渡されない場合は、App Configuration ストアにラベルのないすべての機能フラグが読み込まれます。 機能フラグの既定の更新間隔は 30 秒です。 この動作は、FeatureFlagOptionsパラメーターを使用してカスタマイズできます。 たとえば、次のコード スニペットは、"キー名" が "TestApp" で始まり、ラベル "dev" がある機能フラグのみを読み込みます。 このコードは、更新間隔を 5 分に変更もします。 この更新間隔は、通常のキー値の場合とは別であることに注意してください。options.UseFeatureFlags(featureFlagOptions => { featureFlagOptions.Select("TestApp:*", "dev"); featureFlagOptions.CacheExpirationInterval = TimeSpan.FromMinutes(5); });AddFeatureManagementを呼び出して、アプリのサービス コレクションに機能管理を追加します。次のコードでProgram.csを更新します。
// Existing code in Program.cs // ... ... // Add Azure App Configuration middleware to the container of services. builder.Services.AddAzureAppConfiguration(); // Add feature management to the container of services. builder.Services.AddFeatureManagement(); var app = builder.Build(); // The rest of existing code in program.cs // ... ...ファイルの先頭に
using Microsoft.FeatureManagement;が存在しない場合は追加します。Components/Pages ディレクトリの下に Beta.razor という名前の新しい Razor ページを追加します。
@page "/beta" @inject IFeatureManager FeatureManager @if (isBetaEnabled) { <h1>This is the beta website.</h1> } else { <h1>Not found.</h1> } @code { private bool isBetaEnabled; protected override async Task OnInitializedAsync() { isBetaEnabled = await FeatureManager.IsEnabledAsync("Beta"); } }_Imports.razor を開き、機能管理名前空間をインポートします。
@using Microsoft.FeatureManagementComponents/Layout ディレクトリで NavMenu.razor を開きます。
ファイルの先頭に
IVariantFeatureManagerを挿入します。@inject IVariantFeatureManager FeatureManager <div class="top-row ps-3 navbar navbar-dark"> <div class="container-fluid"> <a class="navbar-brand" href="">AspireApp</a> </div> </div>次のコードを追加します。
// Existing code // ... ... <div class="nav-scrollable" onclick="document.querySelector('.navbar-toggler').click()"> <nav class="nav flex-column"> // Existing code // ... ... @if (isBetaEnabled) { <div class="nav-item px-3"> <NavLink class="nav-link" href="beta"> <span class="bi bi-list-nested" aria-hidden="true"></span> Beta </NavLink> </div> } </nav> </div> @code { private bool isBetaEnabled; protected override async Task OnInitializedAsync() { isBetaEnabled = await FeatureManager.IsEnabledAsync("Beta"); } }
アプリをローカルで実行する
アプリをローカルで実行する
次のステップ
このクイック スタートでは、動的構成に加えて、機能管理機能をアスパイア アプリに追加しました。 Microsoft.FeatureManagement.AspNetCore ライブラリは、MVC コントローラー アクション、Razor ページ、ビュー、ルート、ミドルウェアの機能管理など、ASP.NET Core アプリとの統合を提供します。 .NET 機能管理ライブラリの詳細な機能の説明については、次のドキュメントに進んでください。
機能フラグを使用すると、アプリの機能をアクティブ化または非アクティブ化できますが、アプリのロジックに基づいて機能フラグをカスタマイズすることも必要になる場合があります。 機能フィルターを使用すると、機能フラグを条件に応じて有効にできます。 詳細については、次のチュートリアルに進んでください。
Azure App Configuration には、特定の期間またはアプリの特定の対象ユーザーに対してのみ機能フラグをアクティブ化できる組み込みの機能フィルターが用意されています。 詳細については、次のチュートリアルに進んでください。
他の種類のアプリで機能管理機能を有効にするには、次のチュートリアルに進みます。
Azure App Configuration での機能フラグの管理の詳細については、次のチュートリアルに進んでください。