Несколько сред в ASP.Net MVC 2

Я изучаю ASP.Net MVC 2, исходя из PHP и некоторого фона Rails, и одна из немногих вещей, которые мне кажутся неправильными, — это то, как вы управляете настройками конфигурации, такими как строки подключения или конечные точки для внешних служб.

С фреймворком PHP, который использовала моя предыдущая компания, был стандартный формат и соглашение для файлов конфигурации. Моя компания смогла использовать это, чтобы сделать так, чтобы другой файл конфигурации загружался на основе переменной среды (которая была установлена ​​​​в конфигурации Apache). Это сделало очень простым и автоматическим изменение любых параметров конфигурации в зависимости от среды. Насколько мне известно, в Rails есть встроенная версия этой функциональности.

Я знаком с файлами app.config и web.config мира .Net, но есть ли способ изменить их в зависимости от среды, предпочтительно автоматически, и с различными уровнями детализации? Вся система конфигурации кажется очень анемичной по сравнению с тем, к чему я привык.

Я, вероятно, мог бы собрать что-то вместе, чтобы добиться этого, но я хотел посмотреть, какой подход люди используют на практике, или есть ли какой-то стандартный инструмент, который люди используют.


person davidtbernal    schedule 24.11.2010    source источник


Ответы (4)


Вы можете попробовать следующее: Управление средами с несколькими файлами конфигурации с помощью событий перед сборкой

person CGK    schedule 03.12.2010
comment
Это, наряду с решениями, предложенными в комментариях, кажется наиболее жизнеспособным путем. - person davidtbernal; 08.12.2010
comment
@notJim Я использую его в проекте около года, и он мне очень помог. Единственная проблема заключается в том, что вы должны быть осторожны при выборе правильной конфигурации при развертывании. Но это хороший шаг к автоматизации процесса сборки и развертывания. - person CGK; 09.12.2010

Существует web.config трансформации.

Вероятно, я ошибаюсь, но я, кажется, припоминаю, что они не будут применяться, если просто запустить приложение с помощью кнопки «Начать отладку (F5)» внутри Visual Studio, что делает эту функцию непрактичной для многих применений.

person quentin-starin    schedule 24.11.2010
comment
Вы правы, он не применяет эти преобразования, когда вы просто строите. Вам нужно либо запустить его вручную, используя MSBuild, либо создать пакет из Visual Studio. Возможно, .csproj можно изменить, чтобы выполнить преобразование как действие после сборки. - person davidtbernal; 01.12.2010

Очевидно, вы можете запустить свою среду в режиме «Отладка» или «Выпуск». Переменная ENV в Rails и подобные соглашения в PHP явно являются одной из их сильных сторон. Как и при любом выборе, всегда есть компромисс, и это один из них. Когда я работаю на рельсах, я могу оценить возможность загрузки вашей переменной ENV (тест, разработка, производство...) соответствующими драгоценными камнями и тому подобным. Это великолепно. Когда я нахожусь в рельсах, есть также значительная разница между VS intellisense, вероятно, лучшим из них.

Тем не менее, некоторые трюки, которые я видел, заключались в кодировании свойств MachineName в соответствующие строки подключения и тому подобное, поэтому WebConfigs можно было легко передавать между разными разработчиками и серверами и т. д.

person Justin Soliz    schedule 24.11.2010

Лично я использую machine.config для управления специфическими настройками среды. Этот файл содержит настройки, специфичные для машины.

Если у вас нет выделенных компьютеров для каждой среды, но вместо этого вы используете разные веб-сайты в IIS, вы можете иметь корневой файл web.config, расположенный в корне каждого веб-сайта, содержащий настройки, специфичные для среды.

По сути, внутри этого глобального файла конфигурации я храню пары ключ/значение, содержащие имена моего SQL Server, сервера веб-служб и т. д., которые различаются в зависимости от среды, а затем в своем приложении я использую эти ключи для создания окончательных строк соединений, веб-адресов http. , ...

После того, как эти глобальные параметры конфигурации будут установлены, вы можете развернуть одни и те же файлы приложений с помощью web.config во всех средах.

person Darin Dimitrov    schedule 08.12.2010