.NET Frameworkとは?
.NET Frameowrkとは、何なのか?
これを一言で説明するのは、難しいですが、あえて一言で言うのであればMicrosoftがサポートする様々な言語を実行するためのアプリケーション実行環境です。
.NET Frameworkは、大きく以下の2つからなります。
1, CLR (Common Language Runtime)
メモリ管理、アセンブリのロード(後述)、例外処理、スレッドの同期など
2, FCL (Framework Class Library)
基本クラスライブラリ。
多くの人は、FCLで実装を行い、 CLR上で実行すると言う流れになります。
Windows上で実行する場合には、Visual Studioをインストールして開発すると、それほど意識することなく実行することになります。
と言ったところで、何を言っているのか分からないでしょうから、詳細に見ていきます。
CLRとは、日本語訳だと共通言語実行環境です。
例えば、ここにC++が得意なエンジニアとC#が得意なエンジニアがいたとします。
この二人が協力してプログラムを書こうとした時に、どちらかの言語に合わせて開発をしようとすると、一方のエンジニアの生産性が落ちることになります。
これを解決するのがCLRです。
CLRは、C++やC#などの様々な言語で開発したとしても、それらを全て共通の中間言語であるIL(Intermediate Language)とメタデータにコンパイルします。
メタデータは、クラスの型やInterfaceが記述してあるデータ群です。
そしてアプリケーション実行時に、このILとメタデータをネイティブ言語にコンパイルしながら、実行することで、どの言語でも実行できる環境を提供します。
この時に利用するコンパイラをJITコンパイラ (Just in compiler)と呼びます。
FCLとは、.NET Framework上で動かすプログラムの基本クラスライブラリ群です。
CLRで実行するにあたって、共通に利用するようなクラスが多数用意されています。
例えば、HTTPのクライアントのためのHttpClientクラスなどは、多くのユーザーが利用するようなクラスです。
このような基本的なクラスを提供するのがFCLになります。
よって、多くの人は、FCLで実装 → CLRで実行と言う流れになるわけです。