.NET Core: esecuzione del codice

In questo capitolo comprenderemo il processo di esecuzione di .NET Core e lo confronteremo con .NET Framework. Il processo di esecuzione gestito include i seguenti passaggi.

  • Scegliere un compilatore
  • Compilare il codice in MSIL
  • Compilazione di MSIL in codice nativo
  • Codice in esecuzione

Scegliere un compilatore

  • È un ambiente di esecuzione multilingue, il runtime supporta un'ampia varietà di tipi di dati e funzionalità del linguaggio.

  • Per ottenere i vantaggi forniti da Common Language Runtime, è necessario utilizzare uno o più compilatori di linguaggio destinati al runtime.

Compilare il codice in MSIL

  • La compilazione traduce il codice sorgente in Microsoft Intermediate Language (MSIL) e genera i metadati richiesti.

  • I metadati descrivono i tipi nel codice, inclusa la definizione di ogni tipo, le firme dei membri di ogni tipo, i membri a cui fa riferimento il codice e altri dati che il runtime utilizza al momento dell'esecuzione.

  • Il runtime individua ed estrae i metadati dal file e dalle librerie di classi di framework (FCL) in base alle esigenze durante l'esecuzione.

Compilazione di MSIL in codice nativo

  • Al momento dell'esecuzione, un compilatore just-in-time (JIT) traduce MSIL in codice nativo.

  • Durante questa compilazione, il codice deve superare un processo di verifica che esamina MSIL e metadati per scoprire se è possibile determinare se il codice è indipendente dai tipi.

Codice in esecuzione

  • Il Common Language Runtime fornisce l'infrastruttura che consente l'esecuzione e servizi che possono essere utilizzati durante l'esecuzione.

  • Durante l'esecuzione, il codice gestito riceve servizi quali garbage collection, sicurezza, interoperabilità con codice non gestito, supporto per il debug multilingue e supporto avanzato per la distribuzione e il controllo delle versioni.

Processo di esecuzione del codice .NET Core

Ora mettiamo in relazione il modo in cui il codice viene eseguito con .NET Core rispetto a .NET Framework. In .NET Core ci sono molte sostituzioni di questi componenti che fanno parte di .NET Framework.

  • In .NET Core ora abbiamo una nuova serie di compilatori, come Roslyn per C # e VB.

  • È anche possibile usare il nuovo compilatore F # 4.1 se si vuole usare F # con .NET Core.

  • In realtà questi strumenti sono diversi e possiamo usare Roslyn anche con .NET Framework se stiamo usando C # 6 o versioni successive, perché il compilatore C # può supportare solo fino a C # 5.

  • In .NET Core, non abbiamo una libreria di classi framework (FCL), quindi viene utilizzato un set diverso di librerie e ora abbiamo CoreFx.

  • CoreFx è la reimplementazione delle librerie di classi per .NET Core.

  • Abbiamo anche un nuovo tempo di esecuzione con .NET Core noto come CoreCLR e sfrutta un compilatore JIT.

  • Ora la domanda è perché abbiamo la reimplementazione di tutti questi componenti che abbiamo già nel framework .NET.

  • Quindi la risposta è la stessa del motivo per cui Microsoft ha implementato .NET Core.