Часть 3. Основные определения и термины, связанные с .Net
Среда исполнения .NET (.NET runtime), также известная как общая среда исполнения или CLR, - это набор служб, управляющих кодом. Её тоже можно рассматривать как код, который обеспечивает загрузку программы, ее выполнение и предоставление всех необходимых служб.
Управляемый код (managed code). Любой код, который разработан для исполнения в .NET, называется управляемым. Неуправляемый код (unmanaged code) – приложения, напрямую взаимодействующие с Windows и Windows API.
Промежуточный язык (IL). При компиляции управляемого кода компилятор генерирует код па промежуточном языке (IL), a CLR выполняет заключительную стадию компиляции непосредственно перед исполнением кода. Язык IL разработан таким образом, чтобы обеспечить быструю компиляцию в машинный код, но в то же время он поддерживает все особенности .NET. Таким образом, IL – это промежуточный язык, в который транслируется код перед загрузкой и запуском в среде средой исполнения .NET.
Общая система типов (Common Type System, CTS). Для обеспечения совместимости языков необходимо иметь согласованный набор основных типов данных, чтобы все языки могли быть стандартизированы. Этим целям и служит CTS (Common Type System). Кроме того, CTS предоставляет правила для определения пользовательских классов.
Базовые классы .NET. Это обширная библиотека классов, которая содержит коды для выполнения большого числа задач в Windows, начиная от отображения окон и форм и заканчивая базовыми службами Windows, чтением и записью в файлы, доступом к сети и интернету и доступом к источникам данных.
Сборка. Это модуль, в котором хранится откомпилированный управляемый код. Она похожа на классический исполняемый файл или DLL, но имеет важное свойство - она полностью сама себя описывает. Сборка содержит метаданные, которые включают в себя сведения о сборке и обо всех определенных внутри нее типах, методах и т.п. Сборка может быть частной (доступной только одному приложению) и разделяемой (доступной любому приложению Windows).
Кэш сборок. Место на диске, где хранятся разделяемые сборки.
Общая спецификация языка (Common Language Specification, CLS). Это минимальный набор стандартов, который гарантирует, что доступ к коду может быть осуществлен из любого языка. Все компиляторы, предназначенные для .NET, должны поддерживать CLS.
CLS формирует подмножество функций, доступных в .NET и IL. Если в сборке присутствуют какие-либо не CLS особенности, они могут быть недоступны в некоторых языках.
Отражение. То, что сборки полностью описывают сами себя, открывает теоретическую возможность программного доступа к метаданным сборки. На самом деле существует несколько базовых классов, которые разработаны с этой целью. Технология такого доступа известна как отражение (возможно, из-за того интригующего факта, что программа может использовать эту технологию для доступа к собственным метаданным).
Компиляция Just-In-Time (JIT). Этот термин обозначает процесс выполнения заключительной стадии компиляции с промежуточного языка в машинный код. Название определяется тем, что части кода компилируются по мере необходимости.
Манифест. Область сборка, содержащая только метаданные.
Область приложения. Это способ, с помощью которого CLR позволяет различным программам исполняться в одном и том же пространстве процессов. Изоляция модулей кода достигается путем использования безопасности типов IL для проверки того, что каждый сегмент кода ведет себя правильно.
Сборка мусора. CLR применяет этот способ для очистки памяти, которая больше не требуется приложению. Таким образом, приложение не несет ответственности за освобождение памяти.