Цель лекции: Ознакомление с принципами и технологией (.NET), используемой для реализации Microsoft Windows Azure.
Презентацию к данной лекции Вы можете скачать здесь.
Данная лекция знакомит с платформой .NET – базой для реализации Windows Azure. Рассмотрены Web-сервисы .NET, на которых базируется архитектура и реализация Azure.
Реализация платформы Windows Azure базируется на платформе .NET – платформе надежного и безопасного многоязыкового программирования.
В текстах и презентациях данной и последующих лекций использованы материалы презентаций [1] коллег из Института прикладных наук Верхней Австрии, за что автор выражает им глубокую благодарность.
Windows Azure реализована на базе .NET.
.NET – платформа надежного и безопасного многоязыкового программирования.
Основана на единой для всех языков инфраструктуре (CLI), общей системе типов (CTS), общей системе поддержки выполнения (CLR).
В .NET исходный код на любом языке компилируется в сборку, содержащую бинарный код на едином промежуточном языке (CIL) –
Исполнение программы в CLR реализовано как последовательность вызовов методов и just-in-time (динамическая) компиляция каждого метода в native-код при первом вызове, с последующими вызовами native-кода.
Метаданные могут быть аннотированы атрибутами, как встроенными, так и пользовательскими.
На использовании метаданных основан динамический контроль типов и безопасности, выполняемый CLR.
Основные идеи и принципы .NET следующие. Это компиляция с любого языка в промежуточный двоичный код
определяемых и используемых в программном модуле для .NET.
составляют сборку (assembly) – логическую единицу представления двоичного кода в .NET. Во время выполнения программы, при первом вызове каждого метода, его
Преимуществом подхода .NET является независимость двоичного кода (CIL) от конкретной апппаратной платформы. Также .NET выполняет код в особом режиме – managed execution, в котором гарантируется полный контроль типов и безопасности, что обеспечивает надежность и безопасность программ, в отличие от использования более старых языков и платформ, например, Си.
Многоязыковое программирование – еще один важнейший принцип .NET: программист может разрабатывать модули своей программы на любых удобных ему языках, а .NET обеспечивает совместимость (interoperability) этих модулей в рамках одной программы.
Повышенные требования к безопасности – еще одна характерная черта .NET. Наконец, .NET имеет очень удобные и современные механизмы поддержки Web-программирования.
На рис. 4.1 приведена архитектура базовой библиотеки классов (BCL) .NET. Их использование ясно из их названий. Весьма важно, что все эти классы могут быть использованы при программировании на любом языке .NET – C#, Visual Basic, Managed C++ и др.
Наиболее важны для данного курса пространства имен System.Web – поддержка Web-сервисов – и System.Security – поддержка установки, проверки и конфигурирования полномочий безопасности сборок.
(рис 4.1) Классы .NET Framework
Общая система типов .NET (CTS) – весьма удачная унификация систем типов данных современных языков программирования. Подчеркнем, что такая унификация просто необходима в .NET для поддержки многоязыкового программирования (CLR должна "понимать" типы каждого языка одинаково.
Различаются следующие разновидности типов в CTS.
Типы-значения и типы-ссылки – две основных разновидности типов, воплощающие два различных подхода к представлению значений и объектов – контейнерный и ссылочный.
Простые типы (int, double, unsigned int, native int и др.), разумеется, относятся к типам-значениям.
Структуры, что весьма полезно, также относятся к типам-значениям, а не к объектам. Это позволяет описать в них собственные методы. Единственное, чего нет в структурах, по сравнению с классами, - это наследования. Структуры размещаются в стеке. Объекты (принадлежащие некоторым классам) – в куче.
Указатели (managed pointers) - это разновидность указателей, на которой базируются проверки типов и безопасности. Управляемый указатель в .NET содержит ссылку на тип объекта (на метаданные), благодаря чему тип и атрибуты любого объекта можно проверить во время выполнения.
Классы имеют обычный смысл, как в других системах ООП.
Интерфейсы – также стандартная концепция для современных яззыков ООП – Java, C#, VB и др. Интерфейс – совокупность заголовков методов, реализуемых некоторым классом.
Делегаты и события– типы данных для обработки событий. Тип делегата описывает типовую структуру заголовка обработчика события, представленного в виде callback-метода. При описании события указывается конкретный тип делегата.
Язык C# разработан специально для платформы .NET, хотя не является обязательным и единственным для этой платформы (в отличие от Java). Классы в C# определяются традиционным для ООП образом – как набор полей и методов. В дополнение к другим языкам, определение класса может также содержать свойства (обобщенные поля с операциями get и set); индексаторы; события; делегаты. Пример класса:
public class Person :IPersonAge
{
private int YOB;
public Person()
{
}
public int YearOfBirth
{
get { return YOB; };
set { YOB = value; };
}
public int GetAgeToday()
{
return Today()-
YearOfBirth
};
}
Концепция Web-сервиса в .NET поддерживает сервисы в виде классов, интерфейс которых доступен через Web, соблюдающие ряд стандартов (WSDL, SOAP, XML), основанные на библиотеке классов .NET Framework.
На рис. 4.2 приведена структура распределенного Web-приложения.
(рис 4.2) Структура распределенного Web-приложения
Приложение состоит из клиентской и серверной частей. Web-сервис должен удовлетворять определенному контракту (реализовывать определенный интерфейс).
Инфраструктура Web-сервисов представлена на рис. 4.3.
(рис 4.3) Инфраструктура Web-сервиса в .NET
Web-сервис может обрабатывать несколько видов запросов Web-клиентов. При обнаружении (открытии) сервиса клиент передает запрос вида vsdisco, в ответ на который сервисы открытия (
На рис. 4.4 приведен простой пример кода Web-сервиса, выполняющего вычитание двух чисел и выдающего результат, на рис. 4.5 представлена структура WSDL-спецификации Web-сервисов, состоящей из сервисов, портов и сообщений.
(рис 4.4) Простой пример кода Web-сервиса .NET
Пример WSDL-описания Web-сервиса:
<definitions name="serviceName">
<import namespace="http://namespacePath"
location="http://path/fileName.wsdl">
<portType name="serviceNamePortType">
<operation name="opName">
<input message="msgNameInput" />
<output message="msgNameOutput" />
</operation>
</portType>
<binding name="serviceNameSoapBinding">
<soap:operation soapAction="http://..." />
</binding>
<service name="serviceName">
<port name="serviceNamePort" binding="bindingName">
<soap:address location="http://..." />
</port>
</service>
</definitions>
Использование Web-сервисов основано на следующих принципах. Полностью разделена логика размещения и вызова: сервис представлен в виде пары файлов: .aspx и .aspx.cs (или .aspx.vb). Файлы .aspx предназначены для дизайнеров, файлы .aspx.cs - для программистов. Таким образом достигается легкость сопровождения приложения.
Фрагмент кода сервиса:
<%@ Import Namespace="MathServiceSpace" %>
<script language="C#" runat="server">
public void Submit_Click(Object S, EventArgs E) {
service.Add(operand1, operand2);
...
</script>
...
<input OnServerClick="Submit_Click" runat="server" ...>
Перейдем теперь собственно к предмету рассмотрения – архитектуре Azure и реализации облачных Web-сервисов средствами .NET.
Архитектура Azure представлена на рис. 4.5.
(рис 4.5) Архитектура Windows Azure
Fabric - это сеть взаимосвязанных узлов: Commodity –серверы, высокоскоростные роутеры, переключатели, волоконно-оптические коннекторы.
Azure Fabric Controller – сервис, который осуществляет мониторинг и предоставляет виртуальные машины для исполнения облачных приложений.
Главные сервисы Windows Azure следующие:
- Compute: Хостинг масштабируемых сервисов на платформе Windows Server 2008.
- Storage: управление данными (не реляционными).
- Network: Ресурсы для взаимодействия со внешними приложениями (Service Bus).
Функции Fabric Controller:
- Fault Domains: Единица обработки ошибок в ЦОД (например, кластер машин).
- Update Domains: модификация областей при апгрейдах (ОС, сервисы).
Владельцы приложений описывают требуемые ресурсы в виде дескрипторов ресурсов (моделей сервисов).
Fabric Controller автоматически предоставляет требуемые ресурсы.
Fabric Controller обеспечивает устойчивость ресурсов к ошибкам и быстрый доступ к ним, раннее обнаружение ошибок в приложениях, создание дополнительных экземпляров по требованию. Экземпляры размещаются поверх fault и update domains.
В Azure различаются роли Web и Worker (см. рис. 4.6). По существу, каждая роль в Azure – это определенная разновидность приложения.
(рис 4.6) Роли Web и Worker
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.
(рис 4.7) Структура файла ServiceDefiniton.csdef
Модель сервисов: Конфигурация сервисов. Файл ServiceConfiguration.csdef задает конфигурацию сервисов. В нем указывается число экземпляров каждой роли и определяются значения для установок конфигурации.
Содержимое файла ServiceConfiguration может быть изменено во время выполнения.
Структура файла конфигурации сервисов изображена на рис. 4.8.
(рис 4.8) Структура файла ServiceConfiguration.csdef
Диаграмма классов Windows Azure Role API изображена на рис. 4.9.
(рис 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.
(рис 4.11) Реализация ролей Web и Worker
При реализации Web Role нет никаких отличий от стандартов ASP.NET Web Forms,
При реализации Worker Role переопределяется метод Run() класса RoleEntryPoint. Этот метод служит в качестве главного потока исполнения для этой роли.
Альтернатива: можно прослушивать внешние HTTP(S) - или TCP- коммуникационные точки для входящих сообщений.
Взаимодействие между ролями изображено на рис. 4.12.
(рис 4.12) Взаимодействие между ролями
Экземпляры ролей могут взаимодействовать асинхронно с помощью очередей.
Это предпочтительный метод для надежного обмена сообщениями.
Экземпляры ролей могут также взаимодействовать непосредственно с помощью TCP- или HTTP(S) - соединений.
Взаимодействие между ролями на основе WCF/TCP изображено на рисунках 4.13, 4.14, 4.15.
(рис 4.13) Взаимодействие между ролями на основе WCF/TCP: сервис
(рис 4.14) Взаимодействие между ролями на основе WCF/TCP: хостинг
(рис 4.15) Взаимодействие между ролями на основе WCF/TCP: клиент
В примере реализуется сервис xxx. С помощью атрибутов определяется контракт сервиса. Для конфигурирования worker-роли добавляются внешние или внутренние коммуникационные точки. Реализуется хостинг WCF-сервиса. При реализации клиента, при использовании внутренних коммуникационных точек отправитель должен выполнять балансировку загрузки вручную. Необходимо использовать RoleEnvironment.Roles["TargetRole"] для поиска этих коммуникационных точек.
Сервисы .NET - надежная и безопасная основа для реализации Azure. Дополнительные детали по поводу реализации компонент Fabric, Storage, Compute приведены далее в соответствующих лекциях, посвященных этим компонентам Azure.
Web-роль – интерактивное .NET – приложение, обслуживаемое IIS, - Web Application или Web-сервис, основанный на Windows Communication Foundation (WCF).
Worker-роль – независимый изолированный
Реализация платформы Windows Azure базируется на платформе .NET – платформе надежного и безопасного многоязыкового программирования. .NET обеспечивает управляемое выполнение приложений. Основана на общей системе типов и общей системе поддержки выполнения. Web-сервисы .NET базируются на стандарте WSDL.
В архитектуре Azure основной компонентой является Fabric. Она управляет приложениями через Fabric Controller. Главные сервисы Azure – это
Среди исполняемых программных компонент Azure различаются Web-роль и Worker-роль. Web-роль – это интерактивное облачное Web-приложение, Worker-роль – это независимый процесс, исполняемый в облаке.
Модель (структура) сервиса и конфигурация сервиса задаются конфигурационными файлами формата XML.
Экземпляры ролей могут взаимодействовать либо асинхронно с помощью очереди сообщений, либо непосредственно через TCP- или HTTPS-соединения.
Для получения официальных документов о завершении программы дополнительного профессионального образования (удостоверения о повышении квалификации, дипломов о профессиональной переподготовке и MBA) необходимо предоставить:
Внимание! Вы можете не заказывать доставку бумажной версии официального документы, а скачать его в электронном виде и распечатать самостоятельно. Информация о выданном документе в течение 1 месяца загружается в Федеральную информационную систему «Федеральный реестр сведений о документах об образовании и (или) о квалификации, документах об обучении» - ФИС ФРДО.
Доступ на новый сайт осуществляется с использованием адреса электронной почты, который был указан вами при регистрации на "старом". Мы постарались перенести все ваши данные с прежнего ресурса, однако не исключена вероятность потери части информации.
При возникновении проблемы со входом, воспользуйтесь функцией сброса пароля
Если вы обнаружите несоответствия, пожалуйста, сообщите нам.