Эти значения принадлежат конфигурационному файлу или базе данных? - PullRequest
6 голосов
/ 22 октября 2008

Есть несколько значений, которые я хранил в разделах config.ections ASP.NET для каждого «модуля». Мне было интересно, принадлежат ли они вообще этим файлам.

Фон имеет следующий вид: это несколько развернутых экземпляров веб-приложения. Все они используют одну и ту же базу данных, но имеют свои собственные настройки.

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

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

  • Для модуля А, Показать / Скрыть параметр
  • Для ModuleB, какая терминология будет использоваться для этого поля
  • Для ModuleC: разрешить конечному пользователю выполнять действие X

Ответы [ 4 ]

4 голосов
/ 22 октября 2008

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

1 голос
/ 22 октября 2008

Рассмотрим ситуацию, когда вам нужно отредактировать одно из значений.

Если значение находится в файле web.config, сохранение изменения в этом файле приведет к перезапуску приложения, что приведет к неудобству при удалении текущих пользователей. Не такая большая проблема, если ваше приложение находится в интрасети, используемой только в рабочее время (хотя вы можете получить злой звонок от парня, который остался на работе допоздна) Но потенциально проблема на общедоступном веб-сайте с международными пользователями.

Если значение находится в базе данных, это никак не повлияет на обработку приложения.

В любом случае, рассмотрите, кэшируются ли значения в ОЗУ приложения (web.config есть). Значения базы данных находятся в переменной приложения или в кэше? Если это так, вы можете не знать, когда произойдут изменения. Если вы не хотите перезапустить приложение.

И какие различные права доступа и разрешения потребуются соответствующим администраторам для внесения изменений? Кто-то должен иметь доступ к веб-серверу (ам), чтобы изменить web.config, или к базе данных (и таблице), чтобы это изменить.

1 голос
/ 22 октября 2008

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

Я написал приложения, в которых ModuleB также был бы помещен в БД. Такие вещи, как метки форм и т. Д., Могут легко помещаться в БД. Если позднее кто-нибудь решит добавить или удалить двоеточия для всех меток формы, это будет довольно легко сделать, если весь текст будет сохранен в БД.

0 голосов
/ 22 октября 2008

Несколько вопросов: почему вы используете одну и ту же БД для нескольких экземпляров приложения и как это повлияет на обслуживание? В будущем это будет возможность разделить БД для повышения производительности? Модель конфигурации поддерживает это изменение лучше, чем основанное на БД?

Другими словами, вам нужно учесть множество переменных, чтобы ответить на ваш вопрос: -)

...