ConfigurationManager.AppSettings
すべての構成設定をアプリケーションの app.config セクションに (クラスを使用して) 保存する予定です。ユーザーがアプリの UI を使用して設定を変更すると (チェックボックスをクリックする、ラジオ ボタンを選択するなど)、それらの変更を に書き出す予定AppSettings
です。同時に、プログラムの実行中は、AppSettings
常にデータを処理するプロセスから常にアクセスする予定です。UI を介した設定の変更は、リアルタイムでデータ処理に影響を与える必要があるため、プロセスはAppSettings
常に にアクセスします。
これはパフォーマンスに関して良い考えですか?を使用AppSettings
することは、.Net アプリを作成するときに構成設定を保存してアクセスするための「正しい方法」であると思われますが、この方法は一定の負荷を意図していないのではないかと心配しています (少なくとも設定が常に読み取られるという点では)。
誰かがこれを経験したことがあるなら、私は大いに感謝します。
更新:おそらくいくつかの点を明確にする必要があります。
これは Web アプリケーションではないため、データベースをアプリケーションに接続することは、単に構成設定を保存するためだけにやり過ぎかもしれません。これは Windows フォーム アプリケーションです。
MSDN のドキュメントによると、ConfigurationManager
はアプリケーション レベルの設定だけでなく、ユーザー設定も保存するためのものです。(たとえば、アプリケーションが部分信頼アプリケーションとしてインストールされている場合は特に重要です。)
更新 2:Properties
アプリケーション (データベースなど) に追加のレイヤーを追加する必要がなく、確かに良いソリューションのように見えるため、lomaxx の回答を受け入れました。プロパティを使用する場合、他の人が提案したすべてのキャッシュが既に行われています。これは、すべての変更とその後の読み取りがすべてメモリ内で行われることを意味し、非常に高速になります。プロパティは、明示的に指示された場合にのみ変更をディスクに書き込みます。つまり、実行時にオンザフライで構成設定を変更し、プログラムの終了時にディスクへの最終的な保存のみを行うことができます。
必要な負荷を実際に処理できるかどうかを確認するために、ラップトップでテストを行ったところ、プロパティを使用して毎秒 750,000 回の読み取りと 7,500 回の書き込みを行うことができました。これは、私のアプリケーションが必要とするレベルをはるかに超えているため、パフォーマンスに影響を与えずにプロパティを使用しても安全だと感じています。