Common Language Infrastructure (CLI) est un cadre standardisé développé par Microsoft pour créer et exécuter applications écrit en différents langages de programmation. Il fournit une plate-forme linguistiquement neutre qui permet l'interopérabilité du code, permettant à différents langages de fonctionner ensemble de manière transparente.

Qu’est-ce que l’infrastructure linguistique commune ?
Common Language Infrastructure (CLI) est une architecture standardisée conçue par Microsoft pour prendre en charge le développement et l'exécution d'applications logicielles écrites dans plusieurs langages de programmation de haut niveau. CLI fournit un environnement dans lequel le code de différents langages peut interagir, en exploitant un ensemble unifié de services et de bibliothèques.
Ce cadre comprend la définition des types de données, l'exécution de code et d'autres d'exécution comportements, garantissant que les programmes peuvent être exécutés sur différents matériel et plateformes logicielles sans modification. En faisant abstraction de la plate-forme sous-jacente, CLI permet aux développeurs d'écrire du code dans leur langage préféré tout en conservant la compatibilité et les performances. Le système comprend également un modèle de sécurité robuste, un garbage collection, une gestion des exceptions et une prise en charge des types dynamiques.
Composants d'infrastructure linguistique commune
Common Language Infrastructure se compose de plusieurs composants de base qui, ensemble, facilitent le développement et l'exécution d'applications dans un environnement multilingue. Chaque composant joue un rôle crucial pour garantir l'interopérabilité du langage, la gestion du temps d'exécution et la cohérence de l'exécution. Ils comprennent:
- Système de type commun (CTS). CTS définit la manière dont les types de données sont déclarés, utilisés et gérés dans l'environnement d'exécution. Il garantit que les types utilisés dans différents langages de programmation peuvent interopérer en établissant un cadre commun pour la représentation des types de données. Cela permet une intégration et une communication transparentes entre le code écrit dans différents langages.
- Spécification de langage commun (CLS). CLS fournit un ensemble de règles et de directives que les langues doivent suivre pour garantir qu'elles peuvent interagir avec d'autres langues compatibles CLS. Cette spécification définit un sous-ensemble de CTS que tous les langages ciblant la CLI doivent prendre en charge, favorisant l'interopérabilité et réduisant les barrières linguistiques.
- Système d'exécution virtuel (VES). VES, également connu sous le nom de Common Language Runtime (CLR) dans le framework .NET, est responsable de la gestion de l'exécution des programmes compatibles CLI. Il fournit des services tels que la gestion de la mémoire, l'application de la sécurité, la gestion des exceptions et la compilation juste à temps (JIT) du code de langage intermédiaire (IL) en code machine natif.
- Métadonnées. Métadonnées décrit la structure du code et les types qu'il contient, y compris les classes, les interfaces, les méthodes et les champs. Il fournit des informations essentielles que le runtime utilise pour la vérification de type, la sécurité et le marshaling, permettant un degré élevé d'introspection et d'auto-description dans le code.
- Langue intermédiaire (IL). IL, également connu sous le nom de langage intermédiaire commun (CIL) ou langage intermédiaire Microsoft (MSIL), est le Processeur-ensemble d'instructions indépendant dans lequel les langages CLI se compilent. Le VES exécute IL en le convertissant en code natif à l'aide d'une compilation JIT ou d'une compilation anticipée (AOT), permettant l'indépendance et l'optimisation de la plate-forme.
Comment fonctionne l’infrastructure linguistique commune ?
L'infrastructure de langage commun (CLI) fonctionne comme un cadre complet qui permet le développement et l'exécution d'applications écrites dans plusieurs langages de programmation, garantissant ainsi l'interopérabilité et une exécution efficace. Voici un aperçu du fonctionnement de la CLI :
- Compilation du code source. Lorsque vous écrivez du code dans un langage pris en charge par la CLI, le code source est compilé par le compilateur de langage respectif dans un langage intermédiaire (IL), indépendant du processeur. Ce code IL est un ensemble d'instructions de bas niveau que tous les langages compatibles CLI utilisent, garantissant la cohérence et l'interopérabilité.
- Génération de métadonnées. Parallèlement à IL, le compilateur génère des métadonnées qui décrivent les types, les membres et les références dans le code. Les métadonnées incluent des informations sur les classes, les méthodes, les champs et d'autres structures de données, facilitant la vérification du type, l'application de la sécurité et d'autres services d'exécution.
- Création d'assemblage. Le code IL et les métadonnées sont regroupés dans un assembly, qui peut être soit un exécutable (.exe), soit une bibliothèque (.dll). Les assemblys sont les éléments constitutifs des applications CLI et peuvent être partagés et réutilisés dans différentes applications.
- Exécution par système d'exécution virtuel (VES). Lorsqu'un assembly est exécuté, le système d'exécution virtuel (VES), également connu sous le nom de Common Language Runtime (CLR) dans .NET, prend le relais. Le VES charge l'assembly, lit les métadonnées et commence l'exécution en convertissant le code IL en code machine natif à l'aide d'une compilation juste à temps (JIT). Alternativement, la compilation anticipée (AOT) peut être utilisée pour convertir IL en code natif avant l'exécution, améliorant ainsi les performances.
- Gestion de la mémoire. VES gère la gestion de la mémoire via le garbage collection automatique. Ce processus identifie et libère la mémoire qui n'est plus utilisée, empêchant ainsi la mémoire fuites et optimiser l’utilisation des ressources.
- Application de la sécurité. CLI intègre un modèle de sécurité robuste qui applique la sécurité d'accès au code (CAS) et la sécurité des types, garantissant que le code s'exécute dans les autorisations et limites définies. Cela empêche l’accès non autorisé et l’exécution de code nuisible.
- Gestion des exceptions. Le VES fournit un mécanisme cohérent de gestion des exceptions dans tous les langages compatibles CLI, permettant aux développeurs d'écrire des applications robustes et tolérantes aux erreurs. Les exceptions sont gérées de manière uniforme, garantissant que les erreurs sont détectées et traitées de manière appropriée.
- Interopérabilité. Le système de type commun (CTS) et la spécification de langage commun (CLS) garantissent que différents langages peuvent fonctionner ensemble de manière transparente. CTS définit un ensemble commun de types de données et d'opérations, tandis que CLS spécifie les fonctionnalités que les langages doivent prendre en charge pour garantir l'interopérabilité. Cela permet l'intégration de composants et de bibliothèques écrits dans différents langages au sein d'une seule application.
Avantages de l’infrastructure linguistique commune
L'infrastructure de langage commun (CLI) offre de nombreux avantages qui améliorent le développement et l'exécution de logiciels dans divers langages de programmation. Ces avantages contribuent à accroître l’efficacité, l’interopérabilité et la maintenabilité du processus de développement :
- Interopérabilité. CLI permet à différents langages de programmation de fonctionner ensemble de manière transparente. Cela permet aux développeurs d'utiliser le meilleur langage pour chaque tâche spécifique au sein d'une seule application, facilitant ainsi la collaboration et la réutilisation du code.
- Indépendance de la plateforme. Les programmes écrits à l'aide de CLI peuvent s'exécuter sur diverses plates-formes matérielles et logicielles sans modification. Cette compatibilité multiplateforme garantit que les applications peuvent atteindre un public plus large et s'adapter facilement à différents environnements.
- Système de type unifié. Le système de types communs (CTS) dans CLI fournit un cadre cohérent pour définir et utiliser les types de données. Cette standardisation réduit les erreurs liées au type et simplifie la manipulation des données dans toutes les langues.
- Sécurité. CLI comprend un modèle de sécurité robuste qui permet de protéger les applications contre diverses menaces. Il applique la sécurité et la vérification de l'accès au code, garantissant que seul le code sûr et autorisé est exécuté.
- Exécution maîtrisée. Le système d'exécution virtuelle (VES) gère l'exécution des programmes, fournissant des services tels que le garbage collection, la gestion des exceptions et la gestion des ressources. Cet environnement géré réduit le risque de fuites de mémoire et améliore la stabilité des applications.
- Optimisation des performances. La CLI inclut des fonctionnalités qui optimisent les performances, telles que la compilation juste à temps (JIT). Cela traduit le code de langue intermédiaire en code machine natif à d'exécution, améliorant la vitesse et l'efficacité d'exécution.
- Développement flexabilité. En prenant en charge plusieurs langages de programmation, CLI offre aux développeurs le flexpossibilité de choisir les meilleurs outils et langages pour leurs projets. Cela favorise l’innovation et permet aux équipes de tirer parti efficacement de l’expertise et des ressources existantes.