Значения конфигурации в БД или в файле?

У меня есть некоторые значения конфигурации для веб-приложения asp.net. После запуска системы они будут поддерживаться системным администратором. Следует ли мне хранить эти значения в базе данных или в файле конфигурации? Есть ли лучшая практика для такого рода вещей?


person Aaron Palmer    schedule 29.10.2008    source источник


Ответы (7)


Легко и удобно создать надежный интерфейс для редактирования значений в базе данных.

Сложнее создать хороший файл конфигурации.

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

person Ilya Kochetov    schedule 29.10.2008
comment
Илья, я считаю, что не все так просто. Вы говорите о дополнительных страницах, тестировании, управлении безопасностью. Я уже говорил о тестировании? Это требует времени, усилий и денег. Я бы сказал, что конфигурационный файл имеет простые и удобные преимущества. Вам нужна база данных, когда: 1. администраторы не будут иметь доступа к файлу конфигурации 2. Существуют многоуровневые роли безопасности 3. Параметры должны считываться другими приложениями, а не только этим приложением ASP.NET. Другими словами, в более крупных и сложных ситуациях файла конфигурации недостаточно. Когда его будет достаточно, используйте его. Что мне не хватает? - person Concrete Gannet; 14.12.2012

Я всегда рекомендовал бы базу данных просто потому, что вы можете относительно легко создать пользовательский интерфейс администратора и с такой же легкостью проводить аудит всех изменений. Хотя вы можете сделать то же самое с изменениями в файле, всегда предпочтительнее использовать маршрут к базе данных с какой-то областью управления Admin. Особенно, если вы хотите знать, кто что и когда изменил.

Также в нашей среде изменение файла конфигурации в случае ошибки включает в себя утверждение всего процесса управления изменениями и т. Д., Что довольно болезненно. Так что, если вы потратите время на включение параметров конфигурации в базу данных, я думаю, что в долгосрочной перспективе это сработает лучше. Только мои 0,02 доллара.

person Ta01    schedule 29.10.2008
comment
Согласен, если аудит необходим, это причина для базы данных. Если ваш процесс управления изменениями отличается только потому, что концептуальная информация хранится в файле по сравнению с базой данных, этот процесс ошибочен. - person Concrete Gannet; 14.12.2012

Я предпочитаю текстовый файл конфигурации, стиль .ini или стиль XML по этим двум причинам:

1 - Вы можете помещать комментарии в текстовый файл.

2 - В текстовых редакторах есть команда «отменить».

person Corey Trager    schedule 29.10.2008

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

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

Однако все это основано на нестрогой основе и не всегда так.

person thismat    schedule 29.10.2008
comment
Обновление web.config заставляет IIS перезапускать сайт. - person Aaron Palmer; 29.10.2008
comment
Как я уже сказал, все зависит от контекста. - person thismat; 29.10.2008
comment
Это правда, что когда вы меняете файл конфигурации, приложение сразу же реагирует. При следующем обращении отображается новое, а не старое поведение. Это неправда, что IIS перерабатывает. ASP.NET использует уведомления об изменении файла NTFS, поэтому он информируется об изменении содержимого файла. Это намного легче, чем переработка IIS. - person Concrete Gannet; 14.12.2012

Я предпочитаю избегать баз данных, если могу, и мне не нужна производительность. Если вам нужна / есть база данных, я бы сказал, поместите как можно больше в одном месте. Одно дело управлять.

person kenny    schedule 29.10.2008

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

Значения конфигурации, хранящиеся в файлах, очень полезны для конкретных конфигураций компьютера (например, если вы используете подключенный диск для определения местоположения, и каждый пользователь может иметь другое сопоставление, например, привод CD / DVD).

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

person Ian Andrews    schedule 30.10.2008
comment
JettGeek, исходный вопрос касался веб-приложения ASP.NET, поэтому настройки для конкретного компьютера для пользователей не применяются. - person Concrete Gannet; 14.12.2012

Я предпочитаю текстовый .ini файл. Их легко редактировать, и их легко перемещать, когда ваше приложение перемещается. Вот пример Setting class, который может вам пригодиться.

person Protagonist    schedule 01.03.2009
comment
Главный герой, я не понимаю, зачем вы вообще это делаете. В принципе, ini-файлы и файлы конфигурации похожи: простые текстовые файлы, которые можно изменять с помощью текстового редактора, достаточно Блокнота. Разница с файлами конфигурации заключается в обширной поддержке .NET Framework в пространствах имен System.Configuration и System.Web.Configuration. Таким образом, файлы конфигурации дают вам преимущества идеи файла ini, а также обширную поддержку инфраструктуры. Единственное преимущество, которое я вижу для файлов ini, - это субъективное мнение, что ini более читабельны для людей. Просто потренируйтесь читать XML! - person Concrete Gannet; 14.12.2012