21 Обзор возможностей Visual Studio 2013. Azure SDK

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

По умолчанию даже в самом полном варианте Visual Studio Ultimate облачные проекты (типа Cloud) в набор проектов не входят.

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

С помощью Visual Studio 2013 можно теперь разрабатывать и публиковать в Azure облачные сервисы. Для того, чтобы можно было разрабатывать также другие облачные продукты - например, мобильные сервисы, необходимы дополнительные инсталляции.

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

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

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

Разновидности ролей в новой версии 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).

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


Наиболее часто используемый вариант - ASP.NET Web Role. Создается облачный проект и его конфигурационные файлы, которые отображаются на вкладке Solution Explorer.
Рассмотрим более подробно структуру конфигурационных файлов и всех прочих файлов проекта, автоматически сгенерированных средой VS 2013. Среда создала для него три конфигурационных файла: 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-схем, ссылка на версию ОС.

Теперь создадим роль в данном проекте. Для этого в контекстном меню пункта Roles выбираем пункт Add (добавление роли) / New Web Role Project. Открывается окно Add New .NET 4.5 Role Project. Выбираем из двух вариантов ASP.NET Web Role. Открывается другое окно - New ASP.NET Web project: WebRole1.

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

Для публикации сервиса в облаке рекомендую сначала создать "пустой" сервис в облаке Azure.

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

Перед публикацией среда VS 2013 требует от нас войти в облако с соответствующими логином и паролем. После входа в облако среда получает информацию о том, что в нем под нашей учетной записью имеется пустой сервис saf-service, и предлагает опубликовать разработанную нами страницу в облаке именно по этому URL-адресу. Он будет иметь вид: http://saf-service.cloudapp.net, по нему мы впоследствии можем обратиться и визуализировать страницу через любой Web-браузер.

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

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

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

Вопросы

  • Что такое 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 (реферат).