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

App Configuration .NET Core クライアント ライブラリでは、アプリケーションを再起動させることなく必要に応じて構成設定のセットを更新できます。The App Configuration .NET Core 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 Core アプリの作成を完了しておいてください。Before you continue, finish Create a .NET Core app with App Configuration first.

このチュートリアルの手順は、任意のコード エディターを使用して実行できます。You can use any code editor to do the steps in this tutorial. 推奨のエディターは Visual Studio Code です (Windows、macOS、および Linux プラットフォームで使用できます)。Visual Studio Code is an excellent option that's available on the Windows, macOS, and Linux platforms.

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

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

前提条件Prerequisites

このチュートリアルを実行するには、.NET Core SDK をインストールします。To do this tutorial, install the .NET Core SDK.

Azure サブスクリプションをお持ちでない場合は、開始する前に無料アカウントを作成してください。If you don't have an Azure subscription, create a free account before you begin.

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

Program.cs を開いてファイルを更新します。System.Threading.Tasks 名前空間の参照を追加し、AddAzureAppConfiguration メソッドに更新の構成を指定し、Refresh メソッドを使用して手動更新をトリガーするようにします。Open Program.cs and update the file to add a reference to the System.Threading.Tasks namespace, to specify refresh configuration in the AddAzureAppConfiguration method, and to trigger manual refresh using the Refresh method.

using System;
using System.Threading.Tasks;

namespace TestConsole
{
class Program
{
    private static IConfiguration _configuration = null;
    private static IConfigurationRefresher _refresher = null;

    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();
    }

    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!");
    }
}
}

更新操作がトリガーされたときに、構成データを 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 could 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.

アプリをビルドしてローカルで実行する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"
    

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

     export ConnectionString='connection-string-of-your-app-configuration-store'
    
  2. 次のコマンドを実行して、コンソール アプリをビルドします。Run the following command to build the console app:

     dotnet build
    
  3. ビルドが正常に完了したら、次のコマンドを実行して、アプリをローカルで実行します。After the build successfully completes, run the following command to run the app locally:

     dotnet run
    

    クイック スタートのアプリ (ローカルで起動)

  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 ウィンドウに更新された値を表示します。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 Core アプリを設定しました。In this tutorial, you enabled your .NET Core 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.