Сократите количество файлов конфигурации как можно меньше

Для большинства моих приложений я использую iBatis. Сеть для доступа к базе данных / моделирование и log4Net для входа. В выполнении этого мне нужны много *.config файлов для каждого проекта. Например, для простого приложения у меня должны быть следующие *.config файлы:

  • app.config ([AssemblyName]. [Расширение] .config)
  • [AssemblyName].SqlMap.config
  • [AssemblyName].log4Net.config
  • [AssemblyName].SqlMapProperties.config
  • providers.config

Когда эти приложения идут от DEV для ТЕСТИРОВАНИЯ к Продуктивным средам, настройки, содержавшиеся в этих файлах изменение в зависимости от среды.

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

Что лучший способ состоит в том, чтобы избежать этих рисков? Я должен объединить все файлы конфигурации в один файл? (который возможен с iBatis?) Я знаю, что с VisualStudio 2010 они представляют, преобразовывает для этих файлов конфигурации, которые позволяют разработчику устанавливать все настройки для различных сред и затем динамично (в зависимости от начатой сборки), файлы конфигурации обновляются к правильным версиям. (VS 2010 - преобразовывает),

Спасибо за любую справку, которую можно обеспечить.

7
задан Scott 6 November 2009 в 18:24
поделиться

2 ответа

Вы можете изменить основной файл * .config (например, web.config или app.config), добавив разделы конфигурации

Я использую log4net, Active Record и Ciphersafe в одном из моих веб-приложений и в моем web.config У меня есть

<configuration>
...
<configSections>
        <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
            <section name="activerecord" type="Castle.ActiveRecord.Framework.Config.ActiveRecordSectionHandler, Castle.ActiveRecord" />
            <section name="cipherSafeConfigSection" type="Obviex.CipherSafe.AppConfigSectionHandler,CipherSafe" />
    </configSections>
...
</configuration>

Затем у меня есть раздел конфигурации для каждого, например для log4net у меня есть

<configuration>
...
<log4net>
        <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
            <file value="Logs\\TimeRegWeb.log"/>
            <appendToFile value="true"/>
            <datePattern value="yyyyMMdd"/>
            <rollingStyle value="Date"/>
            <filter type="log4net.Filter.LevelRangeFilter">
                <acceptOnMatch value="true"/>
                <levelMin value="DEBUG"/>
                <levelMax value="FATAL"/>
            </filter>
            <layout type="log4net.Layout.PatternLayout">
                <conversionPattern value="%-5p %d %5rms %-22.22c{1} %-18.18M - %m%n"/>
            </layout>
        </appender>
        <root>
            <level value="DEBUG"/>
            <appender-ref ref="RollingLogFileAppender"/>
        </root>
    </log4net>
...
</configuration>

Таким образом, у меня есть только 1 файл web.config. Затем я создал отдельный проект в моем решении с именем ProjectFiles, который содержит все мои внешние сборки и файлы конфигурации. Затем, когда я делаю запрос на обновление своего решения на стороне операций, я копирую соответствующий файл конфигурации (test или prod) с файлами веб-приложения

2
ответ дан 7 December 2019 в 14:34
поделиться

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

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

Например, у вас может быть файл шаблона, читающий что-то вроде

database.uri=@@dbUri
database.user=@@dbUser
database.credentials=@@dbCredentials

, и для каждой среды файл, из которого взяты эти теги, например,

dbUri=jdbc:oracle:10.1.1.10:1224:ORCL
dbUser=Scott
dbCredentials=Tiger

Среда, которая будет развернута, должна быть предоставлена ​​сценарию сборки некоторым способом конечно, но вам все равно нужно это делать.

2
ответ дан 7 December 2019 в 14:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: