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