.NET アーキテクチャ コンポーネント

.NET アプリは、1 つまたは複数の .NET 実装向けに開発され、実行されます。 .NET 実装には、.NET Framework、.NET Core、および Mono が含まれます。 すべての .NET 実装に共通する API 仕様があり、それを.NET Standard と呼びます。 この記事では、それぞれの概念について簡単に説明します。

.NET Standard

.NET Standard は、.NET 実装の基本クラス ライブラリで実装されている API のセットです。 さらに厳密に言うと、コードのコンパイル対象である統一されたコントラクトのセットを構成する .NET API の仕様です。 これらのコントラクトが各 .NET 実装に実装されています。 これにより異なる .NET 実装間で移植することができるため、実質的にコードをどこでも実行できるようになります。

.NET Standard は、ターゲット フレームワークでもあります。 コードが .NET Standard のバージョンをターゲットにする場合、.NET Standard のそのバージョンをサポートするすべての .NET 実装でそのコードを実行できます。

.NET Standard とそのターゲットの設定方法については、「.NET Standard」を参照してください。

.NET 実装

各 .NET 実装には、次のコンポーネントが含まれています。

  • 1 つまたは複数のランタイム。 たとえば、CLR for .NET Framework、CoreCLR、CoreRT for .NET Core などです。
  • .NET Standard を実装し、他の API も実装する可能性があるクラス ライブラリ。 たとえば、.NET Framework 基本クラス ライブラリや .NET Core 基本クラス ライブラリなどです。
  • 必要に応じて、1 つまたは複数のアプリケーション フレームワーク。 たとえば、.NET Framework には、ASP.NETWindows フォームWindows Presentation Foundation (WPF) などです。
  • 必要に応じて、開発ツール。 一部の開発ツールは、複数の実装間で共有されます。

Microsoft が積極的に開発し保守している主要な .NET 実装としては、.NET Core、.NET Framework、Mono、UWP の 4 つがあります。

.NET Core

.NET Core は .NET のクラスプラットフォーム実装であり、サーバーとクラウドのワークロードをその規模に応じて処理するように設計されています。 Windows、macOS および Linux で実行されます。 .NET Standard を実装しているので、.NET Standard をターゲットとするすべてのコードを .NET Core 上で実行できます。 ASP.NET Core は、.NET Core 上で実行されます。

.NET Core の詳細については、「.NET Core」および「サーバー アプリ用 .NET Core と .NET Framework の選択」を参照してください。

.NET Framework

.Net Framework は、2002 年からリリースされている元の .NET 実装です。 既存の .NET 開発者が常に使用してきたものと同じ .NET Framework です。 バージョン 4.5 以降では .NET Standard を実装しているので、.NET Standard をターゲットとするすべてのコードが .NET Framework 4.5 以降で実行できます。 Windows フォームと WPF での Windows デスクトップ開発用 API など、追加の Windows 固有 API が含まれます。 .NET Framework は、Windows デスクトップ アプリケーション開発用に最適化されています。

.NET Framework について詳しくは、「.NET Framework」をご覧ください。

Mono

Mono は、主に小規模なランタイムが必要な場合に使用される .NET 実装です。 Android、Mac、iOS、tvOS、および watchOS 上の Xamarin アプリケーションで利用されるランタイムで、フットプリントが小さいことに重点を置いています。

現在公開されているすべての .NET Standard バージョンをサポートしています。

これまで Mono は .NET Framework の多数の API を実装し、Unix で人気の高い機能の一部をエミュレートしていました。 また、Unix のそのような機能に依存する .NET アプリケーションを実行するために使用されることもあります。

一般的に Mono は、Just-In-Time コンパイラと共に使用されますが、iOS のようなプラットフォームに使用される完全な静的コンパイラ (Ahead Of Time コンパイル) としても機能します。

Mono について詳しくは、Mono のドキュメントをご覧ください。

ユニバーサル Windows プラットフォーム (UWP)

UWP は、モノのインターネット (IoT) 用に最新のタッチ対応の Windows アプリケーションとソフトウェアを構築するために使われる .NET 実装です。 PC、タブレット、ファブレット、携帯電話、Xbox など、ターゲットにする可能性があるさまざまな種類のデバイスを統一するように設計されています。 UWP は、一元的なアプリ ストア、実行環境 (AppContainer)、Win32 の代わりに使う Windows API のセット (WinRT) など、多くのサービスを提供します。 アプリは、C++、C#、VB.NET、および JavaScript で記述することができます。 C# と VB.NET を使うときは、.NET Core によって .NET API が提供されます。

UWP の詳細については、「ユニバーサル Windows プラットフォームの紹介」を参照してください。

.NET ランタイム

ランタイムは、マネージ プログラムの実行環境です。 OS は、ランタイム環境の一部ですが、.NET ランタイムの一部ではありません。 .NET ランタイムの例を次に示します。

  • .NET Framework 用共通言語ランタイム (CLR)
  • .NET Core 用共通言語ランタイム (CoreCLR)
  • ユニバーサル Windows プラットフォーム用 .NET Native
  • Xamarin.iOS、Xamarin.Android、Xamarin.Mac、Mono デスクトップ フレームワーク用ランタイム

.NET のツールと共通インフラストラクチャ

すべての .NET 実装と連携する多様なツールやインフラストラクチャ コンポーネントにアクセスできます。 その一部を次に示します。

  • .NET 言語とコンパイラ
  • .NET プロジェクト システム (.csproj.vbproj、および.fsproj ファイルに基づく)
  • MSBuild (プロジェクトのビルドに使用されるビルド エンジン)
  • NuGet (Microsoft の .NET 用パッケージ マネージャー)
  • オープン ソースのビルド オーケストレーション ツール (CAKEFAKE など)

関連項目

サーバー アプリ用 .NET Core と .NET Framework の選択
.NET Standard
.NET Core のガイド
.NET Framework ガイド
C# のガイド
F# のガイド
VB.NET ガイド