Я планирую хранить все свои настройки в разделе приложения app.config(используя класс ConfigurationManager.AppSettings
). Поскольку пользователь меняет настройки с помощью пользовательского интерфейса приложения (нажатие флажков, выбор переключателей и т.д.), Я планирую записать эти изменения в AppSettings
. В то же время, пока программа работает, я планирую постоянно обращаться к AppSettings
из процесса, который будет постоянно обрабатывать данные. Изменения настроек с помощью пользовательского интерфейса должны влиять на обработку данных в режиме реального времени, поэтому процесс будет постоянно обращаться к AppSettings
.
Это хорошая идея в отношении производительности? Использование AppSettings
должно быть "правильным способом" для хранения и доступа к настройкам конфигурации при написании приложений .Net, но я опасаюсь, что этот метод не предназначен для постоянной нагрузки (по крайней мере, с точки зрения постоянно читаемых настроек).
Если у кого-то есть опыт с этим, я был бы очень признателен за ввод.
Обновление: Я должен, вероятно, уточнить несколько моментов.
Это не веб-приложение, поэтому подключение базы данных к приложению может быть излишним для хранения настроек конфигурации. Это приложение Windows Forms.
В соответствии с документацией MSDN, ConfigurationManager
предназначен для хранения не только настроек уровня приложения, но и пользовательских настроек. (Особенно важно, если приложение, например, установлено как приложение с частичным доверием.)
Обновление 2: Я принял ответ lomaxx, потому что Properties
действительно выглядит как хорошее решение, без необходимости добавлять какие-либо дополнительные слои в мое приложение (например, базу данных). При использовании свойств он уже выполняет все кэширование, которое предложили другие. Это означает, что все изменения и последующие чтения выполняются в памяти, что делает его чрезвычайно быстрым. Свойства только записывают изменения на диск, когда вы явно указываете. Это означает, что я могу вносить изменения в настройки конфигурации "на лету" во время выполнения, а затем выполнять только окончательную запись на диск при выходе из программы.
Просто чтобы убедиться, что он действительно сможет обрабатывать требуемую нагрузку, я провел некоторое тестирование на своем ноутбуке и смог сделать 750 000 чтений и 7500 записей в секунду с помощью "Свойства". Это намного выше и выше того, что мое приложение когда-либо даже приблизится к необходимости, чтобы я чувствовал себя в безопасности при использовании "Свойства", не влияя на производительность.