Compartir a través de


Introducción a Common Language Runtime (CLR)

.NET proporciona un entorno en tiempo de ejecución denominado Common Language Runtime que ejecuta el código y proporciona servicios que facilitan el proceso de desarrollo.

Los compiladores y las herramientas exponen la funcionalidad de Common Language Runtime y permiten escribir código que se beneficia del entorno de ejecución administrado. El código que desarrolla con un compilador de lenguaje que tiene como destino el entorno de ejecución se denomina código administrado. El código administrado se beneficia de características como la integración entre lenguajes, el control de excepciones entre lenguajes, la seguridad mejorada, el control de versiones y la compatibilidad con la implementación, un modelo simplificado para la interacción de componentes y los servicios de depuración y generación de perfiles.

Nota:

Los compiladores y herramientas pueden generar una salida que el Common Language Runtime (CLR) puede consumir porque el sistema de tipos, el formato de los metadatos y el entorno en tiempo de ejecución (el sistema de ejecución virtual) están definidos por un estándar público, la especificación ECMA Common Language Infrastructure (CLI). Para obtener más información, consulte ECMA C# y Common Language Infrastructure Specifications.

Para permitir que el tiempo de ejecución proporcione servicios al código administrado, los compiladores de lenguaje deben emitir metadatos que describan los tipos, miembros y referencias del código. Los metadatos se almacenan con el código; todos los archivos ejecutables portables (PE) de Common Language Runtime que se pueden cargar contienen metadatos. El tiempo de ejecución usa metadatos para buscar y cargar clases, diseñar instancias en memoria, resolver invocaciones de método, generar código nativo, aplicar seguridad y establecer límites de contexto en tiempo de ejecución.

El tiempo de ejecución controla automáticamente el diseño de objetos y administra las referencias a objetos, lo que los libera cuando ya no se usan. Los objetos cuya duración se administran de esta manera se denominan datos administrados. La recolección de elementos no utilizados elimina las fugas de memoria y otros errores de programación comunes. Si el código es administrado, puedes utilizar datos administrados, no administrados o una combinación de ambos en tu aplicación .NET. Dado que los compiladores de lenguaje proporcionan sus propios tipos, como los tipos primitivos, es posible que no siempre sepa o necesite saber si los datos se administran.

Common Language Runtime facilita el diseño de componentes y aplicaciones cuyos objetos interactúan entre lenguajes. Los objetos escritos en distintos lenguajes pueden comunicarse entre sí y sus comportamientos se pueden integrar estrechamente. Por ejemplo, puede definir una clase y, a continuación, usar un lenguaje diferente para derivar una clase de la clase original o llamar a un método en la clase original. También puede pasar una instancia de una clase a un método de una clase escrita en otro idioma. Esta integración entre lenguajes es posible porque los compiladores de lenguaje y las herramientas que tienen como destino el tiempo de ejecución usan un sistema de tipos común definido por el tiempo de ejecución. Siguen las reglas del entorno de ejecución para definir nuevos tipos y para crear, usar, conservar y enlazar a tipos.

Como parte de sus metadatos, todos los componentes administrados llevan información sobre los componentes y los recursos contra los cuales se construyeron. El tiempo de ejecución usa esta información para asegurarse de que el componente o la aplicación tiene las versiones especificadas de todo lo que necesita, lo que hace que el código sea menos probable que se interrumpa debido a alguna dependencia no satisfecha. La información de registro y los datos de estado ya no se almacenan en el registro, donde pueden ser difíciles de establecer y mantener. En su lugar, la información sobre los tipos que defina y sus dependencias se almacenan con el código como metadatos. De este modo, la tarea de replicación y eliminación de componentes es menos complicada.

Los compiladores de lenguaje y las herramientas exponen la funcionalidad del entorno de ejecución de maneras que están diseñadas para ser útiles e intuitivas para los desarrolladores. Algunas características del entorno de ejecución pueden ser más notables en un entorno que en otro. La experiencia del tiempo de ejecución depende de qué compiladores de lenguaje o herramientas se usen. Por ejemplo, si es desarrollador de Visual Basic, es posible que observe que con Common Language Runtime, el lenguaje de Visual Basic tiene más características orientadas a objetos que antes. El entorno de ejecución proporciona las siguientes ventajas:

  • Mejoras en el rendimiento.

  • La capacidad de usar fácilmente componentes desarrollados en otros lenguajes.

  • Tipos extensibles proporcionados por una biblioteca de clases.

  • Características de lenguaje como la herencia, las interfaces y la sobrecarga para la programación orientada a objetos.

  • Compatibilidad con subprocesos libres explícitos que permite la creación de aplicaciones multiproceso y escalables.

  • Compatibilidad con el control de excepciones estructurado.

  • Compatibilidad con atributos personalizados.

  • Recolección de basura.

  • Emplee delegados en lugar de punteros a funciones para mayor seguridad y protección de tipos. Para obtener más información sobre los delegados, vea Common Type System.

Versiones de CLR

Las versiones de .NET Core y .NET 5+ tienen una sola versión de producto, es decir, no hay ninguna versión CLR independiente. Para obtener una lista de las versiones de .NET Core, consulte Descarga de .NET Core.

Sin embargo, el número de versión de .NET Framework no corresponde necesariamente al número de versión de CLR que incluye. Para obtener una lista de las versiones de .NET Framework y sus versiones DE CLR correspondientes, consulte Versiones y dependencias de .NET Framework.

Título Descripción
Proceso de ejecución administrada Describe los pasos necesarios para aprovechar Common Language Runtime.
Administración automática de memoria Describe cómo asigna y libera memoria el recolector de elementos no utilizados.
Introducción a .NET Framework Describe los conceptos clave de .NET Framework, como el sistema de tipos común, la interoperabilidad entre lenguajes, la ejecución administrada, los dominios de aplicación y los ensamblados.
Sistema de tipos comunes Describe cómo se declaran, usan y administran los tipos en tiempo de ejecución en compatibilidad con la integración entre lenguajes.