Compartir a través de


Información general acerca de Common Language Runtime

Actualización: noviembre 2007

Los compiladores y las herramientas exponen la funcionalidad en tiempo de ejecución y permiten escribir código con las ventajas que proporciona este entorno de ejecución administrado. El código desarrollado con un compilador de lenguaje orientado al tiempo de ejecución se denomina código administrado. Este código se beneficia de características como: la integración entre lenguajes, el control de excepciones entre lenguajes, la seguridad mejorada, la compatibilidad con la implementación y las versiones, un modelo simplificado de interacción y servicios de creación de perfiles y depuración.

Para permitir al motor en tiempo de ejecución proporcionar servicios al código administrado, los compiladores de lenguajes deben emitir metadatos que describen los tipos, los miembros y las referencias del código. Los metadatos se almacenan con el código; cada archivo ejecutable portable (PE) de Common Language Runtime cargable contiene metadatos. El motor en tiempo de ejecución utiliza los metadatos para localizar y cargar clases, colocar instancias en memoria, resolver invocaciones a métodos, generar código nativo, exigir mecanismos de seguridad y establecer los límites del contexto en tiempo de ejecución.

El tiempo de ejecución controla automáticamente la disposición de los objetos y administra las referencias a éstos, liberándolos cuando ya no se utilizan. Los objetos cuya duración se administra de esta forma se denominan datos administrados. La recolección de elementos no utilizados elimina pérdidas de memoria así como otros errores habituales de programación. Con un código administrado se pueden utilizar datos administrados, datos no administrados o estos dos tipos de datos en una aplicación .NET. Framework. Como los compiladores de lenguajes proporcionan sus propios tipos, como tipos primitivos, no siempre se sabe (o no es necesario saber) si los datos se están administrando.

Common Language Runtime facilita el diseño de los componentes y de las aplicaciones cuyos objetos interactúan entre lenguajes distintos. Los objetos escritos en lenguajes diferentes pueden comunicarse entre sí, lo que permite integrar sus comportamientos de forma precisa. Por ejemplo, puede definir una clase y, a continuación, utilizar un lenguaje diferente para derivar una clase de la clase original o llamar a un método de la clase original. También se puede pasar al método de una clase una instancia de una clase escrita en un lenguaje diferente. Esta integración entre lenguajes diferentes es posible porque los compiladores y las herramientas de lenguajes orientados al motor en tiempo de ejecución utilizan un sistema de tipos común definido por el motor en tiempo de ejecución, y los lenguajes siguen las reglas en tiempo de ejecución para definir nuevos tipos, así como para crear, utilizar, almacenar y enlazar tipos.

Como parte de los metadatos, todos los componentes administrados contienen información sobre los componentes y los recursos utilizados en su creación. El motor en tiempo de ejecución utiliza esta información para garantizar que el componente o la aplicación contiene las versiones especificadas de todo lo necesario, por lo que hay menos posibilidades de que la ejecución del código se interrumpa debido a una dependencia inadecuada. La información de registro y los datos de estado ya no se almacenan en el Registro, donde puede ser difícil establecer y mantener datos. En su lugar, la información sobre tipos definidos por el usuario (y sus dependencias) se almacena con el código como metadatos y, de este modo, las tareas de réplica y eliminación de componentes es mucho menos complicada.

Las herramientas y los compiladores de lenguajes exponen la funcionalidad del motor en tiempo de ejecución de forma que resulte útil e intuitiva para los programadores. Esto significa que algunas características en tiempo de ejecución pueden ser más evidentes en un entorno que en otro. El funcionamiento del motor en tiempo de ejecución depende de las herramientas y los compiladores utilizados. Por ejemplo, un programador de Visual Basic observará que con Common Language Runtime, el lenguaje Visual Basic contiene más características orientadas a objetos que antes. Algunas de las ventajas del motor en tiempo de ejecución son:

  • Mejoras en el rendimiento.

  • Capacidad para utilizar fácilmente componentes desarrollados en otros lenguajes.

  • Tipos extensibles que proporciona una biblioteca de clases

  • Nuevas características del lenguaje como herencia, interfaces y sobrecarga para la programación orientada a objetos; compatibilidad con el uso de subprocesos libres que permite la creación de multiprocesos; aplicaciones escalables; compatibilidad con los atributos personalizados y el control de excepciones estructurado.

Si utiliza Microsoft® Visual C++® .NET, puede escribir código administrado utilizando Visual C++, que proporcionan las ventajas de un entorno de ejecución administrado, así como el acceso a características eficaces y a tipos de datos informativos que ya le resultan familiares. Otras características del motor en tiempo de ejecución son:

  • Integración entre lenguajes diferentes y, en especial, herencia entre lenguajes.

  • Recolección de elementos no utilizados, que administra la duración de los objetos de modo que no es necesario el recuento de referencias.

  • Objetos autodescriptivos que hacen innecesario el Lenguaje de definición de interfaces (IDL).

  • Capacidad para compilar una vez y ejecutar código en cualquier CPU y sistema operativo que sea compatible con el motor en tiempo de ejecución.

También se puede escribir código administrado en lenguaje C#, que proporciona las siguientes ventajas:

  • Diseño completo orientado a objetos

  • Seguridad de tipos muy sólida

  • Buena combinación entre la simplicidad de Visual Basic y la eficacia de C++.

  • Recolección de elementos no utilizados.

  • Sintaxis y palabras clave similares en C y en C++.

  • Utilice delegados para una mayor seguridad y protección de tipos, en vez de punteros a funciones. Los punteros a funciones están disponibles mediante la utilización de la palabra clave unsafe de C# y de la opción /unsafe del compilador de C# (Csc.exe) para datos y código no administrados.

Vea también

Conceptos

Proceso de ejecución administrada

Otros recursos

Información general acerca de .NET Framework