Как я могу инкапсулировать глобальные настройки конфигурации из разных частей приложения в один файл? - PullRequest
0 голосов
/ 05 октября 2011

У нас есть приложение на основе IIS с различными веб-приложениями, некоторыми сторонними компонентами и несколькими службами.

  • Сервер1

    • AppPool1
      • App1
    • AppPool2
      • Стороннее приложение
  • Сервер2

    • AppPool3
      • Стороннее приложение 2
      • Приложение 2
    • Служба Windows
    • CLR Хранимый процесс

Цель состоит в том, чтобы объединить все относящиеся к среде настройки (например, строки подключения, URL-адреса и т. Д.) В один файл конфигурации для каждой среды (разработка, тестирование, интеграция, производство).Вещи, относящиеся к приложению, должны быть основаны на этом «глобальном» файле настроек и отдельных файлах настроек для каждого приложения.

Я должен использовать встроенный статический класс System.Configuration.ConfigurationManager, потому что некоторые сторонние инструменты зависят от него.
Мне известны следующие возможные подходы с использованием System.Configuration.ConfigurationManager:

  • Отдельные файлы (текущий, избыточный подход)
  • Machine.config (слишком глобально)
  • Иерархическая конфигурация в IIS (не влияет на Service и CLR Proc)

Редактировать: Элемент linkedConfiguration влияет только на политики привязки загрузчика.

Есть лидругие методы?Какой из них лучше?

1 Ответ

0 голосов
/ 06 октября 2011

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

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

...