Читать в оригинале

<< ПредыдущаяОглавлениеСледующая >>


1.3. Технология .NET

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

Сначала разработчик выбирает среду разработки, компилятор которой обеспечивает создание промежуточного кода на языке MSIL. При помощи инструментов Microsoft разработчик может работать с языками С#, C++, Visual Basic. Помимо этого еще около 20 независимых компаний анонсировали собственные продукты или планы их разработки.

Итак, разработчик выбрал инструментарий, разработал некое приложение и откомпилировал его. В результате получается код приложения на промежуточном языке MSIL, который не интерпретируется в машинные команды. Поэтому приложение .NET получается независимым от конкретных реализаций операционной системы и аппаратной платформы.

Готовое приложение .NET состоит из сборок. Сборка — это один или несколько файлов, в которых помимо собственно кода MSIL приложения также включены метаданные — разнообразная служебная информация о самом приложении. В результате отпадает необходимость в регистрации приложения в системном реестре, подобно приложениям СОМ, ведь вся необходимая информация доступна вместе с приложением. Сюда же, к примеру, можно добавить сведения о версии приложения и т. д.

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

При запуске приложения в дело вступает среда выполнения приложения Common Language Runtime (CLR), которая при помощи загрузчика загружает сборки приложения и обеспечивает его выполнение. Но для этого необходимо преобразовать код MSIL в машинные команды процессора.

Рисунок 2. Схема работы .NET Framework

Описанный механизм далеко не нов и неоднократно использовался в более ранних технологиях. К примеру, ранние версии Visual Basic генерировали интерпретируемый или Р-код, или байт-код (разные наименования одной сущности), который затем преобразовывался в машинные команды специальным интерпретатором. Виртуальные машины Java также реализуют подобный подход и берут на себя исполнение Java-кода. Безусловный и принципиальный недостаток подобных решений — дополнительные затраты вычислительных ресурсов на преобразование кода и в этом смысле обычные исполняемые двоичные ЕХЕ-файлы эффективнее. Безусловные преимущества такого подхода — абстрагирование кода приложения от реализации функций операционной системы и возможность реализовать "интеллектуальное выполнение" кода, управляя интерпретируемым кодом.

Разработчики .NET постарались решить проблему эффективности интерпретируемого кода. Для этого в составе .NET Framework имеется Just In Time (JIT) компилятор, который выполняет преобразование кода MSIL в машинные команды по мере вызова подпрограмм. Как только в коде встречается вызов подпрограммы, загрузчик CLR находит и загружает необходимый фрагмент кода в компилятор JIT. В результате ненужная в данный момент часть кода приложения может быть вообще не откомпилирована. Откомпилированный в ходе одного сеанса выполнения приложения код можно использовать многократно, CLR позаботится о том, чтобы сохранить его на протяжении сеанса работы с приложением. Кроме этого, CLR может хранить однажды откомпилированный код подпрограмм на жестком диске и вызывать его при повторных обращениях к приложению.

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

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

Новизна архитектуры .NET базируется на «трех технологических китах»:

1. Исполняемые файлы компилируются в коды специального промежуточного языка MSIL.

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

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



<< ПредыдущаяОглавлениеСледующая >>