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

.NET アプリは、1 つまたは複数の .NET 実装向けに開発され、実行されます。A .NET app is developed for and runs in one or more implementations of .NET. .NET 実装には、.NET Framework、.NET Core、および Mono が含まれます。Implementations of .NET include the .NET Framework, .NET Core, and Mono. すべての .NET 実装に共通する API 仕様があり、それを.NET Standard と呼びます。There is an API specification common to all implementations of .NET that's called the .NET Standard. この記事では、それぞれの概念について簡単に説明します。This article gives a brief introduction to each of these concepts.

.NET Standard.NET Standard

.NET Standard は、.NET 実装の基本クラス ライブラリで実装されている API のセットです。The .NET Standard is a set of APIs that are implemented by the Base Class Library of a .NET implementation. さらに厳密に言うと、コードのコンパイル対象である統一されたコントラクトのセットを構成する .NET API の仕様です。More formally, it's a specification of .NET APIs that make up a uniform set of contracts that you compile your code against. これらのコントラクトが各 .NET 実装に実装されています。These contracts are implemented in each .NET implementation. これにより異なる .NET 実装間で移植することができるため、実質的にコードをどこでも実行できるようになります。This enables portability across different .NET implementations, effectively allowing your code to run everywhere.

.NET Standard は、ターゲット フレームワークでもあります。The .NET Standard is also a target framework. コードが .NET Standard のバージョンをターゲットにする場合、.NET Standard のそのバージョンをサポートするすべての .NET 実装でそのコードを実行できます。If your code targets a version of the .NET Standard, it can run on any .NET implementation which supports that version of the .NET Standard.

.NET Standard とそのターゲットの設定方法については、「.NET Standard」を参照してください。 To learn more about the .NET Standard and how to target it, see the .NET Standard topic.

.NET 実装.NET implementations

各 .NET 実装には、次のコンポーネントが含まれています。Each implementation of .NET includes the following components:

  • 1 つまたは複数のランタイム。One or more runtimes. 次に例を示します。CLR for .NET Framework、CoreCLR、CoreRT for .NET Core などです。Examples: CLR for .NET Framework, CoreCLR and CoreRT for .NET Core.
  • .NET Standard を実装し、他の API も実装する可能性があるクラス ライブラリ。A class library that implements the .NET Standard and may implement additional APIs. たとえば、.NET Framework 基本クラス ライブラリや .NET Core 基本クラス ライブラリなどです。Examples: .NET Framework Base Class Library, .NET Core Base Class Library.
  • 必要に応じて、1 つまたは複数のアプリケーション フレームワーク。Optionally, one or more application frameworks. 次に例を示します。 .NET Framework には、ASP.NETWindows フォームWindows Presentation Foundation (WPF) などです。Examples: ASP.NET, Windows Forms, and Windows Presentation Foundation (WPF) are included in the .NET Framework.
  • 必要に応じて、開発ツール。Optionally, development tools. 一部の開発ツールは、複数の実装間で共有されます。Some development tools are shared among multiple implementations.

Microsoft が積極的に開発し保守している主要な .NET 実装としては、.NET Core、.NET Framework、Mono、UWP の 4 つがあります。There are four primary .NET implementations that Microsoft actively develops and maintains: .NET Core, .NET Framework, Mono, and UWP.

.NET Core.NET Core

.NET Core は .NET のクラスプラットフォーム実装であり、サーバーとクラウドのワークロードをその規模に応じて処理するように設計されています。.NET Core is a cross-platform implementation of .NET and designed to handle server and cloud workloads at scale. Windows、macOS および Linux で実行されます。It runs on Windows, macOS and Linux. .NET Standard を実装しているので、.NET Standard をターゲットとするすべてのコードを .NET Core 上で実行できます。It implements the .NET Standard, so code that targets the .NET Standard can run on .NET Core. ASP.NET Core は、.NET Core 上で実行されます。ASP.NET Core runs on .NET Core.

.NET Core の詳細については、「.NET Core」および「サーバー アプリ用 .NET Core と .NET Framework の選択」を参照してください。To learn more about .NET Core, see the .NET Core Guide and Choosing between .NET Core and .NET Framework for server apps.

.NET Framework.NET Framework

.Net Framework は、2002 年からリリースされている元の .NET 実装です。The.NET Framework is the original .NET implementation that has existed since 2002. 既存の .NET 開発者が常に使用してきたものと同じ .NET Framework です。It's the same .NET Framework that existing .NET developers have always used. バージョン 4.5 以降では .NET Standard を実装しているので、.NET Standard をターゲットとするすべてのコードが .NET Framework 4.5 以降で実行できます。Versions 4.5 and later implement the .NET Standard, so code that targets the .NET Standard can run on those versions of the .NET Framework. Windows フォームと WPF での Windows デスクトップ開発用 API など、追加の Windows 固有 API が含まれます。It contains additional Windows-specific APIs, such as APIs for Windows desktop development with Windows Forms and WPF. .NET Framework は、Windows デスクトップ アプリケーション開発用に最適化されています。The .NET Framework is optimized for building Windows desktop applications.

.NET Framework について詳しくは、「.NET Framework」をご覧ください。To learn more about the .NET Framework, see the .NET Framework Guide.

MonoMono

Mono は、主に小規模なランタイムが必要な場合に使用される .NET 実装です。Mono is a .NET implementation that is mainly used when a small runtime is required. Android、Mac、iOS、tvOS、および watchOS 上の Xamarin アプリケーションで利用されるランタイムで、フットプリントが小さいことに重点を置いています。It is the runtime that powers Xamarin applications on Android, Mac, iOS, tvOS and watchOS and is focused primarily on a small footprint. Mono は、Unity エンジンを使用して構築されたゲームでも利用されます。Mono also powers games built using the Unity engine.

現在公開されているすべての .NET Standard バージョンをサポートしています。It supports all of the currently published .NET Standard versions.

これまで Mono は .NET Framework の多数の API を実装し、Unix で人気の高い機能の一部をエミュレートしていました。Historically, Mono implemented the larger API of the .NET Framework and emulated some of the most popular capabilities on Unix. また、Unix のそのような機能に依存する .NET アプリケーションを実行するために使用されることもあります。It is sometimes used to run .NET applications that rely on those capabilities on Unix.

一般的に Mono は、Just-In-Time コンパイラと共に使用されますが、iOS のようなプラットフォームに使用される完全な静的コンパイラ (Ahead Of Time コンパイル) としても機能します。Mono is typically used with a just-in-time compiler, but it also features a full static compiler (ahead-of-time compilation) that is used on platforms like iOS.

Mono について詳しくは、Mono のドキュメントをご覧ください。To learn more about Mono, see the Mono documentation.

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

UWP は、モノのインターネット (IoT) 用に最新のタッチ対応の Windows アプリケーションとソフトウェアを構築するために使われる .NET 実装です。UWP is an implementation of .NET that is used for building modern, touch-enabled Windows applications and software for the Internet of Things (IoT). PC、タブレット、ファブレット、携帯電話、Xbox など、ターゲットにする可能性があるさまざまな種類のデバイスを統一するように設計されています。It's designed to unify the different types of devices that you may want to target, including PCs, tablets, phablets, phones, and even the Xbox. UWP は、一元的なアプリ ストア、実行環境 (AppContainer)、Win32 の代わりに使う Windows API のセット (WinRT) など、多くのサービスを提供します。UWP provides many services, such as a centralized app store, an execution environment (AppContainer), and a set of Windows APIs to use instead of Win32 (WinRT). アプリは、C++、C#、VB.NET、および JavaScript で記述することができます。Apps can be written in C++, C#, VB.NET, and JavaScript. C# と VB.NET を使うときは、.NET Core によって .NET API が提供されます。When using C# and VB.NET, the .NET APIs are provided by .NET Core.

UWP の詳細については、「ユニバーサル Windows プラットフォームの紹介」を参照してください。To learn more about UWP, see Intro to the Universal Windows Platform.

.NET ランタイム.NET runtimes

ランタイムは、マネージド プログラムの実行環境です。A runtime is the execution environment for a managed program. OS は、ランタイム環境の一部ですが、.NET ランタイムの一部ではありません。The OS is part of the runtime environment but is not part of the .NET runtime. .NET ランタイムの例を次に示します。Here are some examples of .NET runtimes:

  • .NET Framework 用共通言語ランタイム (CLR)Common Language Runtime (CLR) for the .NET Framework
  • .NET Core 用共通言語ランタイム (CoreCLR)Core Common Language Runtime (CoreCLR) for .NET Core
  • ユニバーサル Windows プラットフォーム用 .NET Native.NET Native for Universal Windows Platform
  • Xamarin.iOS、Xamarin.Android、Xamarin.Mac、Mono デスクトップ フレームワーク用ランタイムThe Mono runtime for Xamarin.iOS, Xamarin.Android, Xamarin.Mac, and the Mono desktop framework

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

すべての .NET 実装と連携する多様なツールやインフラストラクチャ コンポーネントにアクセスできます。You have access to an extensive set of tools and infrastructure components that work with every implementation of .NET. その一部を次に示します。These include, but are not limited to the following:

  • .NET 言語とコンパイラThe .NET languages and their compilers
  • .NET プロジェクト システム (.csproj.vbproj、および .fsproj ファイルに基づく)The .NET project system (based on .csproj, .vbproj, and .fsproj files)
  • MSBuild (プロジェクトのビルドに使用されるビルド エンジン)MSBuild, the build engine used to build projects
  • NuGet (Microsoft の .NET 用パッケージ マネージャー)NuGet, Microsoft's package manager for .NET
  • オープン ソースのビルド オーケストレーション ツール (CAKEFAKE など)Open-source build orchestration tools, such as CAKE and FAKE

関連項目See also