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