Поделиться через


Обзор среды CLR

.NET предоставляет среду выполнения, называемую средой CLR, которая запускает код и предоставляет службы, которые упрощают процесс разработки.

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

Замечание

Компиляторы и средства могут создавать выходные данные, которые среда CLR может использовать, так как система типов, формат метаданных и среда выполнения (виртуальная система выполнения) определяются общедоступным стандартом, спецификацией среды CLMA Common Language Infrastructure. Дополнительные сведения см. в спецификациях инфраструктуры ECMA C# и Общая языковая инфраструктура.

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

Среда выполнения автоматически обрабатывает макет объектов и управляет ссылками на объекты, освобождая их, когда они больше не используются. Объекты, время существования которых управляется таким образом, называется управляемыми данными. Сборка мусора устраняет утечки памяти и некоторые другие распространенные ошибки программирования. Если код управляется, вы можете использовать управляемые данные, неуправляемые данные или оба в приложении .NET. Так как компиляторы языка предоставляют собственные типы, такие как примитивные типы, вы не всегда знаете или должны знать, управляются ли ваши данные.

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

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

Компиляторы и средства языка предоставляют функциональные возможности среды выполнения таким образом, чтобы они были полезными и интуитивно понятными для разработчиков. Некоторые функции среды выполнения могут быть более заметными в одной среде, чем в другой. Как вы используете среду выполнения, зависит от используемых компиляторов или инструментов языка. Например, если вы разработчик Visual Basic, вы можете заметить, что в среде CLR язык Visual Basic имеет более объектно-ориентированные функции, чем раньше. Среда выполнения предоставляет следующие преимущества:

  • Повышение производительности.

  • Возможность легко использовать компоненты, разработанные на других языках.

  • Расширяемые типы, предоставляемые библиотекой классов.

  • Языковые функции, такие как наследование, интерфейсы и перегрузки для объектно-ориентированного программирования.

  • Поддержка явного свободного потока, которая позволяет создавать многопоточные и масштабируемые приложения.

  • Поддержка структурированной обработки исключений.

  • Поддержка пользовательских атрибутов.

  • Сборка мусора.

  • Использование делегатов вместо указателей функций для повышения безопасности и типобезопасности. Дополнительные сведения о делегатах см. в разделе Common Type System.

Версии CLR

Выпуски .NET Core и .NET 5+ имеют единую версию продукта, что означает, что не существует отдельной версии CLR. Список версий .NET Core см. в разделе "Скачать .NET Core".

Однако номер версии .NET Framework не обязательно соответствует номеру версии среды CLR, включаемой в нее. Чтобы получить список версий .NET Framework и соответствующих версий CLR, см. раздел версии и зависимости .NET Framework.

Название Описание
Процесс управляемого выполнения Описывает шаги, необходимые для использования общей среды выполнения.
Автоматическое управление памятью Описывает, как сборщик мусора выделяет и освобождает память.
Обзор технологии .NET Framework Описывает основные понятия .NET Framework, такие как система общего типа, взаимодействие между языками, управляемое выполнение, домены приложений и сборки.
Общая система типов Описывает, как типы объявляются, используются и управляются во время выполнения в поддержке межязычной интеграции.