Windows AZURE: библиотека классов: как узнать, работает ли веб-роль или обычный веб-сервис - PullRequest
4 голосов
/ 05 октября 2011

У меня есть библиотека классов, на которую иногда ссылается служба WebRole, а иногда - обычная служба WCF, работающая в IIS на внутреннем сервере.(Это внутренняя библиотека классов инфраструктуры, содержащая утилиты)

Есть ли способ внутри этой библиотеки классов определить, работает ли она в настоящее время в среде Windows AZURE или в IIS?

Ответы [ 3 ]

2 голосов
/ 05 октября 2011

Мы используем статический класс с парой свойств, которые используют RoleEnvironment из Microsoft.WindowsAzure.ServiceRuntime:

    public static bool InAzureEnvironment
    {
        get
        {
            return RoleEnvironment.IsAvailable;
        }
    }

    public static bool InCloud
    {
        get
        {
            return InAzureEnvironment && !RoleEnvironment.IsEmulated;
        }
    }

, который работает просто отлично.

1 голос
/ 05 октября 2011

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

В конце концов, приложение почти наверняка будет перепаковано специально для публикации в Azure, так что конфигурация для конкретного развертывания не представляет большой проблемы.

0 голосов
/ 06 октября 2011

Для кода, который должен быть независим от облачной среды, было бы неплохо использовать переменную среды.Для служб, работающих в Windows Azure, вы должны добавить что-то вроде:

<Runtime>
  <Environment>
     <Variable name="INCLOUD" value="true" />
 </Environment>
...

Эта переменная env теперь будет отображаться только в Windows Azure (конечно, при условии, что вы не устанавливаете это локально, когда не в облаке).Вашему коду не нужно ничего «знать» о RoleEnvironment или ссылках на ServiceHosting.dll.

Если вам необходимо определить, используете ли вы эмуляцию или какие-либо настройки RoleEnvironment, вы можете использовать новые переменные Xpath на основе переменныха здесьПроверьте http://msdn.microsoft.com/en-us/library/windowsazure/hh404006.aspx для получения дополнительной информации об этом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...