Подтвердить что ты не робот

Как файлы cscfg и файлы App.config соотносятся друг с другом для роли Azure Worker?

В мире "on premise" при создании приложения, такого как служба Windows, я классически использовал файл App.config для хранения разнообразной информации о конфигурации приложения, от строк подключения базы данных до информации о конечной точке WCF.

В мире ролей Azure Worker теперь представлены файлы .cscfg, которые, как говорят, содержат информацию "для роли".

Я не понимаю, есть ли эти файлы, чтобы дополнить конфигурацию приложения или полностью заменить файлы App.config. Как эти два файла работают для настройки ролей Azure Worker?

4b9b3361

Ответ 1

Очень простое объяснение:

Концептуально они одинаковы. В традиционном приложении вы используете файл app.config для определения различных параметров, связанных с приложением (в разделе appSettings). Аналогично, вы используете файл cscfg для определения различных параметров, связанных с облачным приложением (в разделе ConfigurationSettings). Как и файл app.config, вы можете определить другие вещи (например, количество экземпляров вашего облачного приложения) в файле cscfg.

Если вы хотите, вы все же можете определить некоторые параметры в файле app.config, но нужно иметь в виду, что файл app.config "упаковывается" и развертывается, и для изменения настроек вы должны иметь переупаковать приложение и развернуть его. Однако вы можете изменить настройки в файле cscfg "на лету", используя либо портал, либо API управления сервисами без необходимости повторной упаковки и повторного развертывания приложения. Например, рассмотрим сценарий, в котором вы определяете строку подключения к базе данных в файле настроек. Если вы укажете, что в app.config, чтобы изменить его, вам нужно внести изменения в файл app.config → Создать приложение → опубликовать приложение. Где, как и в случае cscfg файла, вы просто измените это значение на портале.

Ответ 2

Для роли Web/Work традиционные файлы конфигурации (app/web.config) будут работать так же, как и при локальном развертывании. Но важно знать, что этот файл включен в пакет услуг, что означает его часть развертывания.

Это означает, что вы не можете изменить настройки, которые у вас есть в приложении /web.config, без повторного развертывания приложения. С другой стороны, ServiceConfiguration.cscfg - это то, что определено на уровне слота развертывания Cloud Service, рядом с фактическим пакетом услуг. Это означает, что вы можете изменить этот файл конфигурации без необходимости повторного развертывания вашего приложения. Эти настройки также могут быть доступны из вашего приложения, вызвав RoleEnvironment.GetConfigurationSettingValue (аналогично ConfigurationManager.AppSettings).

Если вы планируете создавать приложение, работающее как на месте, так и в Windows Azure, рассмотрите возможность использования пакета Microsoft.WindowsAzure.ConfigurationManager. Который автоматически выбирает cscfg или app/web.config на основе того, где выполняется ваше приложение.

Совет. Подписавшись на событие RoleEnvironment.Changing/Changed, вы можете перехватить изменения в этом файле конфигурации. Вы можете обработать это, чтобы обновить web.config в коде, например (объяснено здесь).