日々、勉強。

自宅の開発でトラブルになったことの解決策をメモっていきます。

.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で実行と言う流れになるわけです。