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 по адресу http://www.microsoft.com/express/Web/
- Windows Azure SDK и Windows Azure Tools for Microsoft Visual Studio. Эти средства можно загрузить с сайта Microsoft по адресу http://www.microsoft.com/windowsazure/sdk/. Если выбрать опцию All- In- One- Installation, то вы сможете загрузить все компоненты, необходимые для создания Windows Azure-приложений, включая и Visual Web Developer 2010.
Более подробно об этих компонентах, их установке и назначении см. в блоге по адресу http://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 см. в блоге по адресу http://blogs.technet.com/b/isv_team/archive/2011/01/12/3379823.aspx и на сайте MSDN (http://msdn.microsoft.com/en-us/library/microsoft.windowsazure.service-runtime.aspx)
Развертывание под эмулятором Windows Azure
Если теперь нажать кнопку Ctrl + F5 (эта команда приведет к запуску приложения без отладчика, так как на этом шаге нам пока нечего отлаживать), наше приложение запустится под локальным эмулятором Windows Azure (подробнее о локальном эмуляторе Windows Azure см. в блоге по адресу http://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 описывает число экземпляров каждой роли, используемой в приложении (подробнее об этом см. в блоге по адресу http://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 (http://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.
/АФ