Россия, Москва, МИФИ, 1972 |
Базовые технологии, использованные для реализации новой версии Microsoft Windows Azure (2013)
Цель лекции: Ознакомление с принципами и технологией (.NET 4.5), используемой для реализации новой версии Microsoft Windows Azure (2013).
Презентацию к лекции вы можете скачать здесь.
Введение
Данная лекция знакомит с платформой .NET – базой для реализации Windows Azure, и возможностями новой версии .NET 4.5.
Рассмотрены Web-сервисы .NET, на которых базируется архитектура и реализация Azure.
Реализация платформы Windows Azure базируется на платформе .NET – платформе надежного и безопасного многоязыкового программирования.
В текстах и презентациях данной и последующих лекций использованы материалы презентаций [1] коллег из Института прикладных наук Верхней Австрии, за что автор выражает им глубокую благодарность.
Обзор архитектуры .NET
Windows Azure реализована на базе .NET.
.NET – платформа надежного и безопасного многоязыкового программирования.
Основана на единой для всех языков инфраструктуре (CLI), общей системе типов (CTS), общей системе поддержки выполнения (CLR).
В .NET исходный код на любом языке компилируется в сборку, содержащую бинарный код на едином промежуточном языке (CIL) – постфиксную запись программы, и метаданные – информацию о типах, определенных и использованных в сборке
Исполнение программы в CLR реализовано как последовательность вызовов методов и just-in-time (динамическая) компиляция каждого метода в native-код при первом вызове, с последующими вызовами native-кода.
Метаданные могут быть аннотированы атрибутами, как встроенными, так и пользовательскими.
На использовании метаданных основан динамический контроль типов и безопасности, выполняемый CLR.
Основные идеи и принципы .NET
Основные идеи и принципы .NET следующие. Это компиляция с любого языка в промежуточный двоичный код MSIL (CIL) – постфиксную форму представления программ; генерация компилятором так называемых метаданных – информации о типах,
определяемых и используемых в программном модуле для .NET. Промежуточный код, метаданные, плюс так называемый манифест (список содержимого двоичного кода)
составляют сборку (assembly) – логическую единицу представления двоичного кода в .NET. Во время выполнения программы, при первом вызове каждого метода, его промежуточный код компилируется специальным компилятором (just-in-time, или JIT, компилятором) в платформно-зависимый (native) код аппаратной платформы (машины), на которой исполняется программа. Де-факто стандартом для представления конфигурационной информации и передачи данных серез сеть в .NET является XML.
Преимущества подхода .NET
Преимуществом подхода .NET является независимость двоичного кода (CIL) от конкретной апппаратной платформы. Также .NET выполняет код в особом режиме – managed execution, в котором гарантируется полный контроль типов и безопасности, что обеспечивает надежность и безопасносит программ, в отличие от использования более старых языков и платформ, например, Си.
Многоязыковое программирование – еще один важнейший принцип .NET: программист может разрабатывать модули своей программы на любых удобных ему языках, а .NET обеспечивает совместимость (interoperability) этих модулей в рамках одной программы.
Повышенные требования к безопасности – еще одна характерная черта .NET. Наконец, .NET имеет очень удобные и современные механизмы поддержки Web-программирования.
Архитектура .NET Framework
На рис. 4.1 приведена архитектура базовой библиотеки классов (BCL) .NET. Их использование ясно из их названий. Весьма важно, что все эти классы могут быть использованы при программировании на любом языке .NET – C#, Visual Basic, Managed C++ и др.
Наиболее важны для данного курса пространства имен System.Web – поддержка Web-сервисов – и System.Security – поддержка установки, проверки и конфигурирования полномочий безопасности сборок.
Общая система типов .NET
Общая система типов .NET (CTS) – весьма удачная унификация систем типов данных современных языков программирования. Подчеркнем, что такая унификация просто необходима в .NET для поддержки многоязыкового программирования (CLR должна "понимать" типы каждого языка одинаково.
Различаются следующие разновидности типов в CTS.
Типы-значения и типы-ссылки – две основных разновидности типов, воплощающие два различных подхода к представлению значений и объектов – контейнерный и ссылочный.
Простые типы (int, double, unsigned int, native int и др.), разумеется, относятся к типам-значениям.
Структуры, что весьма полезно, также относятся к типам-значениям, а не к объектам. Это позволяет описать в них собственные методы. Единственное, чего нет в структурах, по сравнению с классами, - это наследования. Структуры размещаются в стеке. Объекты (принадлежащие некоторым классам) – в куче.
Указатели (managed pointers) - это разновидность указателей, на которой базируются проверки типов и безопасности. Управляемый указатель в .NET содержит ссылку на тип объекта (на метаданные), благодаря чему тип и атрибуты любого объекта можно проверить во время выполнения.
Классы имеют обычный смысл, как в других системах ООП.
Интерфейсы – также стандартная концепция для современных яззыков ООП – Java, C#, VB и др. Интерфейс – совокупность заголовков методов, реализуемых некоторым классом.
Делегаты и события ¬¬– типы данных для обработки событий. Тип делегата описывает типовую структуру заголовка обработчика события, представленного в виде callback-метода. При описании события указывается конкретный тип делегата.