Опубликован: 19.08.2004 | Уровень: для всех | Доступ: платный | ВУЗ: Национальный исследовательский ядерный университет «МИФИ»

Лекция 3: Платформа.NET и ее применение для объектно-ориентированного подхода к программированию

< Лекция 2 || Лекция 3: 123 || Лекция 4 >

Кратко рассмотрим основные аспекты архитектурного решения Microsoft .NET Framework, отметив прежде всего то обстоятельство, что важную роль играет среда разработки Microsoft Visual Studio.NET, а первостепенное значение имеет среда выполнения программ – Common Language Runtime (CLR). Среда выполнения CLR реализует управление памятью, типами данных, межъязыковым взаимодействием, развертыванием (deployment) приложений.

Архитектурная схема .NET Framework и Visual Studio.NET.

Рис. 14.1. Архитектурная схема .NET Framework и Visual Studio.NET.

Существенным преимуществом конструктивного решения .NET является компонентно-ориентированный подход к проектированию и реализации программного обеспечения. Суть подхода состоит в принципиальной возможности создания независимых составляющих программного обеспечения с унифицированной интерфейсной частью для многократного повторного и распределенного использования. При этом продуктивность решения обусловлена многоязычностью интегрируемых программных проектов (концепция .NET потенциально поддерживает произвольный язык программирования, в числе наиболее известных языков – C#, Visual Basic, C++ и др.).

В ходе компиляции программа на .NET-совместимом языке программирования трансформируется в соответствии с заранее заданной обобщенной спецификацией языка Common Type System (CTS). Система типов CTS полностью описывает все типы данных, поддерживаемые средой выполнения, определяет их взаимосвязи и хранит их отображения в системе типов .NET.

Под Common Language Specification (или CLS ) понимается набор правил, определяющих подмножество обобщенных типов данных, в отношении которых гарантируется, что они безопасны при использовании во всех языках .NET.

Интерфейсы реализуются посредством форм Windows и ASP.NET для веб-приложений.

В ходе выполнения процедуры трансляции исходный текст программы (написанный на SML, C#, Visual Basic, C++ или любом другом языке программирования, который поддерживается .NET) преобразуется компилятором в так называемую сборку (assembly) и сохраняется в виде файла динамически присоединяемой библиотеки (Dynamically Linked Library, DLL) или исполняемого файла (Executable, EXE).

Схема компиляции Common Language Runtime.

Рис. 14.2. Схема компиляции Common Language Runtime.

Естественно, что для каждого компилятора (будь то компилятор языка C#, csc.exe или Visual Basic, vbc.exe ) средой времени выполнения производится необходимое отображение используемых типов в типы CTS, а программного кода – в код "абстрактной машины" .NETMSIL (Microsoft Intermediate Language).

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

Рассмотрим достаточно обобщенный пример трансляции многокомпонентного гетерогенного программного проекта под управлением Microsoft .NET (см. рис. 14.3).

Предположим, что компоненты проекта написаны на трех языках программирования: уже знакомом нам языке SML, изучаемом языке C#, а также языке С++, который характеризуется возможностью создания потенциально небезопасного кода (в частности, динамического распределения памяти).

Исходные тексты компонент проекта транслируются, соответственно, компиляторами с языков SML, C# и C++ в унифицированный MSIL-код и сохраняются в файлах в виде сборок.

В ходе компоновки и выполнения программного проекта Just-In-Time (JIT) компилятор среды CLR производит выполнение проекта с "ленивым" (по мере необходимости) означиванием оттранслированного промежуточного кода сборок.

Схема выполнения CLR.

Рис. 14.3. Схема выполнения CLR.

Существенно, что потенциально небезопасный код на языке C++ принципиально невыполним собственно JIT-компилятором, но исполняется посредством сервисов операционной системы. Ответственность за работоспособность программы и безопасность кода в этом случае лежит уже не на среде проектирования и разработки программного обеспечения .NET, а на программисте-разработчике.

Существенным позитивным отличием Microsoft .NET от существующих аналогов на современном рынке программного обеспечения является универсальная система типизации.

В ходе компиляции программа на .NET-совместимом языке программирования трансформируется в соответствии с заранее заданной Common Type System (CTS) обобщенной спецификацией языка. Система типов CTS полностью описывает все типы данных, поддерживаемые средой выполнения, определяет их взаимосвязи и хранит их отображения в системе типов .NET.

Универсальная система типизации (UTS).

Рис. 14.4. Универсальная система типизации (UTS).

Система типизации Microsoft .NET представляет собой частично упорядоченное множество, которое на качественном уровне может пониматься как ISA-иерархия (аббревиатура ISA происходит от английских слов "is a", которые означают "является одним из").

Так, например, высказывание STUDENT ISA PERSON означает, что тип STUDENT является подтипом типа PERSON (здесь вполне уместна аналогия с множествами и вполне точна аналогия с доменами).

Таким образом, система типов Microsoft .NET образует иерархию с возрастанием общности снизу вверх (см. рис. 14.4), в которой явно выделяются две большие группы типов, а именно, типы-ссылки и типы-значения. Различие между последними определяется особенностями вызова в процедурах: по имени или по значению (call-by-name, CBN) и по ссылке (call-by-reference, CBR).

Заметим также, что система типизации Microsoft .NET помимо развитой иерархии предопределенных типов позволяет пользователю создавать собственные типы (как типы-ссылки, так и типы-значения ) на основе уже существующих.

Изложение важнейших аспектов Microsoft .NET было бы неполным, если бы мы не упомянули о таком существенном архитектурном принципе как веб-сервисы.

Значение веб-сервисов заключается в распределении возможностей разработанных прикладных систем по каналам Internet.

Веб-серверы в .NET.

Рис. 14.5. Веб-серверы в .NET.

Заметим, что центральным блоком в схеме (рис. 14.5) является .NET Framework, который можно рассматривать как библиотеку базовых объектов и операций над ними.

В качестве среды разработки прикладных систем целесообразно использовать Microsoft Visual Studio .NET, предоставляющую целый комплекс развитых средств создания, редактирования и отладки программного кода на различных языках программирования. В случае несложных задач можно ограничиться примитивными редакторами текста программ, подобных Notepad.

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

В качестве языка реализации может использоваться язык гипертекстовой разметки HTML (HyperText Markup Language). Взаимодействие между клиентом и приложением в простейшем случае осуществляется с использованием традиционного Internet-протокола передачи данных HTTP (HyperText Transfer Protocol).

Структурированные данные хранятся в формате XML (вариант HTML с более строгим синтаксисом).

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

Попытаемся сформулировать определение понятия "веб-сервис" (или, иначе, "веб-служба").

Под веб-сервисами обычно понимают программируемые компоненты прикладных программных систем, которые доступны для клиента (пользователя) посредством стандартных протоколов, применяемых для работы в Internet-среде.

Как уже упоминалось ранее, именно веб-сервисы являются одной из важнейших составляющих идеологии .NET, центральной частью данной архитектуры, поскольку предназначены для реализации декларируемого Microsoft основополагающего принципа "программное обеспечение как сервис".

Смысл использования веб-сервисов состоит в возможности распределения функций разработанных прикладных систем по глобальной сети.

Для реализации этой задачи веб-сервисы организуются на проверенных временем, традиционных, а также развивающихся стандартах взаимодействия приложений в Internet, а именно:

  1. HTTP – стандартный протокол обмена гипертекстовыми документами в Internet с возможностью передачи данных посредством веб-форм ;
  2. XML – формат хранения структурированных данных с возможностью обмена ими по Internet-каналам;
  3. SOAP – стандартный протокол взаимодействия компонент (глобально) распределенного приложения (Simple Object Access Protocol);
  4. UDDI – стандарт интеграции приложений (Universal Description, Discovery and Integration);
  5. WSDL – универсальный язык описания веб-сервисов (Web Service Description Language),

а также целом ряде других менее употребительных протоколов.

< Лекция 2 || Лекция 3: 123 || Лекция 4 >