Санкт-Петербургский государственный университет
Опубликован: 01.07.2013 | Доступ: свободный | Студентов: 448 / 118 | Длительность: 16:00:00
Лекция 4:

Базовые технологии, использованные для реализации новой версии Microsoft Windows Azure (2013)

< Лекция 3 || Лекция 4: 12345 || Лекция 5 >

Web-роль – это интерактивное .NETприложение, обслуживаемое IIS, - Web Application или Web Service Windows Communication Foundation (WCF).

Worker-роль – это независимый изолированный фоновый процесс. Предоставляются способы доступа к нему со стороны внешних приложений.

Fabric Agent сохраняет метрики ресурсов, такие, как использования и ошибки.

Модель сервисов: Определение сервисов. Файл ServiceDefiniton.csdef определяет общую структуру сервиса:

  • vmsize: ядра CPU (1 – 8) и память для виртуальной машины VM (1.7 – 15 GB)
  • full/partial trust: поддерживается исполнение native-кода
  • Endpoint: внутренние и внешние точки взаимодействия (http, https, tcp)
  • LocalStorage: временная память на сервере, на котором исполняется объект
  • ConfigurationSettings: имена параметров конфигурации

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

Структура файла определения сервисов изображена на рис. 4.7.

Структура файла ServiceDefiniton.csdef

Рис. 4.7. Структура файла ServiceDefiniton.csdef

Модель сервисов: Конфигурация сервисов. Файл ServiceConfiguration.csdef задает конфигурацию сервисов. В нем указывается число экземпляров каждой роли и определяются значения для установок конфигурации.

Содержимое файла ServiceConfiguration может быть изменено во время выполнения.

Структура файла конфигурации сервисов изображена на рис. 4.8.

Структура файла ServiceConfiguration.csdef

Рис. 4.8. Структура файла ServiceConfiguration.csdef

Диаграмма классов Windows Azure Role API изображена на рис. 4.9.

Диаграмма классов Windows Azure Role API

Рис. 4.9. Диаграмма классов Windows Azure Role API

Класс BasicEntryPoint (с потомками MyWebRole и MyWorkerRole) содержит методы жизненного цикла - onStart(), onStop(), run().

Класс RoleEnvironment имеет потомков Role и RoleInstance.

Реализация ролей изображена на рис. 4.10.

Реализация ролей

Рис. 4.10. Реализация ролей

В реализации роли определяется класс-потомок RoleEntryPoint и перегружаются методы жизненного цикла. Обычно перегружается метод OnStart(). Регистрируется обработчик, который прослушивает изменения в конфигурации учетной записи облачной памяти. Когда обнаруживается изменение, роль повторно стартуется (переиспользуется).

Реализация ролей Web и Worker изображена на рис. 4.11.

Реализация ролей Web и Worker

Рис. 4.11. Реализация ролей Web и Worker

При реализации Web Role нет никаких отличий от стандартов ASP.NET Web Forms, ASP.NET MVC или WCF-приложений.

При реализации Worker Role переопределяется метод Run() класса RoleEntryPoint. Этот метод служит в качестве главного потока исполнения для этой роли.

Альтернатива: можно прослушивать внешние HTTP(S) - или TCP- коммуникационные точки для входящих сообщений.

Взаимодействие между ролями изображено на рис. 4.12.

Взаимодействие между ролями

Рис. 4.12. Взаимодействие между ролями

Экземпляры ролей могут взаимодействовать асинхронно с помощью очередей.

Это предпочтительный метод для надежного обмена сообщениями.

Экземпляры ролей могут также взаимодействовать непосредственно с помощью TCP- или HTTP(S) - соединений.

Взаимодействие между ролями на основе WCF/TCP изображено на рисунках рис. 4.13, рис. 4.14, рис. 4.15.

Взаимодействие между ролями на основе WCF/TCP: сервис

Рис. 4.13. Взаимодействие между ролями на основе WCF/TCP: сервис
Взаимодействие между ролями на основе WCF/TCP: хостинг

Рис. 4.14. Взаимодействие между ролями на основе WCF/TCP: хостинг
Взаимодействие между ролями на основе WCF/TCP: клиент

Рис. 4.15. Взаимодействие между ролями на основе WCF/TCP: клиент

В примере реализуется сервис xxx. С помощью атрибутов определяется контракт сервиса. Для конфигурирования worker-роли добавляются внешние или внутренние коммуникационные точки. Реализуется хостинг WCF-сервиса. При реализации клиента, при использовании внутренних коммуникационных точек отправитель должен выполнять балансировку загрузки вручную. Необходимо использовать RoleEnvironment.Roles["TargetRole"] для поиска этих коммуникационных точек.

Пример кода взаимодействия между экземплярами ролей приведен на рис. 4.16.

Пример кода взаимодействия между экземплярами ролей

Рис. 4.16. Пример кода взаимодействия между экземплярами ролей
< Лекция 3 || Лекция 4: 12345 || Лекция 5 >