Vue d’ensemble du Common Language Runtime (CLR)Common Language Runtime (CLR) overview

Le .NET Framework fournit un environnement d'exécution, appelé le Common Language Runtime, qui exécute le code et offre des services qui simplifient le processus de développement.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.

Les compilateurs et les outils exposent le fonctionnement du Common Language Runtime et vous permettent d'écrire du code qui bénéficie de cet environnement d'exécution managée.Compilers and tools expose the common language runtime's functionality and enable you to write code that benefits from this managed execution environment. Le code que vous développez à l'aide d'un compilateur de langage ciblant le runtime est appelé code managé ; il tire parti de fonctionnalités telles que l'intégration interlangage, la gestion interlangage des exceptions, la sécurité améliorée, la prise en charge du versioning et du déploiement, un modèle simplifié de l'interaction des composants, ainsi que des services de débogage et de gestion de profils.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.

Note

Les compilateurs et les outils peuvent générer une sortie que le Common Language Runtime peut consommer parce que le système de type, le format des métadonnées et l'environnement d'exécution (système d'exécution virtuel) sont tous définis par une norme publique, la spécification CLI (Common Language Infrastructure) 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. Pour plus d’informations, consultez ECMA C# and Common Language Infrastructure Specifications (Spécifications CLI et ECMA C#).For more information, see ECMA C# and Common Language Infrastructure Specifications.

Pour permettre au runtime de fournir des services au code managé, les compilateurs de langage doivent générer des métadonnées qui décrivent les types, les membres et les références de votre code.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. Les métadonnées sont stockées avec le code ; chaque fichier exécutable portable (PE) chargeable du Common Language Runtime contient des métadonnées.Metadata is stored with the code; every loadable common language runtime portable executable (PE) file contains metadata. Le runtime utilise les métadonnées pour rechercher et charger des classes, placer des instances en mémoire, résoudre des appels de méthode, générer un code natif, appliquer la sécurité et définir les limites du contexte d'exécution.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.

Le runtime gère automatiquement la disposition des objets et manage les références aux objets, les libérant quand ils ne sont plus utilisés.The runtime automatically handles object layout and manages references to objects, releasing them when they are no longer being used. Les objets dont la durée de vie est managée de cette façon sont appelés données managées.Objects whose lifetimes are managed in this way are called managed data. Le garbage collection élimine les fuites de mémoire ainsi que d'autres erreurs de programmation courantes.Garbage collection eliminates memory leaks as well as some other common programming errors. Si votre code est managé, vous pouvez utiliser des données managées, des données non managées, ou à la fois des données managées et non managées dans votre application .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. Dans la mesure où les compilateurs de langage fournissent leurs propres types, tels que des types primitifs, vous ne pouvez pas toujours savoir (ou avoir besoin de savoir) si vos données sont managées.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.

Le Common Language Runtime facilite la conception de composants et d'applications dont les objets interagissent entre les langages.The common language runtime makes it easy to design components and applications whose objects interact across languages. Les objets écrits dans des langages différents peuvent communiquer les uns avec les autres, et leurs comportements peuvent être fortement intégrés.Objects written in different languages can communicate with each other, and their behaviors can be tightly integrated. Par exemple, vous pouvez définir une classe puis utiliser un langage différent pour dériver une classe de votre classe d'origine ou appeler une méthode pour la classe d'origine.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. Vous pouvez également passer une instance d'une classe à une méthode d'une classe écrite dans un autre langage.You can also pass an instance of a class to a method of a class written in a different language. Cette intégration interlangage n'est possible que parce que les outils et les compilateurs de langage ciblant le runtime utilisent un système de type commun défini par le runtime, et qu'ils suivent les règles établies par le runtime en matière de définition de nouveaux types, ainsi que de création, d'utilisation, de persistance de types et de liaison avec ceux-ci.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.

Au sein de leurs métadonnées, tous les composants managés comportent des informations relatives aux composants et aux ressources pour lesquels ils ont été générés.As part of their metadata, all managed components carry information about the components and resources they were built against. Le runtime exploite ces informations pour s'assurer que votre composant ou application possède les versions spécifiées de tous les éléments dont il a besoin, ce qui rend votre code moins enclin aux arrêts provoqués par une dépendance sans correspondance.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. Les informations d'inscription et les données d'état ne sont plus stockées dans le Registre où il peut être difficile de les implanter et de les gérer.Registration information and state data are no longer stored in the registry where they can be difficult to establish and maintain. Au lieu de cela, les informations relatives aux types que vous définissez (et leurs dépendances) sont stockées avec le code en tant que métadonnées, rendant les tâches de réplication et de suppression de composants beaucoup moins compliquées.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.

Les outils et les compilateurs de langage exposent le fonctionnement du runtime selon des modes qui se veulent utiles et intuitifs pour les développeurs.Language compilers and tools expose the runtime's functionality in ways that are intended to be useful and intuitive to developers. Cela signifie que certaines fonctionnalités du runtime peuvent se faire remarquer davantage dans un environnement que dans un autre.This means that some features of the runtime might be more noticeable in one environment than in another. Les fonctionnalités du runtime dépend des compilateurs de langage ou des outils utilisés.How you experience the runtime depends on which language compilers or tools you use. Par exemple, si vous êtes un développeur Visual Basic, vous pouvez remarquer qu'avec le Common Language Runtime, le langage Visual Basic dispose davantage de fonctionnalités orientées objet qu'avant.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. Le runtime fournit les avantages suivants :The runtime provides the following benefits:

  • Amélioration des performances.Performance improvements.

  • Possibilité d'utiliser facilement des composants développés dans d'autres langages.The ability to easily use components developed in other languages.

  • Types extensibles fournis par une bibliothèque de classes.Extensible types provided by a class library.

  • Fonctionnalités de langage telles que l'héritage, les interfaces et la surcharge pour la programmation orientée objet.Language features such as inheritance, interfaces, and overloading for object-oriented programming.

  • Prise en charge du modèle de thread libre explicite qui permet la création d'applications évolutives multithread.Support for explicit free threading that allows creation of multithreaded, scalable applications.

  • Prise en charge de la gestion structurée des exceptions.Support for structured exception handling.

  • Prise en charge des attributs personnalisés.Support for custom attributes.

  • Garbage collection.Garbage collection.

  • Utilisation des délégués plutôt que des pointeurs fonction pour une sécurité de type et une sécurité accrues.Use of delegates instead of function pointers for increased type safety and security. Pour plus d'informations sur les délégués, consultez Système de type commun.For more information about delegates, see Common Type System.

Versions CLRCLR versions

Le numéro de version du .NET Framework ne correspond pas nécessairement au numéro de version du CLR qu'il contient.The version number of the .NET Framework doesn't necessarily correspond to the version number of the CLR it includes. Le tableau suivant illustre la corrélation entre les deux numéros de version.The following table shows how the two version numbers correlate.

Version du .NET Framework.NET Framework version Inclut la 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 (y compris 4.5.1 et 4.5.2)4.5 (including 4.5.1 and 4.5.2) 44
4.6 (y compris 4.6.1 et 4.6.2)4.6 (including 4.6.1 and 4.6.2) 44
4.7 (y compris 4.7.1 et 4.7.2)4.7 (including 4.7.1 and 4.7.2) 44
TitreTitle DescriptionDescription
Processus d'exécution managéeManaged Execution Process Décrit les étapes nécessaires pour tirer parti du Common Language Runtime.Describes the steps required to take advantage of the common language runtime.
Gestion automatique de la mémoireAutomatic Memory Management Explique comment le « garbage collector » alloue et libère la mémoire.Describes how the garbage collector allocates and releases memory.
Vue d’ensemble du .NET FrameworkOverview of the .NET Framework Décrit les concepts fondamentaux du .NET Framework, tels que le système de type commun (CTS, Common Type System), l'interopérabilité interlangage, l'exécution managée, les domaines d'application et les assemblys.Describes key .NET Framework concepts such as the common type system, cross-language interoperability, managed execution, application domains, and assemblies.
Système de type communCommon Type System Décrit la manière dont les types sont déclarés, utilisés et managés dans le runtime à l'appui de l'intégration interlangage.Describes how types are declared, used, and managed in the runtime in support of cross-language integration.

Voir aussiSee also