チュートリアル: .NET Framework アプリで動的な構成を使用する
App Configuration からのデータは、.NET Framework アプリでアプリ設定として読み込むことができます。 詳細については、クイックスタートをご覧ください。 ただし、.NET Framework の設計により、アプリ設定はアプリの再起動時にのみ更新できます。 App Configuration .NET プロバイダーは、.NET Standard ライブラリです。 アプリの再起動なしで、構成の動的なキャッシュと更新がサポートされます。 このチュートリアルでは、.NET Framework コンソール アプリに、動的構成の更新を実装する方法について説明します。
このチュートリアルでは、以下の内容を学習します。
- App Configuration ストアへの変更に合わせて構成を更新するように .NET Framework アプリを設定する。
- 最新の構成をアプリケーションに挿入する。
前提条件
- アクティブなサブスクリプションが含まれる Azure アカウント。 無料で作成できます。
- App Configuration ストア。 ストアを作成する。
- Visual Studio
- .NET Framework 4.7.2 以降
キーと値を追加する
App Configuration ストアに次のキーと値を追加し、[ラベル] と [コンテンツのタイプ] を既定値のままにします。 Azure portal または CLI を使用してストアにキーと値を追加する方法の詳細については、キーと値の作成に関する記事を参照してください。
キー | 値 |
---|---|
TestApp:Settings:Message | Azure App Configuration からのデータ |
.NET Framework コンソール アプリを作成する
Visual Studio を開始し、 [新しいプロジェクトの作成] を選択します。
[新しいプロジェクトの作成] で、 [コンソール] プロジェクトの種類でフィルターを掛け、プロジェクト テンプレート リストから [コンソール アプリ (.NET Framework)] と C# を選びます。 [次へ] を押します。
[新しいプロジェクトの構成] で、プロジェクト名を入力します。 [フレームワーク] で、 .NET Framework 4.7.2 以上を選択します。 [作成] をクリックします。
App Configuration からデータを再度読み込む
プロジェクトを右クリックし、 [NuGet パッケージの管理] を選択します。 [参照] タブで、次の NuGet パッケージの最新バージョンを検索し、プロジェクトに追加します。
Microsoft.Extensions.Configuration.AzureAppConfiguration
Program.cs を開き、次の名前空間を追加します。
using Microsoft.Extensions.Configuration; using Microsoft.Extensions.Configuration.AzureAppConfiguration;
構成に関連したオブジェクトを格納するために 2 つの変数を追加します。
private static IConfiguration _configuration; private static IConfigurationRefresher _refresher;
指定した更新オプションを使用して App Configuration に接続するように
Main
メソッドを更新します。static void Main(string[] args) { var builder = new ConfigurationBuilder(); builder.AddAzureAppConfiguration(options => { options.Connect(Environment.GetEnvironmentVariable("ConnectionString")) // Load all keys that start with `TestApp:`. .Select("TestApp:*") // Configure to reload the key 'TestApp:Settings:Message' if it is modified. .ConfigureRefresh(refresh => { refresh.Register("TestApp:Settings:Message") .SetCacheExpiration(TimeSpan.FromSeconds(10)); }); _refresher = options.GetRefresher(); }); _configuration = builder.Build(); PrintMessage().Wait(); }
ConfigureRefresh
メソッドでは、変更の監視のために App Configuration ストア内のキーが登録されます。Register
メソッドには、登録済みのキーが変更された場合にすべての構成値を更新するかどうかを示すために使用できる、省略可能なブール型パラメーターrefreshAll
があります。 この例では、キー TestApp:Settings:Message のみが更新されます。SetCacheExpiration
メソッドでは、構成の変更を確認するために新しい要求が App Configuration に対して行われるまでに経過する必要がある最小時間を指定します。 この例では、既定の有効期限である 30 秒をオーバーライドし、デモンストレーションの目的で代わりに 10 秒を指定しています。App Configuration からの構成データの更新をトリガーする
PrintMessage()
というメソッドを追加します。private static async Task PrintMessage() { Console.WriteLine(_configuration["TestApp:Settings:Message"] ?? "Hello world!"); // Wait for the user to press Enter Console.ReadLine(); await _refresher.TryRefreshAsync(); Console.WriteLine(_configuration["TestApp:Settings:Message"] ?? "Hello world!"); }
ConfigureRefresh
メソッドを単独で呼び出しても、構成は自動的に更新されません。 インターフェイスIConfigurationRefresher
からTryRefreshAsync
メソッドを呼び出して、更新をトリガーします。 この設計は、アプリケーションがアイドル状態の場合でも App Configuration に要求が送信されるのを回避することを目的としています。 アプリケーションがアクティブであるとみなす場所にTryRefreshAsync
呼び出しを含めることができます。 たとえば、受信メッセージ、注文、複雑なタスクの反復を処理するときなどです。 また、アプリケーションが常にアクティブである場合は、タイマー内に含めることができます。 この例では、Enter キーを押すとTryRefreshAsync
を呼び出します。 何らかの理由で呼び出しTryRefreshAsync
が失敗した場合でも、アプリケーションではキャッシュされた構成が引き続き使用されます。 構成されたキャッシュの有効期限が切れて、TryRefreshAsync
呼び出しがアプリケーション アクティビティによって再度トリガーされると、もう 1 回試行されます。TryRefreshAsync
の呼び出しは、構成されたキャッシュの有効期限が過ぎる前には操作を実行しないので、頻繁に呼び出された場合でも、パフォーマンスへの影響は最小限になります。
アプリをビルドしてローカルで実行する
ConnectionString という名前の環境変数を、App Configuration ストアの作成中に取得した読み取り専用のキー接続文字列に設定します。
Windows コマンド プロンプトを使用する場合は、次のコマンドを実行します。
setx ConnectionString "<connection-string-of-your-app-configuration-store>"
Windows PowerShell を使用する場合は、次のコマンドを実行します。
$Env:ConnectionString = "<connection-string-of-your-app-configuration-store>"
変更を有効にするために、Visual Studio を再起動します。
Ctrl + F5 キーを押して、アプリをビルドし、実行します。
Azure portal で、App Configuration ストアの [構成エクスプローラー] に移動し、次のキーの値を更新します。
キー 値 TestApp:Settings:Message Azure App Configuration からのデータ - 更新済み 実行中のアプリケーションに戻り、Enter キーを押して更新をトリガーし、コマンド プロンプト ウィンドウまたは PowerShell ウィンドウに更新された値を表示します。
Note
更新操作の構成を指定するときに
SetCacheExpiration
メソッドを使ってキャッシュの有効期限を 10 秒に設定したため、構成設定の値は、その設定の前回の更新から少なくとも 10 秒が経過した場合にのみ更新されます。
リソースをクリーンアップする
この記事で作成したリソースを継続して使用しない場合は、ここで作成したリソース グループを削除して課金されないようにしてください。
重要
リソース グループを削除すると、元に戻すことができません。 リソース グループとそのすべてのリソースは完全に削除されます。 間違ったリソース グループやリソースをうっかり削除しないようにしてください。 この記事のリソースを、保持したい他のリソースを含むリソース グループ内に作成した場合は、リソース グループを削除する代わりに、各リソースをそれぞれのペインから個別に削除します。
- Azure portal にサインインし、 [リソース グループ] を選択します。
- [名前でフィルター] ボックスにリソース グループの名前を入力します。
- 結果一覧でリソース グループ名を選択し、概要を表示します。
- [リソース グループの削除] を選択します。
- リソース グループの削除の確認を求めるメッセージが表示されます。 確認のためにリソース グループの名前を入力し、 [削除] を選択します。
しばらくすると、リソース グループとそのすべてのリソースが削除されます。
次の手順
このチュートリアルでは、App Configuration から動的に構成設定を更新できるように .NET Framework アプリを設定しました。 ASP.NET Web アプリケーション (.NET Framework) で動的構成を有効にする方法については、次のチュートリアルに進んでください。
App Configuration へのアクセスを効率化する Azure マネージド ID を使用する方法については、次のチュートリアルに進んでください。