Common Language Runtime (CLR) en C#

CLR es el componente básico y de máquina virtual de .NET Framework . Es el entorno de tiempo de ejecución en .NET Framework el que ejecuta los códigos y ayuda a facilitar el proceso de desarrollo al proporcionar los diversos servicios. Básicamente, se encarga de gestionar la ejecución de programas .NET independientemente de cualquier lenguaje de programación .NET . Internamente, CLR implementa el VES (Sistema de ejecución virtual) que se define en la implementación de Microsoft de la CLI (Infraestructura de lenguaje común).  
El código que se ejecuta bajo Common Language Runtime se denomina Código administrado. En otras palabras, puede decir que CLR proporciona un entorno de ejecución administrado para .NETprogramas al mejorar la seguridad, incluida la integración entre idiomas y un amplio conjunto de bibliotecas de clases, etc. CLR está presente en todas las versiones de .NET Framework. La siguiente tabla ilustra la versión de CLR en .NET Framework. 

Versiones CLR Versiones de .NET Framework
1.0 1.0
1.1 1.1
2.0 2.0
2.0 3.0
2.0 3.5
4 4
4 4.5 (también 4.5.1 y 4.5.2)
4 4.6 (también 4.6.1 y 4.6.2)
4 4.7 (también 4.7.1 y 4.7.2)

El siguiente diagrama ilustra cómo CLR está asociado con el sistema operativo/hardware junto con las bibliotecas de clases. Aquí, el tiempo de ejecución es en realidad CLR. 

Rol de CLR en la ejecución de un programa C#

  • Suponga que ha escrito un programa C# y lo guarda en un archivo que se conoce como código fuente.
  • El compilador específico del idioma compila el código fuente en MSIL (Lenguaje intermedio de Microsoft), que también se conoce como CIL (Lenguaje intermedio común) o IL (Lenguaje intermedio) junto con sus metadatos. Los metadatos incluyen todos los tipos, la implementación real de cada función del programa. MSIL es un código independiente de la máquina.
  • Ahora CLR llega a existir. CLR proporciona los servicios y el entorno de tiempo de ejecución al código MSIL. Internamente, CLR incluye el compilador JIT (Just-In-Time) que convierte el código MSIL en código de máquina que luego ejecuta la CPU. CLR también usa las bibliotecas de clases de .NET Framework. Los metadatos proporcionan información sobre el lenguaje de programación, el entorno, la versión y las bibliotecas de clases al CLR mediante el cual CLR maneja el código MSIL. Como CLR es común, permite que una instancia de una clase que está escrita en un idioma diferente llame a un método de la clase que está escrito en otro idioma.

Componentes principales de CLR

Como la palabra especifica, Común significa que CLR proporciona un tiempo de ejecución común o un entorno de ejecución, ya que hay más de 60 lenguajes de programación .NET. 

Componentes principales de CLR: 

Common Language Specification (CLS): 
Es responsable de convertir las diferentes reglas y regulaciones sintácticas del lenguaje de programación .NET en un formato comprensible CLR. Básicamente, proporciona interoperabilidad de idiomas. Interoperabilidad de lenguajes significa proporcionar soporte de ejecución a otros lenguajes de programación también en .NET framework. 

La interoperabilidad de idiomas se puede lograr de dos maneras: 

  1. Código administrado: el código MSIL administrado por CLR se conoce como código administrado. Para el código administrado, CLR proporciona tres funciones de .NET: 
  2. Código no administrado: antes del desarrollo de .NET, los lenguajes de programación como los componentes .COM y la API de Win32 no generan el código MSIL. Por lo tanto, estos no son administrados por CLR sino por el sistema operativo.

Sistema de tipos comunes (CTS): 
cada lenguaje de programación tiene su propio sistema de tipos de datos, por lo que CTS es responsable de comprender todos los sistemas de tipos de datos de los lenguajes de programación .NET y convertirlos al formato comprensible CLR, que será un formato común. 

Hay 2 tipos de CTS que cada lenguaje de programación .NET tiene: 

  1. Tipos de valor: los tipos de valor almacenarán el valor directamente en la ubicación de la memoria. Estos tipos funcionan solo con mecanismos de pila. CLR permite la memoria para estos en tiempo de compilación.
  2. Tipos de referencia: los tipos de referencia contendrán una dirección de memoria de valor porque los tipos de referencia no almacenarán el valor de la variable directamente en la memoria. Estos tipos funcionan con el mecanismo Heap. CLR asigna memoria para estos en tiempo de ejecución.

Recolector de basura: 
se utiliza para proporcionar la función de gestión automática de memoria . Si no hubiera un recolector de basura, los programadores tendrían que escribir los códigos de administración de memoria, lo que sería una especie de sobrecarga para los programadores. 

JIT (Compilador Just In Time): 
Se encarga de convertir el CIL (Common Intermediate Language) en código máquina o código nativo utilizando el entorno Common Language Runtime. 

Beneficios de CLR: 

  • Mejora el rendimiento al proporcionar una rica interacción entre programas en tiempo de ejecución.
  • Mejore la portabilidad eliminando la necesidad de volver a compilar un programa en cualquier sistema operativo que lo admita.
  • La seguridad también aumenta a medida que analiza las instrucciones MSIL, ya sea que sean seguras o no. Además, el uso de delegados en lugar de punteros de función mejora la seguridad y protección del tipo.
  • Admite la gestión automática de la memoria con la ayuda de Garbage Collector.
  • Proporciona integración entre idiomas porque CTS dentro de CLR proporciona un estándar común que activa los diferentes idiomas para ampliar y compartir las bibliotecas de los demás.
  • Brinda soporte para usar los componentes que se desarrollaron en otros lenguajes de programación .NET.
  • Proporcionar independencia de lenguaje, plataforma y arquitectura.
  • Permite la creación sencilla de aplicaciones escalables y multiproceso, ya que el desarrollador no tiene que pensar en la gestión de la memoria ni en los problemas de seguridad.
     

Publicación traducida automáticamente

Artículo escrito por Anshul_Aggarwal y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *