.NET Framework の概要

.NET Framework は、Windows アプリと Web サービスの構築と実行をサポートするテクノロジです。 .NET Framework は、次の目的を実現するためにデザインされています。

  • オブジェクト コードがローカルに保存され実行されるか、Web に配信されローカルに実行されるか、リモートで実行されるかにかかわらず、一貫したオブジェクト指向プログラミング環境を提供する。

  • 次のようなコード実行環境を提供する。

    • ソフトウェアの展開とバージョン管理の競合を最小化する。

    • 作成者が不明なコードや、完全には信頼できないサード パーティ製のコードも含めた、コードの安全な実行を促す。

    • スクリプトやインタープリターが実行される環境でのパフォーマンスの問題を回避する。

  • Windows ベースのアプリケーションや Web ベースのアプリケーションなど、多種のアプリケーションの開発において、ユーザーが一貫した方法で作業できるようにする。

  • .NET Framework に基づいたコードを他の任意のコードと確実に統合できるように、すべての通信を業界標準に準拠して構築する。

Note

.NET Framework 4.8 は、.NET Framework の最新バージョンです。 .NET Framework は、セキュリティと信頼性に関するバグを修正して、毎月サービスが提供されます。 .NET Framework は Windows に引き続き含まれ、削除される予定はありません。 お使いの .NET Framework アプリは移行する必要はありませんが、新規開発においては .NET 5 以降をご利用ください。

.NET Framework は、共通言語ランタイム (CLR) と .NET Framework クラス ライブラリから構成されます。 共通言語ランタイムは、.NET Framework の基礎となるコンポーネントです。 このランタイムは、実行時のコード管理を行うエージェントのようなものであり、メモリ管理、スレッド管理、リモート処理などの重要なサービスを提供したり、セキュリティや保全性を促進するために厳密なタイプ セーフやその他のコード整合性を強制的に適用したりします。 実際、コード管理の概念はこのランタイムの基本原理です。 このランタイムを使用して実行するように作成されたコードはマネージド コードと呼ばれ、そうでないコードはアンマネージド コードと呼ばれます。 クラス ライブラリは、従来のコマンド ラインやグラフィカル ユーザー インターフェイス (GUI) を使用したアプリケーションから、ASP.NET がもたらした最新の機構に基づく Web フォームや XML Web サービスなどのアプリケーションに至るまでのアプリケーション開発に使用できる、再利用可能な型の包括的なオブジェクト指向コレクションです。

.NET Framework は、アンマネージド コンポーネントでホストすることもできます。アンマネージド コンポーネントは、共通言語ランタイムをプロセスに読み込み、マネージド コードの実行を開始することで、マネージド機能とアンマネージド機能の両方を利用できるソフトウェア環境を構築できます。 .NET Framework には、いくつかのランタイム ホストが用意されているだけでなく、サードパーティ製ランタイム ホストの開発もサポートします。

たとえば、ASP.NET は、このランタイムをホストして、マネージド コードのためのスケーラブルなサーバー側環境を提供します。 ASP.NET はこのランタイムを直接利用して、ASP.NET アプリケーションや XML Web サービスを有効にします。Web フォーム アプリケーションと XML Web サービスについては、この記事で後に説明します。

共通言語ランタイムを MIME 型拡張機能としてホストするアンマネージ アプリケーションの例として、Internet Explorer があります。 Internet Explorer を使用してこのランタイムをホストすることにより、マネージド コンポーネントや Windows フォーム コントロールを HTML ドキュメントに埋め込むことができます。 このランタイムをこの方法でホストすると、マネージド モバイル コードを実現できるだけでなく、それと同時に、中程度に信頼されたコードの実行や、分離ファイル ストレージなどのマネージド コードだけが提供できる重要な拡張機能も利用できます。

共通言語ランタイムおよびクラス ライブラリの、アプリケーションおよびシステム全体に対する関係を次の図に示します。 この図には、比較的大規模なアーキテクチャの内部でマネージ コードが動作する方法も示されています。

Screenshot that shows how managed code operates within a larger architecture.

.NET Framework の主要な機能を以降のセクションでより詳細に説明します。

共通言語ランタイムの機能

共通言語ランタイムでは、メモリ、スレッドの実行、コードの実行、コードの整合性検査、コンパイル、およびその他のシステム サービスを管理します。 これらの機能は、共通言語ランタイムで実行されるマネージド コードにあらかじめ用意されています。

セキュリティ関連では、マネージド コンポーネントには、その出所 (インターネット、企業内ネットワーク、ローカル コンピューターなど) を含めた一連の要因に基づいて、さまざまな程度の信頼が与えられます。 そのためマネージド コンポーネントは、同じアクティブなアプリケーションで使用されていても、ファイル アクセス操作、レジストリ アクセス操作、またはその他の一般に公開されない機能を、実行できる場合と実行できない場合があります。

共通言語ランタイムでは、共通型システム (CTS: Common Type System) と呼ばれる厳密な型検査およびコード検査のインフラストラクチャを実装することで、コード保全性を強制的に適用します。 CTS は、すべてのマネージド コードが自己言及的であることを保証します。 各種の Microsoft 製およびサードパーティ製言語コンパイラは、CTS に準拠したマネージド コードを生成します。 そのためマネージド コードは、厳密な型の忠実性やタイプ セーフを適用しながら、他のマネージド型やマネージド インスタンスを利用できます。

さらに、共通言語ランタイムのマネージド環境では、ソフトウェアに共通する多くの問題を除去できます。 たとえば、このランタイムは、オブジェクトのレイアウトを自動的に処理し、それらのオブジェクトへの参照を管理し、不要になったオブジェクトを解放します。 この自動メモリ管理により、メモリ リークおよび無効なメモリ参照という、最も頻繁に生じる 2 つのアプリケーション エラーが解決されます。

共通言語ランタイムを使用することにより、開発者の生産性も向上します。 たとえば、プログラマは任意に選択した開発言語でアプリケーションを記述しながら、このランタイムの機能を十分に利用し、他の開発者が別の言語で記述したクラス ライブラリやコンポーネントを使用できます。 このランタイムをターゲットとして選択したコンパイラの販売元も、これらの利点を享受できます。 .NET Framework をターゲットとする言語コンパイラを使用すると、その言語で記述された既存のコードでも .NET Framework の機能が利用できるようになるため、既存のアプリケーションの移行作業が簡単になります。

このランタイムは、これから開発されるソフトウェアのためにデザインされていますが、現在や過去のソフトウェアもサポートします。 マネージド コードとアンマネージド コードには相互運用性があるため、開発者は必要な COM コンポーネントや DLL を使用し続けることができます。

共通言語ランタイムは、パフォーマンスを向上させるようにデザインされています。 このランタイムには多くの標準ランタイム サービスが用意されていますが、マネージド コードのインタープリター処理が行われることはありません。 ジャスト イン タイム (JIT: Just-In-Time) コンパイルと呼ばれる機能により、すべてのマネージド コードは、それが実行されるシステムのネイティブ機械語で実行できます。 また、メモリ マネージャーは、メモリの断片化を防止し、メモリ参照ができる限りローカルで行われるようにすることで、パフォーマンスを向上させます。

最後に、共通言語ランタイムは、Microsoft SQL Server や Internet Information Services (IIS) などの高性能なサーバー側アプリケーションでホストできます。 このインフラストラクチャにより、マネージド コードを使用してビジネス ロジックを記述し、ランタイム ホストをサポートする企業向けサーバーの優れたパフォーマンスを享受できます。

.NET Framework クラス ライブラリ

.NET Framework クラス ライブラリは、共通言語ランタイムと緊密に統合された再利用可能な型のコレクションです。 このクラス ライブラリはオブジェクト指向で、このライブラリが提供する型を使用することにより、独自に作成したマネージド コード内で機能を継承します。 これは .NET Framework の型を使いやすくするだけでなく、.NET Framework の新機能の学習に必要な時間を減らします。 さらに、.NET Framework のクラスには、サードパーティ製のコンポーネントをシームレスに統合します。

たとえば、.NET Framework のコレクション クラスは、独自のコレクション クラスの開発に使用する一連のインターフェイスを実装しています。 作成したコレクション クラスは、.NET Framework のクラスとシームレスに統合して使用できます。

他のオブジェクト指向クラス ライブラリの場合と同様に、.NET Framework の型を使用することで、文字列の管理、データ コレクション、データベース接続、ファイル アクセスなど、幅広い一般的なプログラミング作業を行うことができます。 これらの共通の作業の他に、クラス ライブラリにはさまざまな特別の開発シナリオをサポートする型も含まれています。 .NET Framework を使用して、次のような種類のアプリやサービスを開発できます。

Windows フォーム クラスは、Windows GUI の開発を非常に簡単にする、再利用可能な型の包括的なセットです。 ASP.NET Web フォーム アプリケーションを作成する場合は、Web フォーム クラスを使用します。

関連項目