Interopérabilité interlangage

Cette section décrit la prise en charge intégrée de l'interopérabilité des langages du Common Language Runtime et explique le rôle que la spécification CLS joue dans la prise en charge de l'interopérabilité interlangage.

L'interopérabilité des langages désigne la capacité du code à interagir avec du code écrit dans un autre langage de programmation. L'interopérabilité des langages peut permettre d'optimiser l'utilisation du code et améliorer l'efficacité du processus de développement.

Comme les développeurs utilisent de nombreux outils et technologies, dont chacun peut prendre en charge différents types et fonctionnalités, il a été difficile d'assurer l'interopérabilité des langages du point de vue historique. Les outils et les compilateurs de langages qui ciblent le Common Language Runtime bénéficient toutefois de la prise en charge intégrée de l'interopérabilité des langages du runtime.

Le Common Language Runtime propose l'infrastructure nécessaire à l'interopérabilité des langages en spécifiant et en appliquant un système de type commun (CTS, Common Type System) et en fournissant des métadonnées. Comme tous les langages qui ciblent le runtime suivent les règles du système de type commun (CTS, Common Type System) pour définir et utiliser les types, l'utilisation de types est cohérente d'un langage à un autre. Les métadonnées assurent l'interopérabilité des langages en définissant un mécanisme uniforme de stockage et d'extraction des informations sur les types. Les compilateurs stockent les informations sur les types sous la forme de métadonnées et le Common Language Runtime utilisent ces informations pour fournir des services au cours de l'exécution ; le runtime peut manager l'exécution d'applications multilangages, car toutes les informations sur les types sont stockées et extraites de la même manière, quel que soit le langage dans lequel le code a été écrit.

Le code managé bénéficie de la prise en charge de l'interopérabilité des langages du runtime des manières suivantes :

  • Les types peuvent hériter de l'implémentation d'autres types, passer des objets aux méthodes d'un autre type et appeler des méthodes définies dans d'autres types, quel que soit le langage dans lequel les types sont implémentés.

  • Les débogueurs, les générateurs de profils ou d'autres outils sont nécessaires à la compréhension d'un seul environnement (le langage MSIL (Microsoft Intermediate Language) et les métadonnées pour le Common Language Runtime) et ils peuvent prendre en charge tous les langages de programmation qui ciblent le runtime.

  • La gestion des exceptions est cohérente d'un langage à l'autre. Votre code peut lever une exception dans un langage et cette exception peut être interceptée et comprise par un objet écrit dans un autre langage.

Même si le runtime fournit l'ensemble du code managé assurant la prise en charge de l'exécution dans un environnement multilangage, il n'est pas garanti que les fonctionnalités des types que vous créez puissent être entièrement utilisées par les langages de programmation que d'autres développeurs utilisent. Cela s'explique principalement par le fait que chaque compilateur de langages ciblant le runtime utilise le système de type et des métadonnées pour prendre en charge son propre ensemble unique de fonctionnalités de langage. Lorsque vous ne connaissez pas le langage dans lequel le code appelant sera écrit, il est peu vraisemblable que vous sachiez si les fonctionnalités que votre composant expose sont accessibles à l'appelant. Par exemple, si votre langage de choix fournit la prise en charge des entiers non signés, vous pouvez concevoir une méthode avec un paramètre de type UInt32. Toutefois, cette méthode n'est pas utilisable à partir d'un langage sans notion des entiers non signés.

Pour que le code managé soit accessible aux développeurs utilisant d'autres langages de programmation, le .NET Framework propose la spécification CLS (CLS (Common Language Specification)) qui décrit un ensemble fondamental de fonctionnalités de langage et définit les règles d'utilisation de ces fonctionnalités. Pour plus d'informations sur la conformité CLS dans des composants et des outils, consultez Écriture d'un code conforme CLS.

Rubriques connexes

Titre

Description

Spécification CLS (Common Language Specification)

Explique la nécessité d'un ensemble de fonctionnalités commun à tous les langages et identifie les règles et les fonctionnalités CLS.

Écriture d'un code conforme CLS

Aborde la signification de la conformité CLS des composants et identifie les niveaux de conformité CLS des outils.

Système de type commun (CTS, Common Type System)

Décrit comment les types sont déclarés, utilisés et managés par le Common Language Runtime.

Métadonnées et composants autodescriptifs

Explique le mécanisme du Common Language Runtime permettant de décrire un type et de stocker ces informations avec le type lui-même.