Как определить, что приложение Azure работает в среде разработки? - PullRequest
15 голосов
/ 26 мая 2010

Как я могу достоверно определить, работает ли мое приложение Azure в среде разработки, а не в «облаке»?

RoleEnvironment.IsAvailable верно для обоих. Я хочу что-то, что является правдой только в одном случае.

Я спрашиваю об этом, потому что я хочу, чтобы пользователи моей библиотеки могли бесплатно использовать мою библиотеку в dev fabric. Следовательно, ручная установка отдельного идентификатора или флага в конфигурационном файле и сохранение двух конфигов для dev и deploy невозможна.

Ответы [ 4 ]

20 голосов
/ 29 мая 2010

Один из вариантов - взглянуть на RoleEnvironment.DeploymentId - если вы работаете в наборе разработчиков, у него должно быть имя типа 'deploy (n)', где n - это порядковый номер. Если вы работаете в рабочей среде, идентификатор развертывания должен напоминать Guid.

Еще одна вещь, которую вы можете сделать, это посмотреть на имя экземпляра роли. В производстве он должен заканчиваться на _0 (представляющий экземпляр 0). В ткани разработчика это будет заканчиваться на .0

РЕДАКТИРОВАТЬ 1/8/2013 - понял, что ответ, который я дал более 2 лет назад, сильно устарел! Теперь есть также RoleEnvironment.IsEmulated - проверьте детали здесь .

16 голосов
/ 04 октября 2011

Windows Azure 1.5 SDK представил свойство RoleEnvironment.IsEmulated static bool для определения из кода, запущен ли экземпляр роли в эмуляторе вычислений Windows Azure. Эта информация также может быть передана в задачи запуска. Об этом есть отличная статья Стива Маркса .

3 голосов
/ 27 мая 2010

Например:

Структура разработки не полностью имитирует поведение балансировщика нагрузки Windows Azure. Например, если код, выполняющийся в экземпляре веб-роли, вызывает метод SetBusy из обработчика событий RoleEnvironment.StatusCheck, чтобы указать, что экземпляр роли должен быть извлечен из ротации балансировщика нагрузки, вы все равно сможете получить доступ к своей роли из своего браузер, пока его статус RoleInstanceStatus.Busy.

Также Azure Fabric обычно работает под одним из немногих фиксированных образов ОС . Таким образом, вы также можете исследовать System.Environment. для некоторых шаблонов, которые встречаются только в фабрике Azure (например, конкретная версия ОС соответствует ОС Windows Azure или что-то в этом роде).

1 голос
/ 27 июля 2011

Есть очень простая техника, которую я использовал некоторое время - и часто использую ее. Хитрость заключается в том, чтобы установить переменную окружения на вашем компьютере разработчика и, используя базовые методы пакетного файла DOS (или PowerShell), перепрыгнуть через то, что вам не нужно, если эта переменная присутствует. Эта переменная среды не будет присутствовать в облаке.

Я писал об этом здесь: Часто задаваемые вопросы по Azure: Могу ли я создать задачу запуска, которая выполняется только тогда, когда она действительно находится в облаке?

...