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