2009-11-04 5 views
1

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

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

  • JNDI позволяет приложениям ссылаться на ресурсы предприятия (например, базы данных, JavaMail сессии, JCR репозитории и т.д.) по имени, а затем имя отображаются в конкретную конфигурацию в соответствии с условиями (dev, test, prod).
  • Другим примером могут быть файлы свойств. У вас может быть множество свойств (например, «encryption_key», «smtp.server.url», «admin.email» и т. Д.), Которые приложение захватывает из файла свойств в известном месте при запуске приложения. Ключи свойств отображаются на разные значения, в зависимости от среды.
  • Некоторые рамки разработки приложений (например, Spring) знают, как извлекать файлы свойств, чтобы свойства могли быть интегрированы с каркасной конфигурацией.

Другой подход, который я видел в Java, - это подход, основанный на построении времени, в котором вы используете Ant (подстановка токенов) или Maven (профили сборки) для создания пакетов, специфичных для конкретной среды. Мне совсем не нравится этот подход, потому что я предпочитаю развернуть точно такой же пакет для тестирования и разработки. Но это подход, который я видел.

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

В идеале я бы хотел получить решение, которое позволит мне поддерживать не относящую к окружающей среде конфигурацию, тесно связанную с приложением, экстернализируя только окружающую среду. Чтобы вернуться к примерам Java, много раз «конфигурация» действительно является чем-то, что контролирует разработчик, например, включать фильтр сервлетов Sitemesh для оформления страниц, вложение зависимостей или проводку приложений, сопоставление такого-то метода MVC-контроллера на URI запроса и т. д. Это то, что я не хочу быть экстернализированным. Но ключи шифрования, строки подключения БД, уровни журналов и т. Д., Да.

ответ

4

Исполняемые файлы .NET и веб-приложения по умолчанию реализуют файлы .config, которые выполняют именно то, что вы описываете. Существует полное пространство имен, System.Configuration, которое имеет дело с файлами .config.

Ищите справочный материал по App.config и Web.config. App.config - это общий термин для стандартного конфигурационного файла исполняемого файла, который называется foo.exe.config, где foo.exe - это имя исполняемого файла. Web.config применяется к веб-приложениям.

This seems to be a decent primer on App.config.

 Смежные вопросы

  • Нет связанных вопросов^_^