2010-05-26 2 views
15

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

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

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

ответ

20

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

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

EDIT 1/8/2013 - понял этот ответ, который я дал более 2 лет назад, довольно устарел! Теперь же есть - уточните детали here.

+1

+1 для обновления вашего ответа – Tom

3

Например:

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

Также лазурная ткань обычно проходит под one of the few fixed OS Images. Таким образом, вы также можете исследовать System.Environment. для некоторых шаблонов, которые встречаются только в лазурной ткани (то есть конкретная версия ОС, соответствующая ОС Windows Azure или что-то вроде этого).

1

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

Я писал о нем здесь: Azure FAQ: Can I create a Startup Task that executes only when really in the Cloud?

16

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

+1

Он не является надежным, хотя, поскольку он основан только на переменной среды, и для тех, кто хочет пропустить лицензирование на основе этой проверки, должен быть легко настроен эта переменная, и, следовательно, IsEmulated вернет true , –

Смежные вопросы