.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.