.NET は、さまざまな種類のアプリケーションを構築するための無料のクロスプラットフォームのオープンソース開発者プラットフォームです。 複数の言語で記述されたプログラムを実行でき、C# が最も一般的です。 これは、多くの大規模なアプリによって運用環境で使用される高パフォーマンスランタイムに依存しています。
.NET をダウンロードして最初のアプリの作成を開始する方法については、「作業の開始」を参照してください。
.NET プラットフォームは、生産性、パフォーマンス、セキュリティ、信頼性を提供するように設計されています。 ガベージ コレクター (GC) を介した自動メモリ管理を提供します。 これは、GC と厳密な言語コンパイラを使用するため、タイプ セーフでメモリ セーフです。 async
/await
およびTask
プリミティブを介してコンカレンシーを提供します。 これには、広範な機能を備え、複数のオペレーティング システムとチップ アーキテクチャのパフォーマンス用に最適化された多数のライブラリが含まれています。
.NET には、次の 設計ポイントがあります。
- 生産性は、開発者の ユーザー エクスペリエンスに貢献するランタイム、ライブラリ、言語、およびツールをすべて備えたフル スタックです。
- 安全なコード は主要なコンピューティング モデルですが、 安全でないコード では追加の手動最適化が可能になります。
- 静的コードと動的コード の両方がサポートされているため、さまざまなシナリオが可能になります。
- ネイティブ コード相互運用機能とハードウェア組み込み関数 は、低コストで高忠実性 (生の API と命令アクセス) です。
- コードはプラットフォーム 間 (OS およびチップ アーキテクチャ) 間で移植可能ですが、プラットフォーム のターゲット設定により、特殊化と最適化が可能になります。
- 汎用プログラミング モデルの 特殊な実装により、プログラミング ドメイン (クラウド、クライアント、ゲーム) 全体の適応性が実現されます。
- OpenTelemetry や gRPC などの業界標準は、特注ソリューションよりも優先されます。
.NET は、Microsoft とグローバル コミュニティによって共同で管理されています。 定期的な更新により、ユーザーはセキュリティで保護された信頼性の高いアプリケーションを運用環境にデプロイできます。
コンポーネント
.NET には、次のコンポーネントが含まれています。
- ランタイム -- アプリケーション コードを実行します。
- ライブラリ - JSON 解析などのユーティリティ機能を提供します。
- コンパイラ -- C# (およびその他の言語) ソース コードを (ランタイム) 実行可能コードにコンパイルします。
- SDK やその他のツール - 最新のワークフローを使用してアプリの構築と監視を可能にします。
- アプリ スタック -- ASP.NET Core や Windows フォームなど、アプリの作成を可能にします。
ランタイム、ライブラリ、および言語は、.NET スタックの柱です。 .NET ツールやアプリ スタックなどの上位レベルのコンポーネント (ASP.NET Core など) は、これらの柱の上に構築されます。 C# は .NET の主要なプログラミング言語であり、.NET の多くは C# で記述されています。
C# はオブジェクト指向であり、ランタイムはオブジェクトの向きをサポートします。 C# にはガベージコレクションが必要とされ、ランタイムはトレース機能付きのガベージコレクターを提供します。 ライブラリ (およびアプリ スタック) は、これらの機能を概念とオブジェクト モデルに形成し、開発者が直感的なワークフローでアルゴリズムを生産的に記述できるようにします。
コア ライブラリでは何千もの型が公開されており、その多くは C# 言語と統合され、燃料となります。 たとえば、C# の foreach
ステートメントを使用すると、任意のコレクションを列挙できます。 パターンベースの最適化により、 List<T>
などのコレクションを簡単かつ効率的に処理できます。 リソース管理はガベージ コレクションに任せることもできますが、IDisposable
、および using
ステートメントでの直接的な言語サポートを使用して、迅速なクリーンアップが可能です。
複数の処理を同時に実行するためのサポートは、実質的にすべてのワークロードの基本です。 これは、UI の応答性を維持しながらバックグラウンド処理を行うクライアント アプリケーション、何千もの同時要求を処理するサービス、多数の同時刺激に応答するデバイス、コンピューティング集中型操作の処理を並列化する高性能マシンなどです。 非同期プログラミングのサポートは、C# プログラミング言語の最上位の機能であり、 async
キーワードと await
キーワードを提供します。このキーワードを使用すると、非同期操作を簡単に記述して作成でき、言語で提供されるすべての制御フローコンストラクトの利点を引き続き享受できます。
タイプシステムは、安全性、説明性、ダイナミズム、ネイティブとの相互運用性のそれぞれに大幅な柔軟性を提供します。 まず第一に、型システムはオブジェクト指向プログラミング モデルを可能にします。 これには、型、(単一の基底クラス) 継承、インターフェイス (既定のメソッド実装を含む)、仮想メソッドディスパッチが含まれており、オブジェクトの向きが許可するすべての型レイヤーに適切な動作を提供します。 ジェネリック型 はユビキタスであり、クラスを 1 つ以上の型に特化できます。
.NET ランタイムは、ガベージ コレクターを介して自動メモリ管理を提供します。 どの言語でも、そのメモリ管理モデルは、最も定義的な特性である可能性があります。 これは、.NET 言語の場合に当てはまります。 .NET には自己チューニング型のトレース GC があります。 これは、より極端なワークロードの構成オプションを提供しながら、一般的なケースで "ハンズオフ" の使用を提供することを目的としています。 現在の GC は、長年にわたる投資と、多数のワークロードからの学習の結果です。
値型とスタック割り当てメモリブロックは、データとネイティブプラットフォームの相互運用を可能にするために、.NETのGCによって管理される型に比べて、より直接的で低レベルの制御を提供します。 .NET のプリミティブ型のほとんどは整数型と同様に値型であり、ユーザーは同様のセマンティクスで独自の型を定義できます。 値型は .NET のジェネリック システムを通じて完全にサポートされており、これは List<T>
のようなジェネリック型が値型コレクションのフラットでオーバーヘッドのないメモリ表現を提供できることを意味しています。
リフレクション は "データとしてのプログラム" パラダイムであり、プログラムの 1 つの部分で、アセンブリ、型、およびメンバーの観点から、別の部分に対して動的にクエリを実行して呼び出すことができます。 これは、遅延バインディング プログラミングのモデルとツールで特に活用できます。
例外は、.NET の主要なエラー処理モデルです。 例外には、エラー情報をメソッド シグネチャで表したり、すべてのメソッドで処理したりする必要がないという利点があります。 アプリケーションの信頼性には、適切な例外処理が不可欠です。 アプリがクラッシュするのを防ぐために、コードで予期される例外を意図的に処理できます。 クラッシュしたアプリは、未定義の動作を持つアプリよりも信頼性が高く、診断可能です。
ASP.NET Core や Windows フォームなどのアプリ スタックは、低レベルのライブラリ、言語、ランタイムを基にして利用します。 アプリ スタックは、アプリの構築方法と実行のライフサイクルを定義します。
SDK やその他のツールを使用すると、開発者のデスクトップと継続的インテグレーション (CI) の両方で、最新の開発者エクスペリエンスを実現できます。 最新の開発者エクスペリエンスには、コードのビルド、分析、テストが含まれます。 .NET プロジェクトは、多くの場合、NuGet パッケージの復元と依存関係の構築を調整する 1 つの dotnet build
コマンドによってビルドできます。
NuGet は、.NET のパッケージ マネージャーです。 これには、多くのシナリオに対応する機能を実装する数十万のパッケージが含まれています。 アプリの大部分は、一部の機能のために NuGet パッケージに依存しています。 NuGet ギャラリーは Microsoft によって管理されています。
無料でオープン ソース
.NET は無料でオープン ソースであり、 .NET Foundation プロジェクトです。 .NET は、Microsoft と GitHub のコミュニティによって 、いくつかのリポジトリで管理されています。
.NET ソースとバイナリには MIT ライセンスが付与されます。 Windows には追加のライセンスが適用されます。
支援
.NET は、.NET が複数のオペレーティング システムで実行でき、最新の状態に保たれるように動作する複数の組織によってサポートされています。 Arm64、x64、x86 のアーキテクチャで使用できます。
.NET の新しいバージョンは、Microsoft の リリースとサポート ポリシーに従って、毎年 11 月にリリースされます。 パッチ火曜日 (第 2 火曜日) に 毎月更新 され、通常は太平洋標準時の午前 10 時に更新されます。
.NET エコシステム
.NET には複数のバリエーションがあり、それぞれが異なる種類のアプリをサポートしています。 複数のバリアントの理由は、一部の履歴、一部の技術です。
.NET の実装:
- .NET Framework -- 元の .NET。 Windows と Windows Server の幅広い機能にアクセスできます。 現在もメンテナンス中で、積極的にサポートされています。
- Mono -- 元のコミュニティとオープン ソースの .NET。 .NET Framework のクロスプラットフォーム実装。 Android、iOS、WebAssembly で積極的にサポートされています。
- .NET (Core) -- モダン .NET。 .NET のクロスプラットフォームおよびオープン ソースの実装。.NET Framework との互換性は大幅に高いまま、クラウド時代に向けて再考されました。 Linux、macOS、Windows で積極的にサポートされています。
次のステップ
.NET