.NET CLR es un entorno de ejecución que gestiona y ejecuta el código escrito en cualquier lenguaje de programación .NET. CLR es el componente de máquina virtual del marco .NET. El compilador de ese lenguaje compila el código fuente de las aplicaciones desarrolladas utilizando lenguajes compatibles con .NET en el lenguaje intermedio de CLR llamado MSIL, es decir, el código del lenguaje intermedio de Microsoft. Este código es independiente de la plataforma. Es comparable al código de bytes en Java. Los metadatos también se generan durante la compilación y el código MSIL y se almacenan en un archivo conocido como archivo de manifiesto. Estos metadatos generalmente tratan sobre los miembros y tipos requeridos por CLR para ejecutar código MSIL. Un componente compilador justo a tiempo de CLR convierte el código MSIL en código nativo de la máquina. Este código depende de la plataforma. CLR gestiona la memoria, subprocesos, excepciones, ejecución de código, seguridad del código, verificación y compilación.
algoritmo para rsa
La siguiente figura muestra la conversión del código fuente en código nativo.
La figura de arriba convierte el código en código nativo, que la CPU puede ejecutar.
Los principales componentes de CLR son:
- Sistema de tipo común
- Especiación del lenguaje común
- Recolector de basura
- Compilador justo a tiempo
- Metadatos y ensamblajes
1. Sistema de tipos común:
CTS proporciona pautas para declarar, usar y administrar tipos de datos en tiempo de ejecución. Ofrece comunicación en varios idiomas. Por ejemplo, VB.NET tiene un tipo de datos entero y C# tiene un tipo de datos int para administrar números enteros. Después de la compilación, ambos tipos de datos utilizan Int32. Entonces, CTS proporciona los tipos de datos mediante código administrado. Un sistema de tipos común ayuda a escribir código independiente del lenguaje.
Proporciona dos categorías de tipos.
2. Especificación del lenguaje común (CLS):
La Especificación de lenguaje común (CLS) contiene un conjunto de reglas que deben seguir todos los lenguajes compatibles con NET. Las reglas comunes facilitan la implementación de la integración de idiomas y ayudan en la herencia y depuración entre idiomas. Cada lenguaje admitido por NET Framework tiene sus propias reglas de sintaxis. Pero CLS garantiza la interoperabilidad entre aplicaciones desarrolladas utilizando lenguajes NET.
3. Recolección de basura:
Garbage Collector es un componente de CLR que funciona como un administrador de memoria automático. Ayuda a administrar la memoria al asignarla automáticamente según los requisitos. Asigna memoria de montón a objetos. Cuando los objetos no están en uso, recupera la memoria que se les ha asignado para uso futuro. También garantiza la seguridad de los objetos al no permitir que un objeto utilice el contenido de otro objeto.
4. Compilador Justo a Tiempo (JIT):
El compilador JIT es un componente importante de CLR. Convierte el código MSIL en código nativo (es decir, código específico de la máquina). El programa .NET se compila explícita o implícitamente. El desarrollador o programador llama a un compilador particular para compilar el programa en la compilación explícita. En la compilación implícita, el programa se compila dos veces. El código fuente se compila en el lenguaje intermedio de Microsoft (MSIL) durante el primer proceso de compilación. El código MSIL se convierte en código nativo en el segundo proceso de compilación. Este proceso se llama compilación JIT. Hay tres tipos de compiladores JIT: Pre, Econo y Normal. Pre JIT Compiler compila el código MSIL completo en código nativo antes de la ejecución. Econo JIT Compiler compila solo aquellas partes del código MSIL necesarias durante la ejecución y elimina aquellas partes que ya no son necesarias. El compilador JIT normal también compila solo aquellas partes del código MSIL necesarias durante la ejecución, pero las coloca en caché para uso futuro. No requiere recompilaciones de partes ya utilizadas ya que se han colocado en la memoria caché.
5. Metadatos:
Un metadato es una información binaria sobre el programa, ya sea almacenada en un archivo ejecutable portátil (PE) CLR junto con el código MSIL o en la memoria. Durante la ejecución de MSIL, los metadatos también se cargan en la memoria para una interpretación adecuada de las clases y sus relacionados. Información utilizada en el código. Por lo tanto, los metadatos ayudan a implementar el código de manera neutral en cuanto al lenguaje o lograr la interoperabilidad del lenguaje.
6. Asambleas:
Un ensamblaje es una unidad fundamental de agrupación de códigos físicos. Consiste en el manifiesto ensamblador, metadatos, código MSIL y un conjunto de recursos como archivos de imagen. También se considera una unidad básica de implementación, control de versiones, reutilización, permisos de seguridad, etc.
Funciones .NET CLR
Las siguientes son las funciones del CLR.
- Convierte el programa en código nativo.
- Maneja excepciones
- Proporciona seguridad de tipo
- Gestión de la memoria
- Proporciona seguridad
- Desempeño mejorado
- Idioma independiente
- Plataforma independiente
- Recolección de basura
- Proporciona características de lenguaje como herencia, interfaces y sobrecarga para programas orientados a objetos.
El código que se ejecuta con CLR se denomina código administrado, mientras que el código fuera de CLR se denomina código no administrado. El CLR también proporciona una capa de interoperabilidad, que permite que interoperen tanto los códigos administrados como los no administrados.
1. Código administrado:
Cualquier lenguaje escrito en .NET framework es código administrado. El código administrado utiliza CLR, que cuida sus aplicaciones administrando la memoria, manejando la seguridad, permitiendo la depuración entre idiomas, etc. El proceso del código administrado se muestra en la figura:
2. Código no administrado:
El código desarrollado fuera del marco .NET se conoce como código no administrado. Se dice que las aplicaciones que no se ejecutan bajo el control de CLR no están administradas. Ciertos lenguajes como C++ se pueden utilizar para escribir dichas aplicaciones, como funciones de acceso de bajo nivel del sistema operativo. La compatibilidad en segundo plano con VB, ASP y COM son ejemplos de código no administrado. Este código se ejecuta con la ayuda de clases contenedoras. El proceso de código no administrado se muestra a continuación:
Versiones de .NET CLR
El CLR se actualiza periódicamente para proporcionar un mejor rendimiento.
Versión .NET | versión CLR |
---|---|
1.0 | 1.0 |
1.1 | 1.1 |
2.0 | 2.0 |
3.0 | 2.0 |
3.5 | 2.0 |
4 | 4 |
4.5 | 4 |
4.6 | 4 |
4.6 | 4 |
Estructura .NET CLR
A continuación se muestra la estructura de componentes de Common Language Runtime.
Soporte de biblioteca de clases base
Es una biblioteca de clases que admite clases para la aplicación .NET.
Soporte de hilo
Gestiona la ejecución paralela de la aplicación multiproceso.
Mariscal COM
Proporciona comunicación entre los objetos COM y la aplicación.
Motor de seguridad
Hace cumplir restricciones de seguridad.
Motor de depuración
Le permite depurar diferentes tipos de aplicaciones.
Tipo Comprobador
Comprueba los tipos utilizados en la aplicación y verifica que coincidan con los estándares proporcionados por el CLR.
Administrador de código
Gestiona el código en tiempo de ejecución.
Recolector de basura
Libera la memoria no utilizada y la asigna a una nueva aplicación.
Controlador de excepciones
Maneja la excepción en tiempo de ejecución para evitar fallas en la aplicación.
Cargador de clases
Se utiliza para cargar todas las clases en tiempo de ejecución.