Microsoft Windows Azure. Быстрый старт

В цикле статей «Windows Azure. Быстрый старт» мы приведем ряд практических примеров, которые позволят разработчикам быстро получить основные навыки работы с Windows Azure, Azure Storage и SQL Azure.

Часть 1. Публикация приложений в Windows Azure

В первой части цикла «Windows Azure. Быстрый старт» мы рассмотрим практические шаги по публикации приложения в Windows Azure. Для успешного выполнения всех описанных ниже шагов вам потребуется доступ к Windows Azure. Помимо этого, на компьютере, где вы планируете изучать Windows Azure, необходимо установить следующие программные компоненты:

  • Microsoft Visual Studio 2010 с поддержкой создания Web-приложений или Microsoft Visual Web Developer 2010 Express. Бесплатную версию Visual Studio 2010 можно загрузить с сайта Microsoft по адресу https://www.microsoft.com/express/Web/
  • Windows Azure SDK и Windows Azure Tools for Microsoft Visual Studio. Эти средства можно загрузить с сайта Microsoft по адресу https://www.microsoft.com/windowsazure/sdk/. Если выбрать опцию All-In-One-Installation, то вы сможете загрузить все компоненты, необходимые для создания Windows Azure-приложений, включая и Visual Web Developer 2010.

Более подробно об этих компонентах, их установке и назначении см. в блоге по адресу https://blogs.technet.com/b/isv_team/archive/2010/12/27/3377315.aspx.

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

Начнем с того, что запустим Visual Studio 2010 (в нашем случае это будет Microsoft Visual Studio 2010 Ultimate) в режиме с повышенными привилегиями – Start | All Programs | Visual Studio 2010 | Microsoft Visual Studio 2010, нажмем правую кнопку «мыши» и выполним команду Run As Administrator.

Примечание. Запуск Visual Studio с повышенными привилегиями позволит гарантировать отсутствие ошибок при выполнении различных операций как на локальном уровне, так и с Windows Azure. Если ваша учетная запись принадлежит к группе администраторов, Visual Studio можно запускать и в стандартном режиме, но лучше всегда запускать средство разработки с повышенными привилегиями во избежание возможных ошибок доступа к локальным или удаленным ресурсам.

После этого в Visual Studio выполним команду File | New Project. В списке Installed Templates выберем язык программирования (в нашем примере это будет C#) и раздел Cloud. Укажем имя проекта – в нашем примере это будет WA_Publish. По умолчанию проект будет сохранен в пользовательском профиле в папке Documents\Visual Studio 2010\Projects. Выполненные нами действия показаны на следующей иллюстрации.

Рис. Создание проекта на Windows Azure

Нажмем кнопку «Ok» и перейдем к выбору компонентов нашего проекта (они называются «роли»). Выберем ASP.NET Web Role и нажмем стрелку вправо для добавления этой роли к нашему проекту. Выполненные нами действия показаны на следующей иллюстрации.

Рис. Добавление роли

Нажмем кнопку «Ok». В разметке страницы внесем ряд изменений – вместо стандартного текста вставим текст «Windows Azure Application» и элемент Label, который будет отображать идентификатор нашего приложения.

Рис. Новая разметка для приложения

В коде страницы добавим ссылку на сборку Microsoft.WindowsAzure.ServiceRuntime и обращение к свойству RoleEnvironment.DeploymentID для получения идентификатора нашего приложения:

Рис. Код приложения

Более подробно про пространство имен Microsoft.WindowsAzure.ServiceRuntime см. в блоге по адресу https://blogs.technet.com/b/isv_team/archive/2011/01/12/3379823.aspx и на сайте MSDN (https://msdn.microsoft.com/en-us/library/microsoft.windowsazure.service-runtime.aspx)

Развертывание под эмулятором Windows Azure

Если теперь нажать кнопку Ctrl + F5 (эта команда приведет к запуску приложения без отладчика, так как на этом шаге нам пока нечего отлаживать), наше приложение запустится под локальным эмулятором Windows Azure (подробнее о локальном эмуляторе Windows Azure см. в блоге по адресу https://blogs.technet.com/b/isv_team/archive/2010/12/29/3377670.aspx) и мы увидим следующий результат:

Рис. Запуск приложения под локальным эмулятором

Отметим, что число, стоящее в скобках после слова Deployment может отличаться от показанного на иллюстрации – оно увеличивается после каждого развертывания приложения под локальным эмулятором. Как мы увидим ниже, идентификатор нашего приложения, запущенного в Windows Azure, будет отличаться от идентификатора, запущенного под локальным эмулятором – в Windows Azure это всегда будет GUID. Другой вариант определения факта запуска под локальным эмулятором или под Windows Azure – это проверка значения свойства RoleEnvironment.CurrentRoleInstance.InstanceEndpoints – в случае работы под локальным эмулятором, оно будет 127.0.0.1. Для этого код, используемый для отображения информации нужно заменить на следующий:

Info.Text = RoleEnvironment.CurrentRoleInstance.InstanceEndpoints["Endpoint1"].IPEndpoint.ToString();

Закроем браузер, в котором отображалось наше приложение, и посмотрим на проект в Visual Studio. Обратим внимание на два конфигурационных файла – ServiceConfiguration.cscfg и ServiceDefinition.csdef. Файл ServiceDefinition.csdef содержит данные, используемые Windows Azure для хостинга приложения и указывает, какие роли нужны для приложения. Файл ServiceConfiguration.cscfg описывает число экземпляров каждой роли, используемой в приложении (подробнее об этом см. в блоге по адресу https://blogs.technet.com/b/isv_team/archive/2010/12/29/3377670.aspx). Для нашего упражнения никаких изменений вносить в эти конфигурационные файлы не требуется.

Рис. Конфигурационные файлы приложения

Мы готовы к публикации нашего приложения в Windows Azure. Для целей нашего упражнения разделим процесс публикации на два этапа – создание всех необходимых файлов на локальном диске и публикация этих файлов через портал Windows Azure.

Далее выполним следующие шаги:

  • Нажмем правую кнопку «мыши» на имени проекта в Solution Explorer (в нашем примере это будет WA_Publish)
  • Выберем команду Publish

Рис. Вызов команды Publish

Выберем опцию Create Service Package Only и нажмем кнопку «Ok».

Рис. Диалоговая панель Deploy Windows Azure project

В результате выполнения команды Publish с опцией Create Service Package Only в каталоге \Visual Studio 2010\Projects\WA_Publish\WA_Publish\bin
\Debug\Publish будут созданы два файла – ServiceConfiguration.cscfg и WA_Publish.cspkg.

Рис. Файлы для развертывания приложения

Файл публикации представляет собой ZIP-архив с рядом файлов, подготовленных для развертывания в инфраструктуре Windows Azure. Ради любопытства мы можем открыть этот файл каким-либо архиватором. На самом деле, чтобы изучить реальное содержимое пакета развертывания нужно выполнить ряд дополнительных действий, о которых мы поговорим ниже.

Рис. Содержимое пакета развертывания

Развертывание в Windows Azure

Наш следующий шаг на пути развертывания приложения – подключение к порталу Windows Azure (https://www.microsoft.com/windowsazure/). На первой странице следует выбрать команду Sign in to the Management Portal, затем – ввести свой Windows Live ID.

Рис. Подключение к порталу Windows Azure. Шаг 1

Рис. Подключение к порталу Windows Azure. Шаг 2

После подключения к порталу Windows Azure в левой панели выберем группу «Hosted Services, Storage Accounts & CDN» и выберем подписку, с которой мы будем работать – у вас может быть более одной подписки, следует выбрать ту, у которой статус помечен как «Active».

Нажмем кнопку «New Hosted Service» в левом верхнем углу экрана.

Рис. Создание нового сервиса в Windows Azure

В диалоговой панели Create a New Hosted Service укажем следующие данные:

  • Имя нашего сервиса (Enter a name for your service) – WA_Deploy
  • URL-префикс (Enter a URL prefix for your service) – WADeploy
  • Регион – (Choose a region or affinity group) выберем Европу (North Europe)
  • Выберем опцию Deploy to stage environment (Deployment options)
  • Убедимся в том, что включена опция Start after successful deployment
  • Имя пакета развертывания (Deployment name) - WA_Deploy
  • Package Location – нажмем кнопку «Browse Locally» и выберем файл WA_Publish.cspkgна локальном диске (см. выше)
  • Configuration File нажмем кнопку «Browse Locally» и выберем файл ServiceConfiguration.cscfgна локальном диске (см. выше)
  • После этого нажмем кноку «Ok» для начала развертывания нашего приложения в Windows Azure

Описанные шаги показаны на следующей иллюстрации.

Рис. Атрибуты нового сервиса

Первое, что мы увидим – это предупреждение о том, что наше приложение не будет покрываться Windows Azure Compute SLA:

Рис. Предупреждение Windows Azure Compute SLA

Данное предупреждение связано с тем, что компания Microsoft не может обеспечить выполнение Service Level Agreement (SLA) с уровнем доступности сервиса 99.95% в том случае, если развертывается только один экземпляр сервиса – высокая доступность обеспечивается только при наличии двух или более экземпляров. Так как мы развертываем приложение в демонстрационных целях, данное предупреждение можно проигнорировать. Практически ту же информацию можно получить и на портале Windows Azure в разделе Deployment Health.

Рис. Предупреждение Windows Azure Compute SLA в разделе Deployment Health

Нажмем кнопку «Yes» для продолжения процесса развертывания. Инфраструктура Windows Azure начинает процесс развертывания и конфигурирования нашего приложения на основании указанных при создании «облачного» приложения файлов.

Процесс развертывания приложения

По шагам этот процесс выглядит следующим образом (показаны состояния компонентов приложения, отображаемые на портале Windows Azure в процессе развертывания приложения):

  • Сначала происходит создание сервиса и загрузка пакета развертывания и конфигурационного файла. Статусы компонентов приложения отображаются так:
    • Hosted Service – Creating
    • Deployment – Preparing to upload
  • Загрузка файлов завершается их обработкой. Статусы компонентов приложения отображаются так:
    • Deployment – Finalizing upload
  • Далее – создание виртуальной машины на основе данных, переданных в конфигурационных файлах. Статусы компонентов приложения отображаются так:
    • Deployment - Creating
  • Следующий шаг – подготовка виртуальной машины. Статусы компонентов приложения отображаются так:
    • Deployment – Starting
    • Role – Starting
    • Instance - Stopped
  • Затем происходит инициализация виртуальной машины. Статусы компонентов приложения отображаются так:
    • Deployment – Initializing
    • Role – Initializing
    • Instance – Waiting for host
  • Следующий шаг – превращение виртуальной машины в экземпляр роли. Статусы компонентов приложения отображаются так:
    • Deployment – Initializing
    • Role – Initializing
    • Instance – Creating host
  • Затем выполняется запуск виртуальной машины с кодом нашего приложения. Статусы компонентов приложения отображаются так:
    • Deployment – Initializing, Role – Initializing, Instance – Starting host
    • Deployment – Busy, Role – Busy, Instance – Starting Role
    • Deployment – Busy, Role – Busy, Instance – Initializing Role
  • Последний шаг – готовность нашего приложения к работе. Статусы компонентов приложения отображаются так:
    • Deployment – Ready
    • Role – Ready
    • Instance – Ready

Как мы отметили выше, по завершении процесса развертывания (он может занять 5-10 мин.) статус приложения становится Ready и для нашего приложения становится активным его DNS-имя, нажатие которого приводит к запуску приложения. Как мы отметили выше, идентификатор приложения отображается как GUID. Этот факт, а также URL-адрес указывают на то, что мы запустили приложение в «облаке».

Рис. Работа приложения в “облаке”

Наше упражнение завершим удалением всех созданных артефактов. Для этого выполним команду «Stop» для остановки нашего приложения и виртуальной машины, которая выделена для его работы, а затем – команду «Delete» для удаления конфигурации и пакета развертывания.

В следующей части

В следующей части мы рассмотрим другие способы развертывания приложений в Windows Azure.