.NET Core - execução de código
Neste capítulo, vamos entender o processo de execução do .NET Core e compará-lo com o .NET Framework. O processo de execução gerenciado inclui as seguintes etapas.
- Escolha de um compilador
- Compilando seu código para MSIL
- Compilando MSIL para código nativo
- Código em execução
Escolhendo um compilador
É um ambiente de execução multilíngue, o tempo de execução oferece suporte a uma ampla variedade de tipos de dados e recursos de linguagem.
Para obter os benefícios fornecidos pelo common language runtime, você deve usar um ou mais compiladores de linguagem direcionados ao runtime.
Compilando seu código para MSIL
A compilação traduz seu código-fonte em Microsoft Intermediate Language (MSIL) e gera os metadados necessários.
Os metadados descrevem os tipos em seu código, incluindo a definição de cada tipo, as assinaturas dos membros de cada tipo, os membros que seu código faz referência e outros dados que o tempo de execução usa no tempo de execução.
O tempo de execução localiza e extrai os metadados do arquivo, bem como das bibliotecas de classe de estrutura (FCL) conforme necessário durante a execução.
Compilando MSIL para código nativo
No tempo de execução, um compilador just-in-time (JIT) converte o MSIL em código nativo.
Durante esta compilação, o código deve passar por um processo de verificação que examina o MSIL e os metadados para descobrir se o código pode ser determinado como seguro de tipo.
Código de Execução
O common language runtime fornece a infraestrutura que permite que a execução ocorra e os serviços que podem ser usados durante a execução.
Durante a execução, o código gerenciado recebe serviços como coleta de lixo, segurança, interoperabilidade com código não gerenciado, suporte para depuração entre linguagens e implantação aprimorada e suporte para controle de versão.
Processo de execução de código .NET Core
Agora, vamos relacionar como o código é executado com o .NET Core em comparação com o .NET Framework. No .NET Core, há muitas substituições desses componentes que fazem parte do .NET Framework.
No .NET Core agora temos uma nova série de compiladores, como Roslyn para C # e VB.
Você também pode usar o novo compilador F # 4.1 se quiser usar o F # com o .NET Core.
Na verdade, essas ferramentas são diferentes e podemos usar Roslyn com .NET Framework também se estivermos usando C # 6 ou posterior, porque o compilador C # só pode suportar até C # 5.
No .NET Core, não temos bibliotecas de classes de framework (FCL), então um conjunto diferente de bibliotecas é usado e agora temos CoreFx.
CoreFx é a reimplementação das bibliotecas de classes para .NET Core.
Também temos um novo tempo de execução com .NET Core conhecido como CoreCLR e aproveita um compilador JIT.
Agora a questão é por que temos a reimplementação de todos esses componentes que já temos no .NET framework.
Portanto, a resposta é a mesma porque a Microsoft implementou o .NET Core.