Недавно я обнаружил, что файл «Web.Config» содержит раздел
, который, похоже, подходит для хранения настроек приложения. Черт возьми, у него даже есть программный способ доступа к файлу через стандартную системную библиотеку. Так что, проявив все свои умения, я написал интерфейс для доступа к нему, а затем конкретную реализацию интерфейса, показанную здесь:
public interface IAppSettings
{
IEnumerable GetValues(string componentName, string settingName);
IEnumerable> GetValuePairs(string componentName, string settingName);
void SetValues(string componentName, string settingName, IEnumerable valueList, bool append);
void SetValuePairs(string componentName, string settingName, IEnumerable> pairList, bool append);
}
Затем я обнаружил, что сохраняет настройки обратно в "web.config" во время работы приложения. вызывает перезапуск всего приложения . Это кажется мне совершенно неразумным, потому что если я много пишу в web.config и приложение каждый раз перезагружается, то такие вещи, как HttpRuntime.Cache, полностью очищаются, что делает мой кеш бесполезным, потому что он постоянно очищается и заполняется заново.
Итак, мне интересно: где мне хранить настройки приложения?
Есть ли хорошее решение для этого, чтобы мне не приходилось катить свои собственные?
РЕДАКТИРОВАТЬ:
Хорошо, спасибо всем, кто предложил использовать БД и потенциальную схему таблицы. Я думаю, что собираюсь использовать следующую схему:
settings:
index NUMBER NOT NULL AUTO_INCREMENT <== Primary Key
component NVARCHAR(255) NOT NULL
setting NVARCHAR(255) NOT NULL
key NVARCHAR(255)
value NVARCHAR(255) NOT NULL
Хотя я не думаю, что сделаю «настройку» P-Key, но вместо этого буду использовать индекс Auto-Incr. Таким образом, если у меня есть приложение, которому нужно отправить что-то по почте нескольким менеджерам, я могу сохранить много:
index component setting value
1 RequestModule ManagerEmail manager1@someplace
2 RequestModule ManagerEmail manager2@someplace
А затем я могу использовать:
IEnumerable GetValues(string componentName, string settingName);
И оно вернет список адресов электронной почты, а не только одно значение.
Есть ли в этом смысл?