Настройки конфигурации в (web.config | app.config) по сравнению с объектом статического класса

Я просто смотрю на исходный код BlogEngine.Net и был заинтригован тем, как он хранит настройки приложения.

Вместо того, чтобы использовать web.config или app.config, к которым я привык, источник использует статический объект класса, реализованный с использованием одноэлементного шаблона для достижения настроек приложения. информация по-прежнему хранится в файле настроек, но любые вызовы для извлечения информации осуществляются через объект класса, который предварительно загружает всю информацию в значения свойств.

Есть ли преимущества разных подходов?

11.12.2008 16:08:50
4 ОТВЕТА
РЕШЕНИЕ

Если у вас есть административная область, где вы можете изменить параметры конфигурации, запись в файл web.config приведет к перезапуску приложения и потере всех данных сеанса всеми пользователями. Использование отдельного файла конфигурации предотвратит это.

5
11.12.2008 16:19:51
Если используется постоянная система управления сеансами (т. Е. SQLServer или сервер состояний ASP.Net), это не приводит к потере сеансов в результате моего тестирования.
JamesEggers 7.01.2009 15:17:22

Серьезным недостатком этой модели является невозможность восприятия изменений, внесенных вне приложения. Поскольку настройки конфигурации загружаются при запуске и сохраняются в памяти, все изменения должны быть сделаны либо через страницы администрирования, либо когда приложение находится в автономном режиме.

1
7.01.2009 15:05:42
Веб-приложение автоматически запускается при обновлении web.config.
Kon 7.01.2009 15:08:50
+1 Я полагаю, что Dscoduc имеет в виду сохранение изменений конфигурации в статическом классе, а не в веб-конфигурации.
Andrew Hare 7.01.2009 15:17:21
Да, извините за то, что не разъяснил это. Поскольку настройки сохраняются в файле settings.xml, они не обновляются автоматически с диска при изменении. И поскольку речь шла об одноэлементном паттерне, который вы не можете просто сделать
Dscoduc 7.01.2009 17:08:07

Есть плюсы и минусы наличия свойств, которые действуют как аксессоры настроек конфигурации.

С одной стороны, наличие такого класса со свойствами предоставляет команде разработчиков более организованный и более многократно используемый код.

С другой стороны, каждый раз, когда вы добавляете новый параметр конфигурации, вам придется обновлять класс и перестраивать приложение?

0
7.01.2009 15:14:25

Насколько я понимаю, файлы web.config загружаются в кеш при запуске приложения. Я не искал это в течение очень долгого времени, поэтому я могу ошибаться. Если это правда, тогда я не понимаю, почему одноэлементная статическая модель класса была бы полезна. Если вместо стандартного управления сеансами по умолчанию используется служба состояний ASP.Net или сервер состояний SQL, перезапуск веб-приложения (через IIS или путем изменения конфигурации) не повлияет на сеансы. В общем, я не совсем уверен, почему blogengine.net пойдет по этому пути.

0
7.01.2009 15:24:43