Как обнаружить, что лазурное приложение работает в среде разработки?
Как я могу определить, работает ли приложение Azure в разработке, а не в "облаке"?
RoleEnvironment.IsAvailable верен для обоих. Я хочу что-то, что верно только в одном случае.
Я спрашиваю об этом, потому что я хочу, чтобы пользователи моей библиотеки могли бесплатно использовать мою библиотеку в dev fabric. Следовательно, вручную помещать отдельный идентификатор или флаг в файл конфигурации и сохранять две конфигурации для dev и развернуть не представляется возможным.
Ответы
Ответ 1
Один из вариантов состоит в том, чтобы взглянуть на RoleEnvironment.DeploymentId
- если вы работаете в dev-dev, оно должно иметь имя типа "развертывание (n)", где n - некоторый порядковый номер. Если вы работаете на производстве, идентификатор развертывания должен напоминать Guid.
Еще одна вещь, которую вы можете сделать, - посмотреть имя экземпляра роли. В производстве он должен заканчиваться на _0
(представляющий пример 0). В dev-ткани он заканчивается на .0
EDIT 1/8/2013 - понял этот ответ, который я дал более 2 лет назад, довольно устарел! Теперь также RoleEnvironment.IsEmulated
- ознакомьтесь с деталями здесь.
Ответ 2
В Windows Azure 1.5 SDK было установлено свойство RoleEnvironment.IsEmulated static bool, чтобы определить из кода, запущен ли экземпляр роли в эмуляторе вычислений Windows Azure.
Эта информация также может быть передана в задачи запуска. Здесь есть замечательная статья от Стива Маркса .
Ответ 3
Например:
Ткань разработки не полностью моделирует поведение балансировки нагрузки Windows Azure. Например, если код, запущенный в экземпляре веб-роли, вызывает метод SetBusy из обработчика события RoleEnvironment.StatusCheck, чтобы указать, что экземпляр роли должен быть выведен из вращения балансира нагрузки, вы все равно сможете получить доступ к своей роли из своего браузером, а его статус - RoleInstanceStatus.Busy.
Также лазурная ткань обычно работает под одним из немногих фиксированных изображений ОС. Таким образом, вы также можете исследовать System.Environment. для некоторых шаблонов, которые встречаются только в лазурной ткани (то есть конкретная версия ОС, соответствующая ОС Windows Azure или что-то вроде этого).
Ответ 4
Существует очень простая техника, которую я использовал некоторое время - и часто использую ее. Хитрость заключается в том, чтобы установить переменную окружения на вашем компьютере-разработчике и использовать базовые методы пакетного файла DOS (или PowerShell), перепрыгнуть через то, что вам не нужно, если эта переменная присутствует. Эта переменная среды не будет присутствовать в облаке.
Я писал об этом здесь: Azure FAQ: могу ли я создать задачу запуска, которая выполняется только тогда, когда действительно находится в облаке?