次の方法で共有


クイック スタート: 機能フラグをアスパイア アプリに追加する

このクイック スタートでは、Azure App Configuration で機能フラグを作成し、それを使用して、再起動や再デプロイを行わずに、アスパイア アプリの新しい Web ページの可用性を動的に制御します。

機能管理のサポートにより、App Configuration の動的構成機能が拡張されます。 このクイックスタートの例は、動的構成チュートリアルで導入されたアスパイア アプリに基づいています。 続行する前に、 クイックスタートチュートリアル を完了し、最初に動的構成でアスパイア アプリを作成します。

[前提条件]

ドキュメントに従って、動的な構成でアスパイア ソリューションを作成します。

機能フラグを作成する

ベータ と呼 ばれる機能フラグを ( 前提条件 の手順で作成された) App Configuration ストアに追加し、 ラベル説明 を既定値のままにします。 Azure portal または CLI を使用してストアに機能フラグを追加する方法の詳細については、「 機能フラグの作成」を参照してください。

Beta という機能フラグを追加するスクリーンショット。

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/

機能フラグを使用する

  1. Web プロジェクトのディレクトリに移動します (前提条件の手順で作成)。 次のコマンドを実行して、 Microsoft.FeatureManagement.AspNetCore Nuget パッケージを追加します。

    dotnet add package Microsoft.FeatureManagement.AspNetCore
    
  2. Program.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);
    });
    
  3. 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; が存在しない場合は追加します。

  4. 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");
        }
    }
    
  5. _Imports.razor を開き、機能管理名前空間をインポートします。

    @using Microsoft.FeatureManagement
    
  6. Components/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");
        }
    }
    

アプリをローカルで実行する

  1. AppHost プロジェクトを実行します。 アスパイア ダッシュボードに移動し、Web アプリを開きます。

    サイド バーに 3 つのボタンがある Web アプリのスクリーンショット。

  2. Azure portal で、App Configuration ストアの フィーチャー マネージャー に移動し、 ベータ 機能フラグを見つけます。 [有効] の下にあるチェック ボックスをオンにして、フラグを 有効にします

  3. ページを数回更新します。 更新間隔の時間枠が経過すると、ページに更新されたコンテンツが表示されます。

    サイド バーに [ベータ] ボタンがある Web アプリのスクリーンショット。

  4. [ ベータ] ボタンをクリックします。 動的に有効にしたベータ ページが表示されます。

    [ベータ] ページのスクリーンショット。

アプリをローカルで実行する

  1. AppHost プロジェクトを実行します。 アスパイア ダッシュボードに移動し、Web アプリを開きます。

    サイド バーに 3 つのボタンがある Web アプリのスクリーンショット。

  2. エミュレーターに移動し、機能フラグの値を編集して有効にします。

    Key 価値
    appconfig.featureflag/Beta {"id":"Beta","enabled":true}
  3. ページを数回更新します。 更新間隔の時間枠が経過すると、ページに更新されたコンテンツが表示されます。

    サイド バーに [ベータ] ボタンがある Web アプリのスクリーンショット。

  4. [ ベータ] ボタンをクリックします。 動的に有効にしたベータ ページが表示されます。

    [ベータ] ページのスクリーンショット。

次のステップ

このクイック スタートでは、動的構成に加えて、機能管理機能をアスパイア アプリに追加しました。 Microsoft.FeatureManagement.AspNetCore ライブラリは、MVC コントローラー アクション、Razor ページ、ビュー、ルート、ミドルウェアの機能管理など、ASP.NET Core アプリとの統合を提供します。 .NET 機能管理ライブラリの詳細な機能の説明については、次のドキュメントに進んでください。

機能フラグを使用すると、アプリの機能をアクティブ化または非アクティブ化できますが、アプリのロジックに基づいて機能フラグをカスタマイズすることも必要になる場合があります。 機能フィルターを使用すると、機能フラグを条件に応じて有効にできます。 詳細については、次のチュートリアルに進んでください。

Azure App Configuration には、特定の期間またはアプリの特定の対象ユーザーに対してのみ機能フラグをアクティブ化できる組み込みの機能フィルターが用意されています。 詳細については、次のチュートリアルに進んでください。

他の種類のアプリで機能管理機能を有効にするには、次のチュートリアルに進みます。

Azure App Configuration での機能フラグの管理の詳細については、次のチュートリアルに進んでください。