Windows Azure. Быстрый старт. Разработка приложений.Часть 4. Создание приложения, использующего Windows Azure Management API

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

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

Набор программных интерфейсов для управления сервисами Windows Azure (Windows Azure Service Management REST API) позволяет управлять различными аспектами сервисов, развернутых на платформе Windows Azure. Данные программные интерфейсы, обеспечивают практически ту же функциональность, что и портал Windows Azure и могут использоваться для управления учетными записями хранилища, вычислительными сервисами, развертываниями и географическими группами. Все операции выполняются по протоколу HTTPS (SSL) и аутентифицируются через сертификаты X.509. Вся функциональность этих программных интерфейсов доступна непосредственно из сервисов, работающих на платформе Windows Azure, либо из приложений, отсылающих HTTPS-запросы и анализирующих HTTPS-ответы.

В настоящее время через программные интерфейсы Windows Azure Service Management REST API доступны следующие группы операций:

  • Операции с вычислительными сервисами
  • Операции с сервисами хранилища
  • Операции с сертификатами
  • Операции с географическими группами
  • Операции с расположениями сервисов
  • Операции с отслеживанием асинхронных запросов
  • Операции получения системной информации
  • Операции получения истории работы с подпиской

Подробнее об этих операциях см. на сайте MSDN по адресу http://msdn.microsoft.com/ru-ru/library/ee460799.aspx.

В целом, для использования программных интерфейсов управления сервисами Windows Azure необходимо выполнить последовательность действий, состоящую из четырех основных шагов:

  • Получить сертификат управления
  • Сформировать запрос
  • Выполнить запрос
  • Получить ответ

Рассмотрим каждое из этих действий подробнее. Начнем с получения сертификата управления.

Получение сертификата управления

Сертификат управления (Management Certificate, X.509) используется для установления «доверительной связи» между клиентским приложением и инфраструктурой Windows Azure. Подробнее о сертификатах, их создании, загрузке на портал Windows Azure и т.п. см. серию публикаций по развертыванию приложений. Для того, чтобы получить «ответную часть» сертификата для использования в клиентском приложении, нам потребуются следующие данные, которые можно получить на портале Windows Azure:

  • Код подписки (Subscription ID)
  • Отпечаток (Thumbprint) сертификата управления

Эти данные лучше всего хранить в зашифрованном конфигурационном файле или в реестре, но для простоты нашего примера мы сохраним их в двух переменных – subscriptionId и thumbPrint:

01-01

Для получения сертификата нам также потребуются переменные certStore, в которой будет храниться ссылка на локальное хранилище сертификатов, certCollection – ссылка на коллекцию сертификатов и certificate, где будет расположен нужный нам сертификат:

01-02

Ниже приведен код, который открывает хранилище сертификатов для текущего пользователя, ищет сертификат по заданному отпечатку и сохраняет найденный сертификат в переменной certificate.

01-03

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

Формирование запроса

Для формирования запроса нам потребуется переменные BaseURI для хранения базового адреса запроса и operation, в которой будет описана выполняемая нами операция (см. список доступных операций в начале данного обзора). Базовый адрес запроса представляет собой «корневую» точку входа для сервисов управления Windows Azure - https://management.core.windows.net/. Содержимое переменной operation зависит от выбранной нами операции. Например, если мы хотим получить информацию об операционной системе, скажем, список гостевых операционных систем, доступных в Windows Azure, то операция будет выглядеть как «operatingsystems», список семейств операционных систем возвращается операцией «operatingsystemfamilies». Запросы, которые предполагают передачу параметров, должны содержать сформированные соответствующим образом данные – описание XML-элементов для запроса приведено в документации к каждой конкретной операции.

01-04

Далее мы формируем полный адрес запроса, комбинируя адрес «корневой» точки входа, идентификатор подписки и запрашиваемую операцию, формируем HTTP-запрос, добавляем к нему сертификат и в заголовке запроса указываем необходимую версию XML – это требуется для корректной обработки запроса на стороне Windows Azure.

После того как запрос сформирован можно приступать к его выполнению.

Выполнение запроса

В нашем примере выполнение запроса сводится к вызову метода GetResponse класса HttpWebRequest, получению статуса запроса и отображению идентификатора запроса, возвращенного Windows Azure.

01-05

Если все выполнено без ошибок, мы можем приступить к обработке ответа.

Получение ответа

Мы сохраняем ответ в потоке и отображаем его содержимое. Работа завершается освобождением ранее выделенных ресурсов.

image

Ниже показан пример выполнения нашего приложения для получения списка доступных гостевых операционных систем (операция operatingsystems).

01-06

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

В случае, когда выполняемая операция подразумевает передачу параметров, необходимо изменить код формирования запроса. Предположим, что мы хотим использовать программные интерфейсы для управления сервисами Windows Azure для создания нового развертывания (операция Create Deployment). В этом случае следует:

01-07

  • Включить «тело» запроса в сам запрос

01-08

  • Выполнить запрос и обработать полученный ответ

Хорошим источником примеров использования программных интерфейсов для управления сервисами Windows Azure может быть набор командлетов для PowerShell - Windows Azure Platform PowerShell Cmdlets, которые поставляются с полным исходным кодом. Подробнее см. обзор утилит для Windows Azure.

/АФ