Vue d'ensemble de l'interopérabilité des langages
Mise à jour : novembre 2007
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, par conséquent, 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 le langage de votre choix prend en charge des entiers non signés, vous pouvez alors concevoir une méthode avec un paramètre de type UInt32 ; cette méthode serait toutefois inutilisable à partir d'un langage dépourvu de la notion d'entiers non signés.
Pour que le code managé soit accessible aux développeurs utilisant un autre langage de programmation, le .NET Framework propose la spécification CLS (Spécification 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.
Voir aussi
Concepts
Spécification CLS (Common Language Specification)
Écriture d'un code conforme CLS