現在Windowsアプリについて勉強しているのですが、「.NET ○○」と呼ばれるフレームワークがいくつかあり、それぞれ何が違うのかよくわからなかったので、.NET系のフレームワークには何があってそれぞれどういうものなのかについて調べてみました。
.NET Framework
Windows 向けのアプリケーションを動作させるためのランタイム実行環境であり、アプリケーションフレームワークでもある。
様々な機能をライブラリとして提供しており、このライブラリを使用してWindowsの機能を簡単に実装することを可能にする。
Windows Formsアプリケーション、WPFアプリケーション、ASP.NETアプリケーションなどを作成することができる。
.NET Core
オープンソースのソフトウェアフレームワーク。
.NET Framework とは異なり、Linux系 OS(Debian, Fedora、Ubuntu、etc)や macOS、Windowsなどクロスプラットフォームを対象としている。
これまではコンソールアプリやWeb、モバイルを開発対象としていたが、.NET Core 3.0よりWindows Formsや WPFアプリケーションがサポートされた。
Xamarin
macOSアプリ、Windowsアプリ、iOSアプリ、Androidアプリなど、クロスプラットフォームを対象としたアプリケーションを作成することができる。
Xamarinを使用すると共通のコードでiOS、Android、Windownsアプリを一度に作ることが可能。
テクノロジー自体は.NET Frameworkと C#を基盤としているが、Monoというライブラリを使用している。
Xamarin.Forms
オープンソースのUIフレームワーク。
Xamarin.Formsを使用すると、開発者は1つの共有コードベースから Xamarin.Android、Xamarin.iOS、Windowsのアプリケーションを作成できる。
.NET MAUI
2021年11月頃に正式リリース予定。Xamarin.Formsの後継となる。
.NET Standard
仕様であって、実体のないAPIの目録みたいなもの。
この仕様に従って.NET Frameworkや.NET Core、Xamarin、UWPといった様々な.NET実装においてAPIが実装されている。
それぞれの.NET実装は「固有部分のAPI」+「.NET Standard実装部分のAPI」からなる。
この.NET Standardに従って実装されたAPIというのは、どの.NET実装でも使えるAPIなので、このAPIだけを使ってライブラリを作成すれば、そのライブラリをすべての種類のアプリケーションの作成において使うことができる。
Base Class Libraryとも呼ばれる。
まとめ
.NET CoreがWindows Formsや WPFアプリケーションをサポートしたことによって、今後はおそらく.NET Coreが.NET Frameworkに取って代わることが予想されます。
Xamarin.Formsに関しては、後継となる.NET MAUIと呼ばれるフレームワークが2021年11月頃に正式リリースされるらしいので、もしかしたら将来的には変わるかもしれません。
.NET系のフレームワークにはどういう種類があって、それぞれどういうものなのかが概要だけでもわかると、個人的にはドキュメントを読む際にスムーズに理解できる感じがしました。