Базовые технологии, использованные для реализации новой версии Microsoft Windows Azure (2013)
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.
Модель сервисов: Конфигурация сервисов. Файл ServiceConfiguration.csdef задает конфигурацию сервисов. В нем указывается число экземпляров каждой роли и определяются значения для установок конфигурации.
Содержимое файла ServiceConfiguration может быть изменено во время выполнения.
Структура файла конфигурации сервисов изображена на рис. 4.8.
Диаграмма классов Windows Azure Role API изображена на рис. 4.9.
Класс BasicEntryPoint (с потомками MyWebRole и MyWorkerRole) содержит методы жизненного цикла - onStart(), onStop(), run().
Класс RoleEnvironment имеет потомков Role и RoleInstance.
Реализация ролей изображена на рис. 4.10.
В реализации роли определяется класс-потомок RoleEntryPoint и перегружаются методы жизненного цикла. Обычно перегружается метод OnStart(). Регистрируется обработчик, который прослушивает изменения в конфигурации учетной записи облачной памяти. Когда обнаруживается изменение, роль повторно стартуется (переиспользуется).
Реализация ролей Web и Worker изображена на рис. 4.11.
При реализации Web Role нет никаких отличий от стандартов ASP.NET Web Forms, ASP.NET MVC или WCF-приложений.
При реализации Worker Role переопределяется метод Run() класса RoleEntryPoint. Этот метод служит в качестве главного потока исполнения для этой роли.
Альтернатива: можно прослушивать внешние HTTP(S) - или TCP- коммуникационные точки для входящих сообщений.
Взаимодействие между ролями изображено на рис. 4.12.
Экземпляры ролей могут взаимодействовать асинхронно с помощью очередей.
Это предпочтительный метод для надежного обмена сообщениями.
Экземпляры ролей могут также взаимодействовать непосредственно с помощью TCP- или HTTP(S) - соединений.
Взаимодействие между ролями на основе WCF/TCP изображено на рисунках рис. 4.13, рис. 4.14, рис. 4.15.
В примере реализуется сервис xxx. С помощью атрибутов определяется контракт сервиса. Для конфигурирования worker-роли добавляются внешние или внутренние коммуникационные точки. Реализуется хостинг WCF-сервиса. При реализации клиента, при использовании внутренних коммуникационных точек отправитель должен выполнять балансировку загрузки вручную. Необходимо использовать RoleEnvironment.Roles["TargetRole"] для поиска этих коммуникационных точек.
Пример кода взаимодействия между экземплярами ролей приведен на рис. 4.16.