Обзор среды CLRCommon Language Runtime (CLR) overview

.NET Framework предоставляет среду выполнения (среду CLR), которая выполняет код и предлагает службы, облегчающие процесс разработки.The .NET Framework provides a run-time environment called the common language runtime, which runs the code and provides services that make the development process easier.

Компиляторы и иные средства позволяют использовать функции среды CLR и дают разработчикам возможность писать код, использующий преимущества этой среды управляемого выполнения.Compilers and tools expose the common language runtime's functionality and enable you to write code that benefits from this managed execution environment. Код, разработанный с языковым компилятором, который обращается к среде выполнения, называют управляемым кодом. В нем используются преимущества таких средств, как объединение языков программирования, объединенная обработка исключений, усиленная безопасность, поддержка отслеживания версий и развертывания, упрощенная модель взаимодействия компонентов, а также службы отладки и профилирования.Code that you develop with a language compiler that targets the runtime is called managed code; it benefits from features such as cross-language integration, cross-language exception handling, enhanced security, versioning and deployment support, a simplified model for component interaction, and debugging and profiling services.

Примечание

Компиляторы и инструменты могут создавать выходные данные для общеязыковой среды выполнения (CLR), поскольку система типов, формат метаданных и среда выполнения (виртуальная система выполнения) определяются открытым стандартом — спецификацией общеязыковой инфраструктуры ECMA.Compilers and tools are able to produce output that the common language runtime can consume because the type system, the format of metadata, and the runtime environment (the virtual execution system) are all defined by a public standard, the ECMA Common Language Infrastructure specification. Дополнительные сведения см. в разделе Спецификации ECMA для C# и инфраструктуры Common Language Infrastructure (CLI).For more information, see ECMA C# and Common Language Infrastructure Specifications.

Чтобы включить в среде выполнения предоставление служб управляемому коду, языковые компиляторы должны предоставлять метаданные с описанием типов, членов и ссылок в коде.To enable the runtime to provide services to managed code, language compilers must emit metadata that describes the types, members, and references in your code. Метаданные хранятся вместе с кодом. Они содержатся в каждом загружаемом переносимом исполняемом (PE) файле среды CLR.Metadata is stored with the code; every loadable common language runtime portable executable (PE) file contains metadata. Метаданные в среде выполнения используются для поиска и загрузки классов, размещения экземпляров в памяти, разрешения имен при вызове методов, создания машинного кода, обеспечения безопасности и установки границ контекста времени выполнения.The runtime uses metadata to locate and load classes, lay out instances in memory, resolve method invocations, generate native code, enforce security, and set run-time context boundaries.

Среда выполнения обеспечивает автоматическое размещение объектов и управление ссылками на них, а также освобождение объектов, когда они больше не используются.The runtime automatically handles object layout and manages references to objects, releasing them when they are no longer being used. Объекты, время жизни которых управляется подобным образом, называются управляемыми данными.Objects whose lifetimes are managed in this way are called managed data. Сборка мусора исключает утечку памяти и некоторые другие часто возникающие ошибки программирования.Garbage collection eliminates memory leaks as well as some other common programming errors. Если код является управляемым, в приложении .NET Framework можно использовать управляемые данные, неуправляемые данные или управляемые и неуправляемые данные одновременно.If your code is managed, you can use managed data, unmanaged data, or both managed and unmanaged data in your .NET Framework application. Поскольку языковые компиляторы поставляют собственные типы, например, простые типы, пользователь может не знать (и не иметь такой необходимости), являются ли данные управляемыми.Because language compilers supply their own types, such as primitive types, you might not always know (or need to know) whether your data is being managed.

Среда CLR упрощает разработку компонентов и приложений, объекты которых могут работать в разных языках.The common language runtime makes it easy to design components and applications whose objects interact across languages. Объекты, написанные на разных языках, могут взаимодействовать друг с другом, а их поведение может быть тесно интегрировано.Objects written in different languages can communicate with each other, and their behaviors can be tightly integrated. Например, разработчик может определить класс, а затем на другом языке создать производный от него класс или вызвать метод из исходного класса.For example, you can define a class and then use a different language to derive a class from your original class or call a method on the original class. Можно также передать экземпляр класса в метод класса, написанного на другом языке.You can also pass an instance of a class to a method of a class written in a different language. Такая интеграция языков программирования возможна в силу того, что языковые компиляторы и программы, которые обращаются к среде выполнения, используют систему общих типов, определенную средой выполнения, и следуют правилам среды выполнения при определении новых типов, а также при создании, использовании, сохранении и привязки к типам.This cross-language integration is possible because language compilers and tools that target the runtime use a common type system defined by the runtime, and they follow the runtime's rules for defining new types, as well as for creating, using, persisting, and binding to types.

В составе своих метаданных все управляемые компоненты содержат сведения о компонентах и ресурсах, на базе которых они построены.As part of their metadata, all managed components carry information about the components and resources they were built against. Среда выполнения использует эти сведения, чтобы обеспечить наличие всех необходимых ресурсов для компонента или приложения. Это снижает вероятность сбоев кода из-за каких-либо неудовлетворенных зависимостей.The runtime uses this information to ensure that your component or application has the specified versions of everything it needs, which makes your code less likely to break because of some unmet dependency. Сведения о регистрации и данные о состоянии больше не сохраняются в реестре, где их трудно задавать и поддерживать.Registration information and state data are no longer stored in the registry where they can be difficult to establish and maintain. Вместо этого сведения об определяемых разработчиком типах (и их зависимостях) сохраняются вместе с кодом в виде метаданных, что существенно упрощает репликацию и удаление компонентов.Instead, information about the types you define (and their dependencies) is stored with the code as metadata, making the tasks of component replication and removal much less complicated.

Языковые компиляторы и программы предоставляют функции среды выполнения так, чтобы они были полезны и интуитивно понятны для разработчиков.Language compilers and tools expose the runtime's functionality in ways that are intended to be useful and intuitive to developers. Это означает, что некоторые средства среды выполнения могут быть заметными в одной среде больше, чем в другой.This means that some features of the runtime might be more noticeable in one environment than in another. Характеристики среды выполнения зависят от используемых языковых компиляторов и программ.How you experience the runtime depends on which language compilers or tools you use. Например, разработчик Visual Basic при работе со средой CLR может заметить, что язык Visual Basic имеет больше средств объектно-ориентированного программирования, чем раньше.For example, if you are a Visual Basic developer, you might notice that with the common language runtime, the Visual Basic language has more object-oriented features than before. Среда выполнения предоставляет следующие преимущества:The runtime provides the following benefits:

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

  • возможность легко использовать компоненты, разработанные на других языках;The ability to easily use components developed in other languages.

  • расширяемые типы, предоставляемые библиотекой классов;Extensible types provided by a class library.

  • языковые возможности (например, наследование, интерфейсы и перегрузку) для объектно-ориентированного программирования;Language features such as inheritance, interfaces, and overloading for object-oriented programming.

  • поддержку явной свободной потоковой обработки, позволяющую создавать масштабируемые многопотоковые приложения;Support for explicit free threading that allows creation of multithreaded, scalable applications.

  • поддержку структурированной обработки исключений;Support for structured exception handling.

  • поддержку настраиваемых атрибутов;Support for custom attributes.

  • сборка мусора;Garbage collection.

  • использование делегатов вместо указателей на функции для повышения типобезопасности и уровня защиты.Use of delegates instead of function pointers for increased type safety and security. Подробнее о делегатах см. в разделе Система общих типов CTS.For more information about delegates, see Common Type System.

Версии CLRCLR versions

Номер версии платформы .NET Framework не всегда соответствует номеру версии среды CLR, которую он содержит.The version number of the .NET Framework doesn't necessarily correspond to the version number of the CLR it includes. В следующей таблице показано, как они соотносятся:The following table shows how the two version numbers correlate:

Версия платформы .NET Framework.NET Framework version Содержит версию среды CLRIncludes CLR version
1.01.0 1.01.0
1.11.1 1.11.1
2.02.0 2.02.0
3.03.0 2.02.0
3.53.5 2.02.0
44 44
4.5 (включая 4.5.1 и 4.5.2)4.5 (including 4.5.1 and 4.5.2) 44
4.6 (включая 4.6.1 и 4.6.2)4.6 (including 4.6.1 and 4.6.2) 44
4.7 (включая 4.7.1 и 4.7.2)4.7 (including 4.7.1 and 4.7.2) 44
4.84.8 44
ЗаголовокTitle ОписаниеDescription
Процесс управляемого выполненияManaged Execution Process Описание шагов, необходимых для использования преимуществ общеязыковой среды выполнения.Describes the steps required to take advantage of the common language runtime.
Автоматическое управление памятьюAutomatic Memory Management Описание выделения и освобождения памяти сборщиком мусора.Describes how the garbage collector allocates and releases memory.
Общие сведения о платформе .NET FrameworkOverview of the .NET Framework Описание ключевых понятий платформы .NET Framework: системы общих типов CTS, межъязыкового взаимодействия, управляемого выполнения, доменов приложений и сборок.Describes key .NET Framework concepts such as the common type system, cross-language interoperability, managed execution, application domains, and assemblies.
Система общих типов CTSCommon Type System Описание того, как типы объявляются, используются и контролируются в среде выполнения в рамках поддержки межъязыковой интеграции.Describes how types are declared, used, and managed in the runtime in support of cross-language integration.

См. такжеSee also