++C++; // 未確認飛行 C

.NET Framework とは

目次

キーワード

.NET Framework

Microsoft .NET Framework とは Microsft が提供する、(2000年6月に発表された)新しい開発プラットフォームです。

.NET Framework では、プログラムはネイティブコードではなく、IL (Intermediate Language)と呼ばれる中間コードにコンパイルされます。 この IL を実行するための環境(の仕様)を CLI (Common Language Infrastructure)といいます。 IL は、この CLI 仕様にそった実装さえされていれば任意のプラットフォームで実行することが出来ます。

Microsoft 自身による Windows 上の CLI 実装である Common Language Runtime (CLR)に加えて、 現在、Microsoft は Corel と提携し、 Mac / FreeBSD 版の CLI を開発しています。 (β版が Microsoft のサイトCorel のサイトからダウンロードできます。) また、 Ximian が Linux 版の CLI であるmonoを、 Southern Storm Software が、DotGNU を開発しています(C#コンパイラとクラスライブラリの一部は完成)。

また、IL は CLI によってファイル、メモリ、ネットワーク接続などのリソースを管理されていて、 メモリの解放し忘れなどによるリソースリークを防ぐことが出来ます。

.NET Framework に対応したすべての言語は IL にコンパイルされます。 現在、.NET Framework に対応している言語は Microsoft が提供している C#、VB.NET、C++/CLI (C++を.NETに適応するように改良したもの)、JScript や、サードパーティの提供する Perl や Python など、20種類以上のものがあります。 .NET Framework では、これらすべての言語で同じライブラリを利用できますし、 異なる言語で書かれたプログラムを呼び出すことが出来ます。 例えば、C++/CLI で書かれたクラスを継承した新しいクラスを VB.NET で作り、そのクラスを C# から呼び出すといったことも可能です。

また、.NET Framework を用いることでプログラマは COM やレジストリなどの知識がなくても分散アプリケーションの作成、配布が容易に行えます。

VB、JScript、C++ などの既存の言語は、.NET Framework に対応出来るように拡張されています。 一方、C# は初めから .NET Framework 上で使うことを想定して設計された言語です。

そのほかにも .NET Framework はさまざまな特徴を備えています。 表1に、.NET Framework の特徴を簡単にまとめます。 詳細については MSDN をご覧ください。

表1: .NET Framework の特徴

言語の統合C++、VB、C#など複数の言語を統合する。例えば、VBで作成したクラスの派生クラスをC++で作成することも可能である。
プログラミングの簡素化COMやレジストリの知識を必要としない。
さまざまなプラットフォームでの実行Common Language Infrastructure (CLI)をサポートする任意のプラットフォームで実行することが出来る。将来的にはWindows以外のプラットフォーム用のCLRも作成される可能性がある。
自動リソース管理ファイル、メモリ、ネットワーク接続などのリソースの利用状況を自動的に追跡し、アプリケーションによるリソースリークを防ぐ。
データ記述用に XML 規格を採用アプリケーション間でやり取りするデータ記述用にXMLを採用し、分散アプリケーションの作成、配布を支援する。

.NET Framework のバージョン

.NET Framework は、 大まかに言うと、

  • ソースコードから中間コード(IL: Intermediate Language)を生成するコンパイラ
  • IL を実行するインフラ(CLI: Common Language Infrastructure)
  • 標準ライブラリ

からなります。

.NET Framework は今までに、 1.0 → 1.1 → 2.0 → 3.0 とバージョンアップしていて、 2007年末にはさらに 3.5 が出ました。

バージョンアップに伴い、 上述の各要素がどう変わったのかを表1にまとめます。

表2: .NET Framework のバージョンと新機能

versionCLIコンパイラライブラリ
1.0CLR 1.0VB 7、C# 1.0 
1.1CLR 1.1(主にバグフィックス)主にバグフィックス、C# 1.2(/** */ 形式ドキュメントコメント)主にバグフィックス
2.0CLR 2.0(Generics に関する仕様追加)VB 8、C# 2.0(Generics、イテレーター、匿名デリゲート等追加)Genericコレクションライブラリ追加
3.0WPF、WCF、WF、WCS 等追加
3.5VB 9、C# 3.0(LINQ 関連機能追加)LINQ ライブラリ、ASP.NET AJAX
3.5 SP1ADO.NET Entity Framework、ADO.NET Data Services、ASP.NET Dynamic Data
4.0CLR 4.0(GC アルゴリズム改善、その他パフォーマンス向上)VB 10、C# 4.0(動的機能追加)動的機能、並列処理等追加

まあ、簡単にまとめると以下の通り。

  • 1.0 → 1.1: バグフィックス
  • 1.1 → 2.0: Generics 関連(CLI も修正)
  • 2.0 → 3.0: ライブラリの追加(WPF, WCF, WF, WCS)
  • 3.0 → 3.5: LINQ 関連コンパイラ機能 & ASP.NET AJAX ライブラリ追加
  • 3.5 → 3.5 SP1: ライブラリ追加(Entity Framework 等)
  • 3.5 SP1 → 4.0: 動的機能追加

.NET Framework と共に歩を進めてきた感のある C# のバージョンも、 ところどころ食い違ってるのに注意。 特に、.NET Framework 3.0(元々はフレームワークのバージョンアップではなくて、WinFX という呼称のライブラリ群の追加ということにする予定だった)では C# のバージョンは 2.0 のままです。

ちなみに、.NET Framework のバージョンは 3.0、3.5 とあがっていますが、 CLR の仕様は 2.0 の頃から変わっていません。 なので、3.0、3.5 で追加されたライブラリさえ使わなければ、 C# 3.0 でコンパイルしたプログラムも .NET Framework 2.0 しか入っていないコンピュータで実行可能です。

.NET Framework 3.5 SP1 と同時に、.NET Framework 2.0 SP1、3.0 SP1 というものも出ましたが、 これもライブラリ部分に関する修正(微妙な機能追加とバグフィックス)です。 C# や CLR の仕様は変わりません(ただし、CLR のパフォーマンス改善あり)。

[お問い合わせ](q)   ぷちカンパ