.NET Core - Exécution de code

Dans ce chapitre, nous allons comprendre le processus d'exécution de .NET Core et le comparer avec le .NET Framework. Le processus d'exécution géré comprend les étapes suivantes.

  • Choisir un compilateur
  • Compiler votre code vers MSIL
  • Compilation de MSIL en code natif
  • Code d'exécution

Choisir un compilateur

  • Il s'agit d'un environnement d'exécution multilingue, le runtime prend en charge une grande variété de types de données et de fonctionnalités de langage.

  • Pour bénéficier des avantages fournis par le Common Language Runtime, vous devez utiliser un ou plusieurs compilateurs de langage qui ciblent le Runtime.

Compiler votre code vers MSIL

  • La compilation traduit votre code source en Microsoft Intermediate Language (MSIL) et génère les métadonnées requises.

  • Les métadonnées décrivent les types de votre code, y compris la définition de chaque type, les signatures des membres de chaque type, les membres auxquels votre code fait référence et d'autres données que le runtime utilise au moment de l'exécution.

  • Le runtime localise et extrait les métadonnées du fichier ainsi que des bibliothèques de classes de framework (FCL) selon les besoins pendant l'exécution.

Compilation de MSIL en code natif

  • Au moment de l'exécution, un compilateur juste à temps (JIT) traduit le MSIL en code natif.

  • Au cours de cette compilation, le code doit passer un processus de vérification qui examine le MSIL et les métadonnées pour savoir si le code peut être déterminé comme étant de type sécurisé.

Code courant

  • Le Common Language Runtime fournit l'infrastructure qui permet à l'exécution d'avoir lieu et les services qui peuvent être utilisés pendant l'exécution.

  • Pendant l'exécution, le code managé reçoit des services tels que le garbage collection, la sécurité, l'interopérabilité avec le code non managé, la prise en charge du débogage multilingue et la prise en charge améliorée du déploiement et du contrôle de version.

Processus d'exécution de code .NET Core

Voyons maintenant comment le code s'exécute avec .NET Core par rapport à .NET Framework. Dans .NET Core, il existe de nombreux remplacements de ces composants qui font partie du .NET Framework.

  • Dans .NET Core, nous avons maintenant une nouvelle série de compilateurs, comme nous avons Roslyn pour C # et VB.

  • Vous pouvez également utiliser le nouveau compilateur F # 4.1 si vous souhaitez utiliser F # avec .NET Core.

  • En fait, ces outils sont différents et nous pouvons également utiliser Roslyn avec .NET Framework si nous utilisons C # 6 ou une version ultérieure, car le compilateur C # ne peut prendre en charge que C # 5.

  • Dans .NET Core, nous n'avons pas de bibliothèques de classes de framework (FCL), donc un ensemble différent de bibliothèques est utilisé et nous avons maintenant CoreFx.

  • CoreFx est la réimplémentation des bibliothèques de classes pour .NET Core.

  • Nous avons également un nouveau temps d'exécution avec .NET Core connu sous le nom de CoreCLR et exploite un compilateur JIT.

  • Maintenant, la question est de savoir pourquoi avons-nous la réimplémentation de tous ces composants que nous avons déjà dans le framework .NET.

  • La réponse est donc la même que la raison pour laquelle Microsoft a implémenté .NET Core.