|
Компиляция исходного кода в управляемые модули (часть 3)
В прошлом почти все компиляторы генерировали код для конкретных процессорных архитектур, таких как x86, IA64, Alpha или PowerPC. Все CLR-совместимые
компиляторы вместо этого генерируют IL-код. (Мы рассмотрим IL-код подробнее
ниже.) IL-код иногда называют управляемым (managed code), потому что CLR управляет его жизненным циклом и выполнением.
Каждый компилятор, предназначенный для CLR, кроме генерации IL-кода, также
должен создавать полные метаданные (metadata) для каждого управляемого модуля. Коротко говоря, метаданные — это просто набор таблиц данных, описывающих то, что определено в модуле, например, типы и их члены. Метаданные имеют
также таблицы, указывающие, на что ссылается управляемый модуль, например,
на импортируемые типы и их члены. Метаданные расширяют возможности таких
старых технологий, как библиотеки типов и файлы языка описания интерфейсов (Interface Definition Language, IDL). Важно заметить, что метаданные CLR гораздо полнее. И в отличие от библиотек типов и IDL они всегда связаны с файлом, содержащим IL-код. Фактически метаданные всегда встроены в тот же EXE/DLL,
что и код, так что их нельзя разделить. Так как компилятор генерирует метаданные и код одновременно и привязывает их к конечному управляемому модулю, метаданные и IL-код, описываемый ими, никогда не бывают рассинхронизированы.
Метаданные используются для разных целей.
• Метаданные устраняют необходимость в заголовочных и библиотечных файлах при компиляции, так как: все сведения о типах/членах, на которые есть
ссылки, содержатся в файле с IL-кодом. в котором они реализованы. Компиляторы могут читать метаданные прямо из управляемых модулей.
• Visual Studio .NET использует метаданные для того, чтобы помочь вам писать
код. Ее функция IntelliSense анализирует метаданные и сообщает, какие методы предлагает тип и какие параметры требуются этим методам.
• В процессе верификации кода CLR использует метаданные, чтобы убедиться,
что ваш код совершает только "безопасные* операции. (Мы обсудим проверку
кода далее.)
• Метаданные позволяют сериализовать поля объекта в блок памяти на удаленной машине и затем десериализовать, восстановив объект и его состояние на
удаленной машине.
• Метаданные позволяют сборщику мусора отслеживать жизненный цикл объектов. Сборщик мусора может определить тип любого объекта и благодаря метаданным знает, какие поля в объекте ссылаются на другие объекты.
Microsoft С#, Visual Basic, JScript, J# и IL-ассемблер всегда создают управляемые
модули, которые требуют для своего выполнения CLR. Для выполнения любого
управляемого модуля на машине конечного пользователя должен быть установ-
лен CLR, так же как для выполнения приложений MFC или Visual Basic 6 должны
быть установлены библиотека классов Microsoft Foundation Class (MFC) или динамически подключаемые библиотеки Visual Basic.
По умолчанию компилятор Microsoft C++ создает неуправляемые модули файлы ЕХЕ или DLL, с которыми мы все хорошо знакомы. Они не требуют ILR
для своего выполнения. Однако если вызвать компилятор C++ с новым ключом в
командной строке, он может создать управляемые модули, требующие CLR для
своего выполнения. Компилятор C++ — уникальный среди упомянутых компиляторов Microsoft, так как это единственный язык, позволяющий писать как управляемый, так и неуправляемый код и встраивать их в один модуль. Это очень важное свойство, поскольку оно позволяет писать основной объем приложения в
управляемом коде (в целях безопасности типов и совместимости компонентов)
и в то же время иметь доступ к существующему неуправляемому коду C++
Предыдущая стр.   
Оглавление   
Следующая стр.
Средняя оценка:     (1 - 2 голосов) Для оценки необходимо зарегистрироваться
Только зарегистрировавшиеся пользователи могут оставлять комментарии
|
|