Для большинства моих приложений я использую iBatis. Сеть для доступа к базе данных / моделирование и log4Net для входа. В выполнении этого мне нужны много *.config файлов для каждого проекта. Например, для простого приложения у меня должны быть следующие *.config файлы:
Когда эти приложения идут от DEV для ТЕСТИРОВАНИЯ к Продуктивным средам, настройки, содержавшиеся в этих файлах изменение в зависимости от среды.
Когда количество файлов составлено при наличии 5-10 (или больше) поддержка исполняемых файлов на проект, рабочая нагрузка на рабочей группе обслуживания инфраструктуры (те делающие развертывания к различным средам) становится довольно высокой. У нас также есть высокий риск одного из файлов конфигурации, пропускаемых, или опечатка в файле конфигурации.
Что лучший способ состоит в том, чтобы избежать этих рисков? Я должен объединить все файлы конфигурации в один файл? (который возможен с iBatis?) Я знаю, что с VisualStudio 2010 они представляют, преобразовывает для этих файлов конфигурации, которые позволяют разработчику устанавливать все настройки для различных сред и затем динамично (в зависимости от начатой сборки), файлы конфигурации обновляются к правильным версиям. (VS 2010 - преобразовывает),
Спасибо за любую справку, которую можно обеспечить.
Вы можете изменить основной файл * .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) с файлами веб-приложения
Другой способ - создать файлы конфигурации во время сборки или развертывания, используя что-то вроде сценария 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
Среда, которая будет развернута, должна быть предоставлена сценарию сборки некоторым способом конечно, но вам все равно нужно это делать.