.NET Core: ejecución de código
En este capítulo, comprenderemos el proceso de ejecución de .NET Core y lo compararemos con .NET Framework. El proceso de ejecución gestionada incluye los siguientes pasos.
- Elegir un compilador
- Compilando su código en MSIL
- Compilar MSIL en código nativo
- Ejecutando código
Elegir un compilador
Es un entorno de ejecución en varios idiomas, el tiempo de ejecución admite una amplia variedad de tipos de datos y características de idioma.
Para obtener los beneficios proporcionados por Common Language Runtime, debe utilizar uno o más compiladores de lenguaje destinados al Runtime.
Compilando su código en MSIL
La compilación traduce su código fuente a Microsoft Intermediate Language (MSIL) y genera los metadatos necesarios.
Los metadatos describen los tipos en su código, incluida la definición de cada tipo, las firmas de los miembros de cada tipo, los miembros a los que hace referencia su código y otros datos que utiliza el tiempo de ejecución en el momento de la ejecución.
El tiempo de ejecución localiza y extrae los metadatos del archivo, así como de las bibliotecas de clases de marco (FCL) según sea necesario durante la ejecución.
Compilar MSIL en código nativo
En el momento de la ejecución, un compilador Just-In-Time (JIT) traduce el MSIL en código nativo.
Durante esta compilación, el código debe pasar un proceso de verificación que examina el MSIL y los metadatos para averiguar si se puede determinar que el código es seguro para los tipos.
Código de ejecución
Common Language Runtime proporciona la infraestructura que permite que se lleve a cabo la ejecución y los servicios que se pueden utilizar durante la ejecución.
Durante la ejecución, el código administrado recibe servicios como recolección de basura, seguridad, interoperabilidad con código no administrado, soporte de depuración en varios idiomas y soporte mejorado de implementación y control de versiones.
Proceso de ejecución de código de .NET Core
Ahora relacionemos cómo se ejecuta el código con .NET Core en comparación con .NET Framework. En .NET Core hay muchos reemplazos de estos componentes que forman parte de .NET Framework.
En .NET Core ahora tenemos una nueva serie de compiladores, como tenemos Roslyn para C # y VB.
También puede hacer uso del nuevo compilador F # 4.1 si desea usar F # con .NET Core.
En realidad, estas herramientas son diferentes y podemos usar Roslyn con .NET Framework también si usamos C # 6 o posterior, porque el compilador de C # solo puede admitir hasta C # 5.
En .NET Core, no tenemos bibliotecas de clases de marco (FCL), por lo que se usa un conjunto diferente de bibliotecas y ahora tenemos CoreFx.
CoreFx es la reimplementación de las bibliotecas de clases para .NET Core.
También tenemos un nuevo tiempo de ejecución con .NET Core conocido como CoreCLR y aprovecha un compilador JIT.
Ahora la pregunta es por qué tenemos la reimplementación de todos estos componentes que ya tenemos en .NET framework.
Entonces, la respuesta es la misma que por qué Microsoft implementó .NET Core.