Эти значения принадлежат конфигурационному файлу или базе данных?
Есть несколько значений, которые я хранил в разделах config.ections ASP.NET для каждого "модуля". Мне было интересно, принадлежат ли они вообще этим файлам.
Фон стоит на: Это несколько экземпляров развернутого веб-приложения. Все используют одну базу данных, но имеют свои собственные настройки.
Я уверен, что различия между разработкой и производством идут в файлах конфигурации. Некоторые из известных мне значений должны включать: строки подключения, используемые провайдеры, настройки отладки и т. Д.
Я разобрал все общие части в классы с их собственными правилами и методами. Оставшиеся части представляют собой различные настройки для каждого модуля на каждом сайте. Некоторые из вариантов, в которых я не уверен, включают:
- Для модуля А: Показать / Скрыть параметр
- Для ModuleB, какая терминология будет использоваться для этого поля
- Для ModuleC разрешить конечному пользователю выполнять действие X
4 ответа
Ммм это звучит как вещи, которые вы, возможно, захотите изменить во время выполнения для вашего приложения без необходимости изменять app.config. Мне нравится следовать одному практическому правилу: все, что есть в конфигурации, должно быть для развертывания или настройки сервера. В этом случае ваши настройки, по-видимому, изменяют поведение приложения, поэтому я, вероятно, перенесу их в БД, если это не потребует много усилий.
Рассмотрим ситуацию, когда вам нужно отредактировать одно из значений.
Если значение находится в файле web.config, сохранение изменения в этом файле вызовет перезапуск приложения, что приведет к неудобству при удалении текущих пользователей. Не такая большая проблема, если ваше приложение находится в интрасети, используемой только в рабочее время (хотя вы можете получить гневный звонок от парня, который остался на работе допоздна). Но потенциально проблема на общедоступном веб-сайте с международными пользователями.
Если значение находится в базе данных, это не повлияет на обработку приложения таким образом.
В любом случае, подумайте, кэшируются ли значения в ОЗУ приложения (web.config есть). Находятся ли значения базы данных в переменной приложения или в кэше? Если это так, вы можете не знать, когда произойдут изменения. Если вы не хотите перезапустить приложение.
И какие различные права доступа и разрешения потребуются соответствующим администраторам для внесения изменений? Кто-то должен был бы иметь доступ к веб-серверу (ам), чтобы изменить web.config, или к базе данных (и таблице), чтобы изменить это.
ModuleA и ModuleC звучат так, как будто они могут быть информацией профиля пользователя. Если они не являются динамическими для пользователя, но вы можете добавить более позднюю функциональность, то, возможно, переместите их в БД.
Я написал приложения, где ModuleB был бы также помещен в БД. Такие вещи, как метки форм и т. Д. Могут легко помещаться в БД. Если позднее кто-нибудь решит добавить или удалить двоеточия для всех ярлыков форм, это будет довольно легко сделать, если весь текст будет храниться в БД.
Несколько вопросов: Почему вы используете одну и ту же БД для нескольких экземпляров приложения и как это повлияет на обслуживание? В будущем это будет возможность разделить БД для повышения производительности? Модель конфигурации поддерживает это изменение лучше чем основанная на DB?
Другими словами, вам придется учитывать множество переменных, чтобы ответить на ваш вопрос:-)