Студопедия
Главная страница | Контакты | Случайная страница | Спросить на ВикиКак

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Язык MSIL и JIТ-компилятор

При компиляции кода, в котором используется библиотека .NET, он не преобразовывается сразу же в родной код конкретной операционной системы. Вместо этого он сначала преобразуется в код MSIL (Microsoft Intermediate Language — промежуточный язык Microsoft). Этот код не является специфическим ни для какой-либо операционной системы, ни для языка С#. Другие языки, например, Visual Basic .NET, на первом этапе тоже компилируются в код на этом языке. В случае разработки приложений на С# такой процесс компиляции выполняется VS

Очевидно, что далее для запуска приложения требуется выполнить еще кое-какую работу. За это отвечает так называемый JIT-компилятор (Just-in-Time compiler — оперативный компилятор), который компилирует MSIL в родной код, отвечающий требованиям конкретной операционной системы и архитектуры целевого компьютера. Только после этого этапа у операционной системы появляется возможность запустить приложение. Аббревиатура JIT в названии компилятора указывает на то, что он выполняет компиляцию MSIL-кода только при возникновении соответствующей необходимости.

Раньше код часто компилировался в несколько приложений, каждое из которых предназначалось для конкретной операционной системы и архитектуры ЦП. Такой подход обычно применялся в качестве одного из средств оптимизации (например, для принуждения кода работать быстрее на базе микросхем AMD), но в некоторых случаях играл даже критическую роль (например, при необходимости сделать так, чтобы приложения могли работать как в средах Win9x, так и в средах WinNT/2000). Сейчас в нем нет никакой необходимости, поскольку JIT-компиляторы используют MSIL-код, который не зависит ни от типа компьютера, ни от типа операционной системы, ни от типа ЦП. Существуют несколько JIT-компиляторов, каждый из которых рассчитан на конкретную архитектуру, и при создании требуемого родного кода применяться будет только тот из них, который подходит в данном случае.

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

Сборки

При компиляции приложении создаваемый MSIL-код сохраняется в сборке (assembly). С состав сборок входят как исполняемые файлы приложений, которые имеют расширение .ехеи могут запускаться прямо в среде Windows безо всяких других программ, так и файлы библиотек, которые имеют расширение .dllи предназначены для использования другими приложениями.

Помимо MSIL-кода в сборки еще также включается метаинформация (т.е. информация о содержащихся в сборке данных, также называемая метаданными) и файлы необязательных ресурсов (файлы дополнительных данных, которые могут применяться в MSIL коде, вроде звуковых файлов и файлов изображений). Метаинформация делает сборки полностью самоописательными. Благодаря ей, для использования сборок больше никакой информации не требуется, а это означает исключение вероятности возникновений ситуаций, вроде невозможности добавления требуемых данных в системный реестр и тому подобного, каковые часто представляли проблему при выполнении разработки с помощью других платформ.

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

Конечно, сохранять все необходимое для запуска приложения в одном месте вовсе необязательно. Разработчик может писать и какой-нибудь код, выполняющий задачи, требуемые нескольким приложениям. В подобных ситуациях зачастую удобнее помещать допускающий многократное использование код в то место, к которому смогут получать доступ все приложения. В .NET Framework таким местом является глобальный кэш сборок (Global Assembly Cache — GAC). Помещение в него кода осуществляется очень просто, а именно — копированием содержащей нужный код сборки в каталог, где расположен этот кэш.


Дата добавления: 2014-12-15; просмотров: 22 | Нарушение авторских прав




lektsii.net - Лекции.Нет - 2014-2017 год. (0.01 сек.)