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には、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を実装した理由と同じです。