# Common Language Infrastructure

La Common Language Infrastructure (amb acrònim anglès CLI) és una especificació oberta i estàndard tècnic desenvolupat originalment per Microsoft i estandarditzat per ISO / IEC (ISO/IEC 23271) i Ecma International (ECMA 335) que descriu codi executable i un entorn d'execució que permet utilitzar diversos idiomes d'alt nivell en diferents plataformes informàtiques sense ser reescrits per a arquitectures específiques. Això implica que és agnòstic de la plataforma. El .NET Framework, .NET i Mono són implementacions de la CLI. El format de metadades també s'utilitza per especificar les definicions d'API exposades pel Windows Runtime.
Entre altres coses, l'especificació CLI descriu els quatre aspectes següents:

## Visió general visual de la Common Language Infrastructure (CLI).El sistema de tipus comú (CTS)

    Un conjunt de tipus de dades i operacions que comparteixen tots els llenguatges de programació compatibles amb CTS.

## Les metadades

    La informació sobre l'estructura del programa és independent del llenguatge, de manera que es pot fer referència entre idiomes i eines, de manera que és fàcil treballar amb codi escrit en un llenguatge que el desenvolupador no utilitza.

## L'especificació del llenguatge comú (CLS)

    La CLI hauria d'ajustar-se al conjunt de regles base a les quals s'orienta qualsevol idioma, ja que aquest idioma hauria d'interoperar amb altres idiomes compatibles amb CLS. Les regles CLS són un subconjunt del Common Type System.

## El sistema d'execució virtual (VES)

    El VES carrega i executa programes compatibles amb CLI, utilitzant les metadades per combinar fragments de codi generats per separat en temps d'execució.
Tots els llenguatges compatibles es compilen al Common Intermediate Language (CIL), que és un llenguatge intermedi que s'abstraeix del maquinari de la plataforma. Quan s'executa el codi, el VES específic de la plataforma compilarà el CIL al llenguatge de màquina segons el maquinari i el sistema operatiu específics.

## Implementacions

* . NET Framework és la implementació comercial original de Microsoft de la CLI. Només és compatible amb Windows. Va ser substituït per .NET el novembre de 2020.
* .NET, abans conegut com .NET Core, és el successor multiplataforma gratuït i de codi obert de .NET Framework, publicat sota la llicència MIT.
* .NET Compact Framework és la implementació comercial de Microsoft de la CLI per a dispositius portàtils i Xbox 360.
* .NET Micro Framework és una implementació de codi obert de la CLI per a dispositius amb recursos limitats.
* Mono és una implementació alternativa de codi obert de la CLI i les tecnologies que l'acompanyen, utilitzada principalment per al desenvolupament de jocs i mòbils.

## Referències

* ↑ «ISO/IEC 23271:2012 - Information technology -- Common Language Infrastructure (CLI)» (en anglès).
* ↑ «Standard ECMA-335 - 6th edition (June 2012)» (en anglès).
* ↑ «Introduction to Advanced Windows Store App Development using HTML5 and JavaScript | Microsoft Press Store» (en anglès).
* ↑ «WinRT demystified - Miguel de Icaza» (en anglès).
* ↑ «ECMA-335» (en anglès). https://www.ecma-international.org.+[Consulta: 17 febrer 2023].