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