Возможности Visual Studio 2013 и их использование для облачных вычислений

Разработка облачных приложений для Microsoft Azure в VS 2013

Показывать лекцию целиком

Цель лекции

Ознакомление с типами проектов Visual Studio 2013 для облачных вычислений, созданием облачного проекта, его реализацией, отладкой, публикацией в облаке Microsoft Azure и использованием.

13.1. Введение. Облачные проекты в Visual Studio 2013. Состав Azure SDK

Лекция посвящена разработке облачных сервисов Microsoft Azure [27, 28] в интегрированной среде Visual Studio 2013. По умолчанию даже в самом полном варианте Visual Studio Ultimate облачные проекты (типа Cloud) в набор проектов не входят.

На рис 13.1 изображено создание облачного проекта.

(рис 13.1) Создание облачного проекта

Для того, чтобы это осуществилось, необходимо, после инсталляции Visual Studio, инсталлировать комплекс программ Azure SDK (номер версии 2.3 по состоянию на июнь 2014 г.). На рис 13.2 изображен список инсталлированных компонент Azure SDK. Общий объем скачивания - порядка 300 мегабайт.

(рис 13.2) Список инсталлированных компонент Azure SDK

Инсталлируем на наш компьютер Visual Studio 2013, затем - Azure SDK 2.3.

13.2. Создание облачного проекта

Теперь создаем в VS 2013 облачный проект на языке C# (рис 13.1). С помощью Visual Studio 2013 можно теперь разрабатывать и публиковать в Azure облачные сервисы. Для того, чтобы можно было разрабатывать также другие облачные продукты - например, мобильные сервисы, необходимы дополнительные инсталляции. Об этом - в следующих лекциях и лабораторных работах.

Продолжим создание проекта. Назовем его WindowsAzure4.

Очень важная деталь: для разработки облачного проекта среда Visual Studio должна быть вызвана .

(рис 13.3) Запуск Visual Studio 2013 от имени администратора в Windows 8

Более подробно: выполняется такая последовательность шагов. Переходим на стартовую страницу Windows 8 (с изображением плиток - tiles), на ней находим значок VS 2013, переходим в контекстное меню (правым кликом) и в нем выбираем Запуск от имени администратора. Контекстное меню в таких случаях отображается на месте панели инструментов.

В Windows 7 аналогичные действия реализуются несколько иначе: на панели инструментов находим значок VS 2013, правым кликом переходим в контекстное меню и в нем выбираем Запуск от имени администратора.

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

Вернемся к созданию проекта. Итак, мы в среде VS 2013 от имени администратора. Нажимаем OK для создания облачного проекта.

Открывается окно для выбора роли проекта. Как вы уже знаете из моих курсов по Azure [27, 28], роль - это разновидность облачного приложения. Интуитивно термин роль в контексте Microsoft Azure достаточно точно отражает суть: роль - это разновидность облачного приложения с определенной функцией (ролью) в облаке и в данном проекте. Роль - это код приложения. Экземпляр роли - это экземпляр (запуск) приложения. Число экземпляров ролей - это число запусков облачного приложения. Число экземпляров ролей очень важно: оно фактически выражает степень надежности облачного сервиса. Как правило, рекомендуется иметь как минимум по 2-3 экземпляра каждой роли для большей надежности облака, поскольку облачный сервис - это серверный код, на который ложится большая нагрузка (например, к нему могут обратиться одновременно несколько миллионов пользователей облака). В Microsoft Azure различают следующие основные виды ролей: Web-роль - облачный Web-сервис, Worker-роль - фоновый процесс, реализующий какие-либо вычисления. В новой версии Azure в качестве одного из видов ролей рассматривается также виртуальная машина (VM-роль). В таком случае можно сказать, что Web-роли и Worker-роли могут работать в облаке в нескольких экземплярах (и это даже рекомендуется для надежности), а VM-роль, разумеется, существует всегда в одном экземпляре. Трудно было бы представить себе, если бы виртуальные машины клонировались во многих экземплярах: виртуальная машина - это весьма серьезный облачный ресурс, а надежность виртуальной машины обеспечивается другими средствами - серверной операционной системой, которая реализует данную VM на конкретном компьютере центра обработки данных (в настоящее время это Windows Server 2012 Release 2, либо Linux).

На рис 13.4 изображено окно выбора роли.

(рис 13.4) Окно выбора роли

Мы видим более детально, каковы разновидности ролей в новой версии Azure:

  • ASP.NET Web Role - облачный сервис с пользовательским Web-интерфейсом, реализованным по технологии ASP.NET, основной технологии разработки Web-приложений для платформы .NET;
  • WCF Web Role - Web-роль, реализуемая с помощью Windows Communication Foundation (WCF). Эта технология, как вы уже знаете из лекции 3, обеспечивает создание Web-сервисов. В Microsoft Azure значительная часть сервисной функциональности реализована с помощью WCF;
  • Worker Role - фоновый вычислительный процесс;
  • Cache Worker Role - worker-роль, реализующая кластер кэш-памяти, доступный всем экземплярам роли;
  • Worker Role with Service Bus Queue - worker-роль, реазилующая обработку сообщений, помещенных в очередь сервисной шины (Service Bus) - см. курс [28].
  • Таким образом, Web-роли реализуют различные виды Web-интерфейса, а worker-роли - обработку различных облачных ресурсов, совместно используемых экземплярами ролей.

    Выбираем наиболее часто используемый вариант - ). Подчеркну, что сама роль еще не создана, но информация о виде роли была необходима для формирования конфигурационных файлов облачного сервиса.

    (рис 13.5) Структура облачного проекта, отображенная в Solution Explorer

    Рассмотрим более подробно структуру конфигурационных файлов и всех прочих файлов проекта, автоматически сгенерированных средой VS 2013. Имя созданного сервиса - WindowsAzure4. Среда создала для него три конфигурационных файла: ServiceDefinition.csdef.xml, ServiceConfiguration.Cloud.cscfg.xml и ServiceConfiguration.Cloud.Local.cscfg.xml - определение сервиса, конфигурация сервиса при запуске на локальном компьютере на эмуляторе облака и конфигурация сервиса для его развертывания в облаке. Для полноты привожу начальные состояния этих трех файлов.

    ServiceDefinition.csdef.xml:

    <?xml version="1.0" encoding="utf-8"?>
    <ServiceDefinition name="WindowsAzure4" 
        xmlns="http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceDefinition" 
        schemaVersion="2014-01.2.3">
    </ServiceDefinition>
        

    ServiceConfiguration.Cloud.cscfg.xml:

    <?xml version="1.0" encoding="utf-8"?>
    <ServiceConfiguration serviceName=" WindowsAzure4" 
        xmlns="http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceConfiguration" 
        osFamily="4" osVersion="*" schemaVersion="2014-01.2.3">
    </ServiceConfiguration>
        

    Файл ServiceConfiguration.Local.cscfg.xml идентичен предыдущему файлу.

    Содержание файлов очевидно и особых комментариев не требует: в них указаны имя сервиса, ссылка на пространство имен для используемых в файлах XML-тегов, номера версий XML и XML-схем, ссылка на версию ОС.

    Теперь создадим роль в данном проекте. Для этого в контекстном меню пункта ).

    (рис 13.6) Окно добавления роли в облачный проект

    Выбираем из двух вариантов ).

    (рис 13.7) Окно New ASP.NET Project: Web Role1

    В этом окне предлагаются варианты шаблонов для создания Web-роли:

  • Empty - пустая роль (шаблон кода, в который необходимо добавить нужные действия роли при наступлении типовых событий);
  • Web Forms - реализация роли на основе Web-формы;
  • MVC (Model - Vew - Controller) - реализация роли на основе известной парадигмы Модель - Вид - Контроллер;
  • Web API - реализация роли на основе Web API;
  • Single Page Application - реализация роли на основе шаблона кода, управляющего единственной Web-страницей;
  • Facebook - реализация роли на основе шаблона кода, обращающегося к широко известной социальной сети Facebook.
  • Выбираем вариант Single Page Application, в котором создается Web-страница с возможностью регистрации на ней и последующего входа по зарегистрированному имени. Для управления страницей используются скрипты на языке JavaScript, которые генерируются автоматически средой VS 2013.

    13.3. Отладочный запуск Web-страницы на эмуляторе облака

    После генерации всех файлов проекта выполним отладочный запуск созданной Web-страницы на эмуляторе облака, входящем в состав версии Visual Studio, расширенной инструментами Azure SDK.

    Для этого выбираем в среде VS 2013 пункт меню Internet Explorer, в виде жирной зеленой стрелки, направленной вправо, появившийся в среде под пунктом меню Debug.

    Среда выполняет сначала сборку (компиляцию) облачного проекта. Затем она запускает эмулятор облака, о чем информирует специальным сообщением.

    На эмуляторе облака новая страница запускается под традиционным локальным URL-адресом http://127.0.0.1:2289, со специальным номером порта. Если среда VS 2013 была вызвана не от имени администратора, то для такого запуска не хватает полномочий.

    13.4. Публикация сервиса в облаке

    Для публикации сервиса в облаке рекомендую сначала создать "пустой" сервис в облаке Azure (см. курс [28]). Входим в облако со своей подпиской, логином и паролем и создаем в нем сервис под именем saf-service. Все детали описаны в [3].

    Пустой сервис используем, чтобы опубликовать и развернуть в облаке созданную нами реализацию Web-страницы. Для этого на вкладке Solution Explorer входим в контекстное меню на имени роли WebRole1 и выбираем действие Publish (опубликовать в облаке).

    Перед публикацией среда VS 2013 требует от нас войти в облако с соответствующими логином и паролем. После входа в облако среда получает информацию о том, что в нем под нашей учетной записью имеется пустой сервис , по нему мы впоследствии можем обратиться и визуализировать страницу через любой Web-браузер. Особо подчеркну, что новая версия среды VS 2013 является гораздо более удобной для публикации сервисов в облаке, чем предыдущая - VS 2010, с которой я достаточно много работал, в том числе и над созданием и публикацией облачных сервисов. В предыдущей версии среда требовала в явном виде указания конфигурационных файлов сервиса .csdef и .cscfg и запоминания директории, в которой они размещены на локальном компьютере. Теперь, в версии VS 2013, этого не требуется: среда сама "понимает", откуда взять конфигурационные файлы, что гораздо удобнее.

    Публикация в облаке может занять продолжительное время, в зависимости от скорости Интернет-коннекции. В моем примере она заняла около получаса. При этом создается и поддерживается в актуальном состоянии специальная вкладка для вывода информации из облака, в том числе - информации о созданных и испольуемых учетных записях хранения (Azure Storage Accounts [28]) и т.д. Таким образом, в среде VS 2013 в процессе публикации в облаке создается как бы окно в "облачный мир", через которое пользователь имеет возможность получать необходимую информацию, связанную с публикацией сервиса.

    Наконец, сервис опубликован и развернут в облаке, о чем среда выдает соответствующее сообщение.

    Теперь можно либо войти в облако через его портал http://manage.windowsazure.com и убедиться, что наш сервис создан и развернут.

    Также возможно, зная URL-адрес публикации, вызвать браузер и визуализировать новую страницу в нем. На рис 13.8 изображен результат визуализации страницы в браузере Google Chrome (данный браузер взят просто для примера, чтобы убедиться, что и в нем все работает).

    (рис 13.8) Результат визуализации страницы в браузере Google Chrome

    Также после публикации сервиса в облаке среда VS 2013 генерирует и записывает в директории облачного проекта следующие конфигурационные XML-файлы:

  • saf-serviceProduction.azurePubxml - информация об опубликованном в облаке сервисе: имя сервиса в облаке (saf-service), метка его развертывания (WindowsAzure4 - имя облачного проекта в среде VS 2013), его опции и т.д.;
  • конфигурационные файлы содержат следующую информацию: ServiceDefinition.csdef - спецификацию интерфейса сервиса в стандарте WSDL; ServiceConfiguration.Cloud.cscfg и ServiceConfiguration.Local.cscfg - число экземпляров Web-роли (1).
  • 13.5. Резюме

    Среда VS 2013 предоставляет удобные возможности для разработки облачного сервиса Microsoft Azure, его публикации и развертывания в облаке. Предварительно, до создания облачного сервиса, требуется инсталляция инструментального комплекса Azure SDK. Сервис создается в виде Web-роли, т.е. облачного Web-приложения. При создании используется целый ряд шаблонов кода для разных вариантов создания сервиса, в том числе - шаблона одностраничного сервиса, который и использован в лекции. Рекомендуется до публикации сервиса в облаке предварительно войти в него и создать "пустой" сервис, что гарантирует выделение облачного URL-адреса. Затем сервис публикуется в облаке непосредственно из среды. В нужный момент среда запрашивает облачный логин и пароль и обеспечивает "окно в облако" на момент публикации в нем сервиса. В целом возможности среды VS 2013 по созданию облачных сервисов, даже в сравнении с предыдущими версиями среды, производят просто ошеломляющее впечатление своим удобством, логичностью и надежностью. Еще раз подчеркнем, какую замечательную работу выполнила корпорация Microsoft по развитию среды Visual Studio, что особенно проявляется именно в облачных проектах.

    Ключевые термины

    Azure SDK - инструментальный программный комплекс для поддержки разработки облачных сервисов в среде Visual Studio 2013; http://manage.windowsazure.com - портал Microsoft Azure.
    ServiceDefinition.csdef.xml - конфигурационный файл определения облачного сервиса, после публикации в облаке преобразуемый в спецификацию WSDL-интерфейса.
    ServiceConfiguration.Cloud.cscfg.xml - конфигурационный файл для развертывания сервиса в облаке; содержит число экземпляров Web-роли.
    ServiceConfiguration.Local.cscfg.xml - конфигурационный файл для запуска сервиса на локальном компьютере на эмуляторе облака; содержит число экземпляров Web-роли.
    VM-роль - виртуальная машина, развернутая в облаке Azure.
    Web-роль - облачный сервис с Web-интерфейсом, развернутый в облаке Azure.
    Worker-роль - фоновый вычислительный процесс, развернутый в облаке Azure.
    Развертывание в облаке - запуск облачного Web-сервиса с целью его последующего использования.
    Публикация в облаке - создание Web-сайта с URL-адресом специального вида в домене облака Azure с целью его последующего развертывания.

    Краткие итоги

    Среда VS 2013 предоставляет удобные возможности для разработки облачного сервиса Microsoft Azure, его публикации и развертывания в облаке. Предварительно, до создания облачного сервиса, требуется инсталляция инструментального комплекса Azure SDK. Сервис создается в виде Web-роли, т.е. облачного Web-приложения. При создании используется целый ряд шаблонов кода для разных вариантов создания сервиса, в том числе - шаблона одностраничного сервиса, который и использован в лекции. Рекомендуется до публикации сервиса в облаке предварительно войти в него и создать "пустой" сервис, что гарантирует выделение облачного URL-адреса. Затем сервис публикуется в облаке непосредственно из среды. В нужный момент среда запрашивает облачный логин и пароль и обеспечивает "окно в облако" на момент публикации в нем сервиса. В целом возможности среды VS 2013 по созданию облачных сервисов, даже в сравнении с предыдущими версиями среды, производят просто ошеломляющее впечатление своим удобством, логичностью и надежностью. Еще раз подчеркнем, какую замечательную работу выполнила корпорация Microsoft по развитию среды Visual Studio, что особенно проявляется именно в облачных проектах.

    Набор для практики

    Вопросы

  • Что такое Azure SDK?
  • Достаточно ли только инсталляции среды Visual Studio для создания облачных проектов, либо для этого требуются дополнительные инсталляции?
  • Что такое Web-роль?
  • Что такое Worker-роль?
  • Что такое VM-роль?
  • Что такое эмулятор облака?
  • Что такое развертывание сервиса в облаке?
  • Что такое публикация сервиса в облаке?
  • Какой вид имеют URL-адреса облачных сервисов, публикуемых в облаке Azure?
  • Достаточно ли обычных полномочий при запуске среды VS 2013 при создании и публикации облачных сервисов, либо необходимы специальные полномочия?
  • Как запустить VS 2013 от имени администратора в ОС Windows 7? В ОС Windows 8?
  • Опишите последовательность шагов при создании облачного сервиса.
  • Опишите последовательность действий, которую среда VS 2013 выполняет при публикации сервиса в облаке.
  • Каким образом может быть использован облачный Web-сервис?
  • Упражнения

  • Выполните разработку облачного Web-сервиса по описанной в лекции схеме.
  • Выполните публикацию сервиса в облаке.
  • Проверьте работоспособность опубликованного в облаке сервиса в различных Web-браузерах.
  • Темы для курсовых работ, рефератов, эссе

  • Обзор Azure SDK (реферат).
  • Обзор возможностей среды VS 2013 по созданию и публикации Web-сервисов (реферат).
  • Обзор концепции роли в облачной платформе Microsoft Azure (реферат).
  • Дополнительные материалы, презентации

    Презентация к данной лекции: VS_2013_Course_13.pptx.

    Вернуться к учебному плану