.NETって何?
C#での開発を始めようとすると、まず、ん?となるのが「.NET」
開発を始めるために必要な機能をまとめて提供するプラットフォームなので避けては通れない
しかし、何を使用したらよいのか、そもそも「.NET」の定義がよくわからない
という人(私)向けの記事
ややこしくなっている原因
「.NET」という言葉が、なにを示しているかあいまいになっている
公式ドキュメントでさえも「.NET」に2つの意味があると明言している
.NET には 2 つの意味があり、目的の意味はコンテキストによって異なります。
- .NET は、 .NET Standard およびすべての .NET 実装 ワークロードの総称として使用できます。
- .NET は、.NET Core と呼ばばれ、以前は .NET のクロスプラットフォームで高パフォーマンスのオープンソース実装を指す頻度が高くなります。 また、 .NET 5 (および .NET Core) 以降のバージョン または .NET 5 以降のとも呼ばれます。
Microsoft公式ドキュメントより
.NETとは?
Q.つまるところ、.NETは何を示している?
A..NETとは、以下の3つを備えた開発プラットフォーム
-
CLR(共通言語ランタイム)
人間の書いたコードを特定のOSに依存しない共通言語(中間言語)に変換する機能
-
BCL(基本クラスライブラリ)
アプリケーション開発で頻繁に使用される機能をまとめたライブラリ
-
FW(フレームワーク)
Webアプリケーションや、Windowsアプリケーションを作成するためのフレームワーク
3つの.NET○○
「.NET」とつく開発プラットフォームは、現行のもので3つある
- .NET Framework
- .NET Core
- .NET
.NETの進化
ざっくりと
-
.NET Framework
Windowsの環境で動く!
でも、時代の流れ的にクロスプラットフォーム対応しないとまずくない?
-
.NET Core
クロスプラットフォーム化できた!
でも、WebアプリやCUIツールがメインでクロスプラットフォーム化しちゃった…
GUIもクロスプラットフォーム化しないとな…
-
.NET
XamarinというGUIもマルチプラットフォーム化できるようになるツールを買収
統合しちゃえ!
ついでに、.NET Frameworkの内容も統合しちゃえ!
という順番で進化している
.NET○○の違い
進化の過程をみて分かる通り、それぞれには大きな違いがある
-
対応OS
.NET Framework:Windowsのみの対応
.NET Core:クロスプラットフォーム(CUIメイン)
.NET:クロスプラットフォーム(CUI+GUI)
-
コンテナをサポートするか否か
.NET Framework:基本的にNG。無理やりコンテナ化できるが非効率的
.NET Core:コンテナ化OK
.NET:コンテナ化推奨
結局何を使用すればよい?
結論から言うと、.NET 6以上を使用すれば間違いない
この記事を執筆している2024/07/29現在、.NET 9がリリースされている
.NET xはxが偶数だとLTS(LongTermService:長期サポート)なので、.NET 6もしくは.NET 8を使用すればよい
その中で、ネット上に情報が多く存在する.NET 6を使用すれば問題なく開発が進められると思われる
最後に
.NET 6のコンテナを利用したWebAPIの立て方を↓の記事で紹介しているので、そちらもぜひ読んでほしいです!
https://qiita.com/unwissenheit/items/e06fe00f5557cbc8e886
勉強中の身ですので、解釈の誤りなどがあるかもしれません。
その際は、コメントで指摘していただけると幸いです<(_ _)>