La Infraestructura de Lenguaje Común ( CLI ) es una especificación abierta y un estándar técnico desarrollado originalmente por Microsoft y estandarizado por ISO / IEC ( ISO/IEC 23271 ) y Ecma International ( ECMA 335 ) [ 1 ] [ 2 ] que describe código ejecutable y un entorno de ejecución que permite utilizar múltiples lenguajes de alto nivel en diferentes plataformas informáticas sin necesidad de reescribirlos para arquitecturas específicas. Esto implica que es independiente de la plataforma. .NET Framework , .NET y Mono son implementaciones de la CLI. El formato de metadatos también se utiliza para especificar las definiciones de API expuestas por Windows Runtime . [ 3 ] [ 4 ]
Descripción general

Entre otras cosas, la especificación de la CLI describe los siguientes cinco aspectos:
- El Sistema de Tipos Comunes (CTS)
- Un conjunto de tipos de datos y operaciones que comparten todos los lenguajes de programación compatibles con CTS .
- Los metadatos
- La información sobre la estructura del programa es independiente del lenguaje , de modo que se puede consultar entre diferentes lenguajes y herramientas, lo que facilita el trabajo con código escrito en un lenguaje que el desarrollador no utiliza.
- La Especificación del Lenguaje Común (CLS)
- Las CLS, un subconjunto de las CTS, son reglas a las que deben adherirse los componentes desarrollados con/para los lenguajes compatibles.
- Se aplican a los consumidores (desarrolladores que acceden mediante programación a un componente compatible con CLS), a los marcos de trabajo (desarrolladores que utilizan un compilador de lenguaje para crear bibliotecas compatibles con CLS) y a los extensores (desarrolladores que crean una herramienta, como un compilador de lenguaje o un analizador de código, que crea componentes compatibles con CLS).
- El Sistema de Ejecución Virtual (SEV)
- El VES carga y ejecuta programas compatibles con la interfaz de línea de comandos (CLI), utilizando los metadatos para combinar fragmentos de código generados por separado en tiempo de ejecución.
- Todos los lenguajes compatibles se compilan a Common Intermediate Language (CIL), un lenguaje intermedio que abstrae el hardware de la plataforma. Al ejecutarse el código, el VES específico de la plataforma compila el CIL al lenguaje máquina según el hardware y el sistema operativo.
- En el estándar CLI desarrollado inicialmente por Microsoft, el VES se implementa mediante el Common Language Runtime (CLR).
- Las bibliotecas estándar
- Un conjunto de bibliotecas que proporcionan muchas funciones comunes, como la lectura y escritura de archivos. Su núcleo es la Biblioteca de Clases Base (BCL).
Estandarización y concesión de licencias
En agosto de 2000, Microsoft , Hewlett-Packard , Intel y otras empresas colaboraron para estandarizar la interfaz de línea de comandos (CLI). En diciembre de 2001, fue ratificada por la Ecma , y la estandarización ISO / IEC se produjo en abril de 2003.
Microsoft y sus socios poseen patentes para CLI. Ecma e ISO/IEC exigen que todas las patentes esenciales para la implementación estén disponibles bajo " términos razonables y no discriminatorios (RAND) ". Es común que las licencias RAND requieran el pago de regalías, lo que podría ser motivo de preocupación con Mono . A partir de enero de 2013 Ni Microsoft ni sus socios han identificado ninguna patente esencial para las implementaciones de CLI sujetas a los términos RAND.
A partir de julio de 2009 [ 5 ] Microsoft agregó C# y CLI a la lista de especificaciones a las que se aplica la Promesa de la Comunidad de Microsoft, [ 6 ] de modo que cualquiera puede implementar de forma segura ediciones específicas de los estándares sin temor a una demanda por patentes de Microsoft. Para implementar el estándar CLI se requiere conformidad con uno de los perfiles compatibles y definidos del estándar, siendo el mínimo el perfil del kernel. El perfil del kernel es en realidad un conjunto muy pequeño de tipos para admitir en comparación con la conocida biblioteca principal de las instalaciones predeterminadas de .NET. Sin embargo, la cláusula de conformidad de la CLI permite extender el perfil compatible agregando nuevos métodos y tipos a las clases, así como derivando de nuevos espacios de nombres. Pero no permite agregar nuevos miembros a las interfaces. Esto significa que las características de la CLI se pueden usar y extender, siempre que la implementación del perfil conforme no cambie el comportamiento de un programa destinado a ejecutarse en ese perfil, al tiempo que permite un comportamiento no especificado de los programas escritos específicamente para esa implementación.
En 2012, Ecma e ISO/IEC publicaron la nueva edición del estándar CLI. [ 1 ] [ 2 ]
Implementaciones
- .NET Framework es la implementación comercial original de Microsoft de la CLI. Solo es compatible con Windows. Fue reemplazado por .NET en noviembre de 2020.
- .NET , anteriormente conocido como .NET Core, es el sucesor multiplataforma gratuito y de código abierto de .NET Framework, publicado bajo la licencia MIT.
- .NET Compact Framework es la implementación comercial de Microsoft de la interfaz de línea de comandos (CLI) para dispositivos portátiles y Xbox 360 .
- .NET Micro Framework es una implementación de código abierto de la interfaz de línea de comandos (CLI) para dispositivos con recursos limitados.
- Mono es una implementación alternativa de código abierto de la interfaz de línea de comandos (CLI) y las tecnologías que la acompañan, utilizada principalmente para el desarrollo de aplicaciones móviles y videojuegos.
- DotGNU es una parte en desuso del Proyecto GNU, iniciado en enero de 2001, cuyo objetivo era proporcionar una alternativa de software libre y de código abierto al .NET Framework de Microsoft .
Véase también
Notas
- 1 2 "ISO/IEC 23271:2012 - Tecnología de la información - Infraestructura de lenguaje común (CLI)" . ISO . Archivado del original el 2 de julio de 2023.
- 1 2 "ECMA-335" . ECMA International . Junio de 2012. Archivado del original el 16 de octubre de 2023.
- ↑ "Introducción al desarrollo avanzado de aplicaciones para la Tienda Windows con HTML5 y JavaScript" . Microsoft Press Store . 15 de octubre de 2013. Archivado del original el 30 de marzo de 2023.
- ↑ de Icaza, Miguel (15 de septiembre de 2011). "WinRT desmitificado" . Archivado del original el 30 de noviembre de 2023.
- ↑ Galli, Peter (6 de julio de 2009). "Los estándares Ecma C# y CLI" . Port 25. Archivado del original el 9 de julio de 2009. Recuperado el 26 de septiembre de 2009 .
- ↑ v-alje (16 de marzo de 2023). " [ MS-DEVCENTLP ] : Promesa de la comunidad de Microsoft" . Microsoft Learn . Consultado el 1 de mayo de 2023 .
Referencias
- "Estándar ECMA-335, Infraestructura de Lenguaje Común (CLI)" . Ecma International . Consultado el 1 de noviembre de 2023 .
- "ISO/IEC 23271, Infraestructura de lenguaje común" . ISO/IEC . Consultado el 27 de septiembre de 2006 .
- "Estándares de Ecma C# y Common Language Infrastructure" . Microsoft Corporation . Consultado el 13 de octubre de 2009 .
- «Independencia lingüística y componentes independientes del idioma» . Microsoft Learn . 21 de diciembre de 2022. Consultado el 19 de mayo de 2023 .
Enlaces externos
- ISO/IEC 23271:2012 Tecnología de la información — Infraestructura de lenguaje común (CLI)
- Infraestructura de lenguaje común
- Normas Ecma
- Normas IEC
- normas ISO