Dotnet-core-code-execution

提供:Dev Guides
移動先:案内検索

.NET Core-コード実行

この章では、.NET Coreの実行プロセスを理解し、それを.NET Frameworkと比較します。 管理された実行プロセスには、次の手順が含まれます。

  • コンパイラーの選択
  • コードをMSILにコンパイルする
  • MSILをネイティブコードにコンパイルする
  • 実行中のコード

コード実行

コンパイラの選択

  • これは多言語実行環境であり、ランタイムはさまざまなデータ型と言語機能をサポートしています。
  • 共通言語ランタイムによって提供される利点を得るには、ランタイムを対象とする1つ以上の言語コンパイラを使用する必要があります。

コードをMSILにコンパイルする

  • コンパイルすると、ソースコードがMicrosoft Intermediate Language(MSIL)に変換され、必要なメタデータが生成されます。
  • メタデータは、各タイプの定義、各タイプのメンバーの署名、コードが参照するメンバー、ランタイムが実行時に使用するその他のデータなど、コード内のタイプを記述します。
  • ランタイムは、実行中に必要に応じて、ファイルおよびフレームワーククラスライブラリ(FCL)からメタデータを見つけて抽出します。

MSILをネイティブコードにコンパイルする

  • 実行時に、ジャストインタイム(JIT)コンパイラーがMSILをネイティブコードに変換します。
  • このコンパイル中に、コードは、MSILとメタデータを調べる検証プロセスに合格して、コードがタイプセーフであると判断できるかどうかを調べる必要があります。

実行中のコード

  • 共通言語ランタイムは、実行を可能にするインフラストラクチャと、実行中に使用できるサービスを提供します。
  • 実行中に、マネージコードは、ガベージコレクション、セキュリティ、アンマネージコードとの相互運用性、言語間のデバッグサポート、強化された展開およびバージョン管理サポートなどのサービスを受け取ります。

.NET Coreコード実行プロセス

次に、.NET Frameworkと比較して、.NET Coreを使用してコードを実行する方法を関連付けます。 .NET Coreには、.NET Frameworkの一部であるこれらのコンポーネントの多くの置き換えがあります。

.NET Core Code Execution

  • .NET Coreには、C#およびVB用のRoslynのような新しいシリーズのコンパイラがあります。
  • .NET CoreでF#を使用する場合は、新しいF#4.1コンパイラを使用することもできます。
  • 実際、これらのツールは異なり、C#コンパイラはC#5までしかサポートできないため、C#6以降を使用している場合は、.NET FrameworkでもRoslynを使用できます。
  • .NET Coreには、フレームワーククラスライブラリ(FCL)がないため、異なるライブラリセットが使用され、現在はCoreFxがあります。
  • CoreFxは、.NET Coreのクラスライブラリの再実装です。
  • また、CoreCLRと呼ばれる.NET Coreを使用した新しいランタイムがあり、JITコンパイラーを活用しています。
  • ここで問題は、.NETフレームワークにすでにあるこれらすべてのコンポーネントを再実装する理由です。
  • その答えは、Microsoftが.NET Coreを実装した理由と同じです。