1. СРЕДА ВЫПОЛНЕНИЯ .NET FRAMEWORK
Средой выполнения является CLR (Common Language Runtime) - общеязыковая среда выполнения. Общеязыковая - это значит, что можно писать и на C# и С/С++ и Visual Basic, можно даже свой язык создать и свой компилятор для CLR). Общие механизмы работы этой среды подходят для всех языков программирования, которые ее используют.
Все языковые компиляторы (CLR-совместимые компиляторы) генерируют IL-код и метаданные (управляемый модуль - PE файл), с которым в последствии работает CLR.
Сам управляемый модуль состоит из:
Все языковые компиляторы (CLR-совместимые компиляторы) генерируют IL-код и метаданные (управляемый модуль - PE файл), с которым в последствии работает CLR.
Сам управляемый модуль состоит из:
- Заголовок - обозначает тип файла: GUI, CUI или DLL;
- Заголовок CLR - информация для превращение данного модуля в управляемый (расположение метаданных, точку входа и.т.д);
- Метаданные - 2 таблицы, описывающие типы данных и их члены;
- IL код - CLR компилирует его в машинный код в дальнейшем.
Зачем нужны метаданные? На них работает IntelliSinse, не нужна никакая дополнительная информация о коде, так как все хранится в в исполняемом файле, помогают сборщику мусора и сериализации.
Среда CLR работает со сборками. Сборка - это объединение исполняемых файлов в одну логическую сущность, описанную манифестом. Благодаря сборкам, работающим с управляемым кодом, нет необходимости в реестре, как в случает с неуправляемым кодом.
Сборка разбивает управляемые модули и ресурсные файлы.
Сборка представляет собой dll файл или приложение. В процессе разработки скорее всего будет использоваться язык высокого уровня, например C#, который не использует в полную мощь среду CLR. Для использования каких-то особенный функций можно писать часть приложения на ассемблере IL
Перед выполнением JIT компиляторы переводят в машинный код IL код. При этом CLR вызывает JIT компилятор только при первой компиляции типа. В дальнейшем это уже не потребуется, так как все будет загружено в память.
Перед выполнением JIT компиляторы переводят в машинный код IL код. При этом CLR вызывает JIT компилятор только при первой компиляции типа. В дальнейшем это уже не потребуется, так как все будет загружено в память.
Комментариев нет:
Отправить комментарий