チュートリアル:.NET Framework アプリで動的な構成を使用するTutorial: Use dynamic configuration in a .NET Framework app

App Configuration .NET クライアント ライブラリでは、アプリケーションを再起動せずに、必要に応じて一連の構成設定を更新できます。The App Configuration .NET client library supports updating a set of configuration settings on demand without causing an application to restart. これは、最初に構成プロバイダーのオプションから IConfigurationRefresher のインスタンスを取得した後、コード内の任意の場所でそのインスタンスの Refresh を呼び出すことによって実装できます。This can be implemented by first getting an instance of IConfigurationRefresher from the options for the configuration provider and then calling Refresh on that instance anywhere in your code.

設定の更新を維持しながら、構成ストアの呼び出しが多くなりすぎないようにするため、キャッシュが各設定に使用されます。In order to keep the settings updated and avoid too many calls to the configuration store, a cache is used for each setting. 設定のキャッシュされた値の有効期限が切れるまで、構成ストアの値が変更された場合でも、更新操作で値は更新されません。Until the cached value of a setting has expired, the refresh operation does not update the value, even when the value has changed in the configuration store. 各要求の既定の有効期間は 30 秒ですが、必要な場合はオーバーライドできます。The default expiration time for each request is 30 seconds, but it can be overridden if required.

このチュートリアルでは、自分が作成するコードに、構成の動的更新を実装する方法について説明します。This tutorial shows how you can implement dynamic configuration updates in your code. これは、クイック スタートで紹介されているアプリに基づいています。It builds on the app introduced in the quickstarts. 先に進む前に、App Configuration を使用した .NET Framework アプリの作成を完了しておいてください。Before you continue, finish Create a .NET Framework app with App Configuration first.

このチュートリアルでは、以下の内容を学習します。In this tutorial, you learn how to:

  • App Configuration ストアへの変更に合わせて構成を更新するように .NET Framework アプリを設定する。Set up your .NET Framework app to update its configuration in response to changes in an App Configuration store.
  • 最新の構成をアプリケーションに挿入する。Inject the latest configuration in your application.

前提条件Prerequisites

App Configuration ストアを作成するCreate an App Configuration store

  1. 新しい App Configuration ストアを作成するには、Azure portal にサインインします。To create a new App Configuration store, sign in to the Azure portal. ホーム ページの左上にある [+ リソースの作成] を選択します。In the upper-left corner of the home page, select Create a resource. [Marketplace を検索] ボックスに「App Configuration」と入力し、Enter キーを押します。In the Search the Marketplace box, enter App Configuration and select Enter.

    App Configuration を検索する

  2. 検索結果の [アプリ構成] を選択し、 [作成] を選択します。Select App Configuration from the search results, and then select Create.

    [作成] を選択します

  3. [アプリ構成] > [作成] ウィンドウで、次の設定を入力します。On the App Configuration > Create pane, enter the following settings:

    設定Setting 推奨値Suggested value 説明Description
    リソース名Resource name グローバルに一意の名前Globally unique name App Configuration ストア リソースに使用する一意のリソース名を入力します。Enter a unique resource name to use for the App Configuration store resource. 名前は 5 から 50 文字の文字列で、数字、英字、- 文字のみを使用する必要があります。The name must be a string between 5 and 50 characters and contain only numbers, letters, and the - character. 名前の先頭または末尾を - 文字にすることはできません。The name can't start or end with the - character.
    サブスクリプションSubscription 該当するサブスクリプションYour subscription App Configuration のテストに使用する Azure サブスクリプションを選択します。Select the Azure subscription that you want to use to test App Configuration. アカウントにサブスクリプションが 1 つしかない場合は自動的に選択されるため、 [サブスクリプション] の一覧は表示されません。If your account has only one subscription, it's automatically selected and the Subscription list isn't displayed.
    リソース グループResource group AppConfigTestResourcesAppConfigTestResources App Configuration ストア リソースのリソース グループを選択または作成します。Select or create a resource group for your App Configuration store resource. このグループで複数のリソースをまとめておくと、そのリソース グループを削除することで複数のリソースを同時に削除できるため、便利です。This group is useful for organizing multiple resources that you might want to delete at the same time by deleting the resource group. 詳細については、リソース グループを使用した Azure リソースの管理に関するページを参照してください。For more information, see Use resource groups to manage your Azure resources.
    地域Location 米国中部Central US [場所] を使用して、アプリ構成ストアがホストされている地理的位置を指定します。Use Location to specify the geographic location in which your app configuration store is hosted. 最高のパフォーマンスを得るには、アプリケーションの他のコンポーネントと同じリージョンにリソースを作成します。For the best performance, create the resource in the same region as other components of your application.

    App Configuration ストア リソースを作成する

  4. 作成 を選択します。Select Create. デプロイには数分かかることがあります。The deployment might take a few minutes.

  5. デプロイが完了したら、 [設定] > [アクセス キー] を選択します。After the deployment finishes, select Settings > Access Keys. 接続文字列の読み取り専用の主キーをメモします。Make a note of the primary read-only key connection string. この接続文字列は、後で、作成した App Configuration ストアと通信するようにアプリケーションを構成する際に使用します。You'll use this connection string later to configure your application to communicate with the App Configuration store that you created.

  1. [Configuration Explorer](構成エクスプローラー) > [+ 作成] の順に選択して、次のキーと値のペアを追加します。Select Configuration Explorer > + Create to add the following key-value pairs:

    KeyKey Value
    TestApp:Settings:MessageTestApp:Settings:Message Azure App Configuration からのデータData from Azure App Configuration

    [ラベル][コンテンツの種類] は、現時点では空にしておきます。Leave Label and Content Type empty for now.

.NET Framework コンソール アプリを作成するCreate a .NET Framework console app

  1. Visual Studio を起動し、 [ファイル] > [新規] > [プロジェクト] の順に選択します。Start Visual Studio, and select File > New > Project.

  2. [新しいプロジェクトの作成] で、 [コンソール] プロジェクトの種類をフィルターで選択し、 [コンソール アプリ (.NET Framework)] をクリックします。In Create a new project, filter on the Console project type and click on Console App (.NET Framework). [次へ] をクリックします。Click Next.

  3. [新しいプロジェクトの構成] で、プロジェクト名を入力します。In Configure your new project, enter a project name. [フレームワーク] で、 .NET Framework 4.7.1 以上を選択します。Under Framework, select .NET Framework 4.7.1 or higher. Create をクリックしてください。Click Create.

App Configuration からデータを再度読み込むReload data from App Configuration

  1. プロジェクトを右クリックし、 [NuGet パッケージの管理] を選択します。Right-click your project, and select Manage NuGet Packages. [参照] タブで、Microsoft.Extensions.Configuration.AzureAppConfiguration NuGet パッケージを検索してプロジェクトに追加します。On the Browse tab, search and add the Microsoft.Extensions.Configuration.AzureAppConfiguration NuGet package to your project. 見つからない場合は、 [プレリリースを含める] チェック ボックスをオンにします。If you can't find it, select the Include prerelease check box.

  2. Program.cs を開き、.NET Core App Configuration プロバイダーへの参照を追加します。Open Program.cs, and add a reference to the .NET Core App Configuration provider.

    using Microsoft.Extensions.Configuration;
    using Microsoft.Extensions.Configuration.AzureAppConfiguration;
    
  3. 構成に関連したオブジェクトを格納するために 2 つの変数を追加します。Add two variables to store configuration-related objects.

    private static IConfiguration _configuration = null;
    private static IConfigurationRefresher _refresher = null;
    
  4. 指定した更新オプションを使用して App Configuration に接続するように Main メソッドを更新します。Update the Main method to connect to App Configuration with the specified refresh options.

    static void Main(string[] args)
    {
        var builder = new ConfigurationBuilder();
        builder.AddAzureAppConfiguration(options =>
        {
            options.Connect(Environment.GetEnvironmentVariable("ConnectionString"))
                    .ConfigureRefresh(refresh =>
                    {
                        refresh.Register("TestApp:Settings:Message")
                            .SetCacheExpiration(TimeSpan.FromSeconds(10));
                    });
    
            _refresher = options.GetRefresher();
        });
    
        _configuration = builder.Build();
        PrintMessage().Wait();
    }
    

    更新操作がトリガーされたときに、構成データを App Configuration ストアで更新するために使用する設定を指定するには、ConfigureRefresh メソッドを使います。The ConfigureRefresh method is used to specify the settings used to update the configuration data with the App Configuration store when a refresh operation is triggered. AddAzureAppConfiguration メソッドに指定されたオプションで GetRefresher メソッドを呼び出すことによって IConfigurationRefresher のインスタンスを取得でき、このインスタンスの Refresh メソッドを使ってコード内の任意の場所で更新操作をトリガーできます。An instance of IConfigurationRefresher can be retrieved by calling GetRefresher method on the options provided to AddAzureAppConfiguration method, and the Refresh method on this instance can be used to trigger a refresh operation anywhere in your code.

    注意

    構成設定の既定のキャッシュ有効期限は 30 秒ですが、ConfigureRefresh メソッドへの引数として渡されるオプション初期化子で SetCacheExpiration メソッドを呼び出すことにより、オーバーライドできます。The default cache expiration time for a configuration setting is 30 seconds, but can be overridden by calling the SetCacheExpiration method on the options initializer passed as an argument to the ConfigureRefresh method.

  5. App Configuration から構成データの手動更新をトリガーする PrintMessage() というメソッドを追加します。Add a method called PrintMessage() that triggers a manual refresh of configuration data from App Configuration.

    private static async Task PrintMessage()
    {
        Console.WriteLine(_configuration["TestApp:Settings:Message"] ?? "Hello world!");
    
        // Wait for the user to press Enter
        Console.ReadLine();
    
        await _refresher.Refresh();
        Console.WriteLine(_configuration["TestApp:Settings:Message"] ?? "Hello world!");
    }
    

アプリをビルドしてローカルで実行するBuild and run the app locally

  1. ConnectionString という名前の環境変数に、App Configuration ストアへのアクセス キーを設定します。Set an environment variable named ConnectionString, and set it to the access key to your App Configuration store. Windows コマンド プロンプトを使用する場合は、次のコマンドを実行してコマンド プロンプトを再起動し、変更が反映されるようにします。If you use the Windows command prompt, run the following command and restart the command prompt to allow the change to take effect:

     setx ConnectionString "connection-string-of-your-app-configuration-store"
    

    Windows PowerShell を使用する場合は、次のコマンドを実行します。If you use Windows PowerShell, run the following command:

     $Env:ConnectionString = "connection-string-of-your-app-configuration-store"
    
  2. 変更を有効にするために、Visual Studio を再起動します。Restart Visual Studio to allow the change to take effect.

  3. Ctrl + F5 キーを押して、アプリをビルドし、実行します。Press Ctrl + F5 to build and run the console app.

    ローカルでのアプリの起動

  4. Azure Portal にサインインします。Sign in to the Azure portal. [すべてのリソース] を選択し、クイック スタートで作成した App Configuration ストア インスタンスを選択します。Select All resources, and select the App Configuration store instance that you created in the quickstart.

  5. [Configuration Explorer](構成エクスプローラー) を選択して次のキーの値を更新します。Select Configuration Explorer, and update the values of the following keys:

    KeyKey Value
    TestApp:Settings:MessageTestApp:Settings:Message Azure App Configuration からのデータ - 更新済みData from Azure App Configuration - Updated
  6. 実行中のアプリケーションに戻り、Enter キーを押して更新をトリガーし、コマンド プロンプト ウィンドウまたは PowerShell ウィンドウに更新された値を表示します。Back in the running application, press the Enter key to trigger a refresh and print the updated value in the Command Prompt or PowerShell window.

    ローカルでのアプリの更新

    注意

    更新操作の構成を指定するときに SetCacheExpiration メソッドを使ってキャッシュの有効期限を 10 秒に設定したため、構成設定の値は、その設定の前回の更新から少なくとも 10 秒が経過した場合にのみ更新されます。Since the cache expiration time was set to 10 seconds using the SetCacheExpiration method while specifying the configuration for the refresh operation, the value for the configuration setting will only be updated if at least 10 seconds have elapsed since the last refresh for that setting.

リソースのクリーンアップClean up resources

次のチュートリアルに進む場合は、このクイックスタートで作成したリソースを再利用できるよう残しておいてください。If you plan to continue to the next tutorial, keep the resources you created in this quickstart for that you can reuse them.

クイック スタートのサンプル アプリケーションの使用を終える場合は、課金を避けるために、このクイック スタートで作成した Azure リソースを削除することができます。If you're finished with the quickstart sample application, delete the Azure resources you created in this quickstart to avoid charges.

重要

リソース グループを削除すると、元に戻すことができません。Deleting a resource group is irreversible. リソース グループとそのすべてのリソースは完全に削除されます。The resource group and all the resources in it are permanently deleted. 間違ったリソース グループやリソースをうっかり削除しないようにしてください。Make sure that you don't accidentally delete the wrong resource group or resources. このサンプルをホストするためのリソースを、保持したいリソースを含むリソース グループ内に作成した場合は、リソース グループを削除する代わりに、各リソースをそれぞれのウィンドウから個別に削除します。If you created the resources for hosting this sample inside a resource group that contains resources you want to keep, delete each resource individually from its respective pane instead of deleting the resource group.

  1. Azure portal にサインインし、 [リソース グループ] を選択します。Sign in to the Azure portal, and select Resource groups.
  2. [名前でフィルター] ボックスにリソース グループの名前を入力します。In the Filter by name box, enter the name of your resource group.
  3. 結果一覧からリソース グループを選択し、行を右クリックするか省略記号 ( ... ) ボタンを使用してコンテキスト メニューを開きます。In the result list, select the resource group, and either right-click the row or use the ellipsis (...) button to open the context menu.
  4. [リソース グループの削除] を選択します。Select Delete resource group.
  5. リソース グループの削除の確認を求めるメッセージが表示されます。You're asked to confirm the deletion of the resource group. 確認のためにリソース グループの名前を入力し、 [削除] を選択します。Enter the name of your resource group to confirm, and select Delete.

しばらくすると、リソース グループとそのすべてのリソースが削除されます。After a few moments, the resource group and all its resources are deleted.

次の手順Next steps

このチュートリアルでは、App Configuration から動的に構成設定を更新できるように .NET Framework アプリを設定しました。In this tutorial, you enabled your .NET Framework app to dynamically refresh configuration settings from App Configuration. App Configuration へのアクセスを効率化する Azure マネージド ID を使用する方法については、次のチュートリアルに進んでください。To learn how to use an Azure managed identity to streamline the access to App Configuration, continue to the next tutorial.