導入

Common Language Infrastructure (CLI)は、Microsoft が .NET プラットフォーム用に開発したオープン仕様で、 CILベースの仮想マシン実行環境を記述します。この仕様では、特定のアーキテクチャ向けにコードを書き直す必要なく、さまざまなプラットフォームで多くの高級言語を使用できる環境を定義しています。
CLI 仕様に準拠したコードは英語で「マネージド コード」と呼ばれ、直訳すると「管理されたコード」ですが、誤って「管理されたコード」と訳されることがあります。
CLI実装には、エラー処理、ガベージ コレクション、セキュリティ、およびオペレーティング システムとの相互運用性 ( Microsoft ウィンドウの場合は COM オブジェクト、Mono de Novell の場合はgtk ) の機能が含まれています。

仕様
CLI 仕様では、特に 3 つの側面に対応しています。
- 共通型システム (CTS)
- CTS 互換プログラミング言語間で交換される型と操作のセット。
- メタデータ
- 他のツールや言語で使用できるプログラムの構造に関する情報
- 共通言語仕様(CLS)
- CLS 互換言語の相互運用性を可能にするために CLI が従わなければならない一連のルール。 CLS は CTS のサブセットです。
- 仮想実行システム(VES)
- VES は、実行時にメタデータファイルを使用して CLI 互換プログラムをロードおよび実行し、さまざまなコードを生成します。
規格とライセンス
2000 年 8 月、 Microsoft 、 Hewlett-Packard 、Intel は CLI と C# プログラミング言語の標準化に取り組みました。 2001 年 12 月以降、これら 2 つの規格は ECMA によって承認されています (ECMA 335 および ECMA 334)。 ISO は 2003 年 4 月に続きました (ISO/IEC 23271 および ISO/IEC 23270)。
ECMA と ISO は、CLI および C# 仕様を所有する Microsoft およびそのすべてのパートナーに対し、それらを合理的で非差別的なMicrosoft Reference Licenseに基づいて利用できるようにするよう要求しました。これに加えて、これらの企業はこれらの仕様をロイヤリティフリーで提供することに同意しました。
ただし、これは、Windows フォーム、 ADO .NET、ASP.NET など、ECMA および ISO でカバーされていない .NET Frameworkの部分には適用されません。 Microsoft がこれらの分野で保持している仕様により、Microsoft 以外が完全なフレームワークを実装しようとする試みが阻止される可能性があります。
2007 年 10 月 3 日、Microsoft は、.NET Framework 基本クラス (ASP.NET、ADO.NET、および Windows Presentation Foundation を含む) のソース コードの多くが、2007 年後半のVisual Studio 2008 のリリースで利用可能になると発表しました。共有ソース ライセンスに基づいて他のライブラリ (Windows Communication Foundation (WCF)、Windows Workflow Foundation (WF)、および統合言語クエリ (LINQ)) のソース コードは後で追加されます。Microsoft Reference License に基づいてソース コードを提供することは、これはデバッグ目的のみに提供されており、主に Visual Studio での基本クラスのデバッグをサポートするために提供されています。
実装
CLI とライブラリ (Microsoft) の実装はいくつか存在しますが、特に Mono と Portable.NET には存在します。実行エンジンは ECMA および ISO 仕様で記述されているため、他の実装は著作権の問題によって妨げられることはありません。オープン スタンダードに記述されておらず、著作権の問題が発生する可能性がある基本クラス ライブラリ (BCL) の代替を開発することはより困難です。さらに、BCL の一部には Windows 固有の機能と動作があり、Windows 以外のマシンに実装すると問題が発生する可能性があります。

NETフレームワーク
Microsoft のオペレーティング システム用の CLI の実装は、共通言語ランタイム (または CLR) およびダイナミック言語ランタイム (または DLR) と呼ばれます。この実装の上では; Microsoft は、.NET Framework および .NET Compact Framework、テクニカル サポート、Visual Studio など、多くのサービス、ツール、ライブラリ、ランタイムを提供しています。 Microsoft の CLI 実装は現在、C# (C++ と Java の混合)、C++、J# (Java に近いが互換性はない)、 Visual Basic .NET などのいくつかの言語をサポートしています。
技術仕様が利用できるため、さまざまなプレーヤーが、ASP.NET だけでなく、別の言語や従来の言語 (特にCobol 、 Pascal 、 Fortran 、 Eiffel 、 Ada ) のサポートを自由に追加できます。さらに、Python 言語は IronPythonプロジェクトのおかげで間もなく使用できるようになりますが、 PHP はPhalangerプロジェクトのおかげですでに使用可能になっています。
シルバーライト/ムーンライト
Silverlightと Moonlight は、ブラウザの安全な環境で実行される Microsoft とNovell のそれぞれの CLI 実装です。アプレットのように動作します。 Silverlight は .NET Framework の一部であり、Moonlight は Mono プロジェクトの一部です。したがって、どちらも CLI の特性を尊重します。 Silverlight は、CLR 上で実行されるWindows Presentation Foundationと呼ばれる Microsoft の新しいグラフィックス ライブラリを指すために WPF/E と名付けられました。これらのテクノロジーにより、Webクライアント側で実際の RIA を開発できるようになります。これらのアプレットでサポートされる言語は、.NET または Mono フレームワークでサポートされる言語と同じです。
単核症
Mono は CLI と Base Class Libraries (BCL) の一部の実装であり、いくつかの追加機能を提供します。 Mono は、フリー ソフトウェアとプロプライエタリ ソフトウェアの二重ライセンスに基づいて開発されたソフトウェアです。 Mono は Novell によって開発され、Web (ASP.NET、ADO.NET) および OS (Windows Forms) のサポートが含まれています。 C#コンパイラと VB.NETベータ版も含まれています。
その他
フレームワークの一部の代替実装は次のとおりです。
- 共有ソース共通言語インフラストラクチャ[1] は、.NET Framework CLR の共有ソース実装です。 Microsoft Windows XP 、 FreeBSD 、 Mac OS X 10.2と互換性があります。
- Portable.NET (DotGNU の一部) は、CLI 実装、基本クラス ライブラリの一部、および C# コンパイラを提供します。さまざまなプロセッサとオペレーティング システムをサポートしています。
- CrossNet は、CLI とコア ライブラリ (BCL) の一部の実装です。これは、.NET アセンブリからアンマネージ C++ コードを生成する無料の環境です。このコードは、コンパイルして、C++ に準拠した任意のプラットフォーム上の任意のアプリケーションにリンクできます。
- .NET for Symbian、.NET Compact Framework for Symbian (S60) の実装
