こんにちは、システム開発課の田㞍です。
.NETを使用していると、しばしば「.NET」という似たような用語を見かけたり、聞いたりします。
.NETには多くのフレームワークが存在し、これらの名前は聞いたことがあるものの、具体的に何ができるのか、どのようなフレームワークなのかがあいまいでした。
今後、.NETに関する記事を読んだり、話を聞いた際に、より理解しやすくするために、自分自身で整理し、理解を深めたいと思いました。
.NET関連技術について
.NET関連技術について簡単に紹介します。
- 開発元
- Microsoft
- 用途
- Windowsアプリケーション、Webアプリケーション、モバイルアプリケーションなど、さまざまな種類のアプリケーションを開発する
- 使用言語
- 複数のプログラミング言語(C#, Visual Basic, F#など)サポートしていて、一般的にはC#を使用
- 開発ツール
- Visual Studio:統合開発環境(IDE)
- .NET関連技術の総称
- 「.NET」
- 「.NET Family」
- 「.NETエコシステム」
- 「.NETプラットフォーム」
※ 総称は、上記のように様々あるようです。以降は、「.NET Family」と記述しています。
整理スタート
プラットフォーム
上位にプラットフォーム層が存在します。
以下の表のように、大きく3つのプラットフォームがあります。これらのプラットフォームは、使用するオペレーティングシステム(OS)に応じて選択されるものであり、それぞれのプラットフォームにはさまざまなフレームワークが含まれています。(以降で詳細を説明)
プラットフォーム | 詳細 |
---|---|
.NET Framework | Windows上で動作するアプリケーションを開発するためのプラットフォーム |
.NET(旧 .NET Core) | Windows、macOS、Linuxなどの異なるOS上で動作するアプリケーションを開発するためのクロスプラットフォーム ※ .NET 5.0(2020年)のリリースより.NET Coreから.NETに名前変更 |
Xamarin | WidowsやmacOSに加え、iOSやAndroidなどのモバイルOS上でも動作するアプリケーションを開発するためのクロスプラットフォーム |
※ Microsoftは.NETの一本化を決定し、.NET 5以降において、以前.NET FrameworkおよびXamarinで提供されていたほとんどの機能が.NETプラットフォームでも提供されています。したがって、今後の開発においては、.NETの使用が推奨されています。
以下の画像は、上記の整理内容を図に示したものです。
.NET Framework
次に、Windows上でアプリケーション開発が可能な.NET Framework層について整理します。
以下の表の通り、Windows FormsおよびWPF(Windows Presentation Foundation)はUIフレームワークであり、一方、ASP.NETはWebアプリケーションのフレームワーク全般を指し、その下にさまざまなWebフレームワークが存在します。(以降で詳細を説明)
フレームワーク | 詳細 |
---|---|
Windows Forms | ・Windowsデスクトップアプリケーションを作成するUIフレームワーク ・ウィンドウ、ボタン、テキストボックスなどをGUIで操作し、自動生成されたプログラムでレイアウトを構成する |
WPF(Windows Presentation Foundation) | ・Windowsデスクトップアプリケーションを作成するUIフレームワーク ・XAML(XMLベースのマークアップ言語)を通してテキストベースでレイアウトを構成する |
ASP.NET | Webアプリケーションの開発に使う様々なフレームワークの総称 |
以下の画像は、上記の整理内容を図に示したものです。
ASP.NET
次に、Webアプリケーションの開発に使用されるさまざまなフレームワークを総称であるASP.NETについて整理します。 ASP.NETには、以下の表に示された複数のフレームワークが存在しますが、要件やニーズに応じて選択することができます。
フレームワーク | 詳細 |
---|---|
Web Forms | ・イベント駆動型のWebアプリケーション開発モデル ・ウィンドウスタイルの開発で、UIコントロールとサーバーサイドのコードビハインドを組み合わせてWebページを構築する |
MVC | ・モデル、ビュー、コントローラの分離を基にしたアーキテクチャを採用 ・アプリケーションのロジックをコントローラに配置し、ビューはUIを表示し、モデルはデータを表現 |
Web Pages | ・迅速に簡易的なWebページを作成できる ・初心者に教育用途として人気 |
Web API | ・HTTPプロトコルを使用してデータを公開するためのフレームワーク ・JSONやXMLなどのデータ形式をサポートし、さまざまなクライアント(Webブラウザ、モバイルアプリ、デスクトップアプリなど)からアクセスできる |
SignalR | ・リアルタイムWebアプリケーションを開発するためのライブラリ ・リアルタイム通信プロトコルを使用し、サーバーとクライアント間で双方向通信を実現 ・チャットアプリ、リアルタイムゲーム、ライブデータダッシュボードなどに適している |
以下の画像は、上記の整理内容を図に示したものです。
Xamarin
次に、モバイルおよびデスクトップアプリケーションを開発するためのプラットフォームのXamarin層について整理します。
Xamarinは、2011年に各OS向けのアプリケーション開発プラットフォームとしてリリースされ、その後、2014年にXamarin.Formsが導入され、クロスプラットフォーム対応となりました。
フレームワーク | 詳細 |
---|---|
Xamarin.iOS | ・iOS向けのモバイルアプリケーションを開発できる ・2011年リリース |
Xamarin.Android | ・Android向けのモバイルアプリケーションを開発できる ・2011年リリース |
Xamarin.Mac | ・macOS向けのデスクトップアプリケーションを開発できる ・2011年リリース |
Xamarin.Forms | ・iOS、Android、Windowsなどのクロスプラットフォームのモバイルおよびデスクトップアプリケーションを開発できる ・2014年リリース |
以下の画像は、上記の整理内容を図に示したものです。
.NET(旧 .NET Core)
次に、Windows、macOS、Linuxなど、異なるOS上でアプリ開発が可能な.NET層について整理します。
.NETは、以下の表のように、.NET Frameworkから後継した Windows Forms、WPF(Windows Presentation Foundation)および Xamarinから後継した .NET MAUI(.NET Multi-platform App UI)がUIフレームワークを提供しており、一方で、ASP.NET CoreはWebアプリケーション全般のフレームワークを指し、その下にさまざまなWebフレームワークが存在します。
※ 繰り返しになりますが、バージョン.NET5.0で「.NET Core」から「.NET」へと名前が変更されています。
フレームワーク | 詳細 |
---|---|
Windows Forms WPF(Windows Presentation Foundation) |
.NET5.0で.NETFramawourkから後継 ※特徴については.NET Frameworkを参照 |
.NET MAUI(.NET Multi-platform App UI) | ・.NET6.0でXamarinから後継 ・Xamarin.Formsの進化版 ・Android, iOS, macOS, Windowsのクロスプラットフォームのモバイルおよびデスクトップアプリケーション開発フレームワーク |
ASP.NET Core | Webアプリケーションの開発に使う様々なフレームワークの総称 |
以下の画像は、上記の整理内容を図に示したものです。
ASP.NET Core
最後に、Webアプリケーションの開発に使用されるさまざまなフレームワークの総称である、クロスプラットフォーム対応のASP.NET Coreについて整理します。
下の表に示された複数のフレームワークが存在しますが、要件やニーズに応じて選択することができます。
フレームワーク | 詳細 | |
---|---|---|
MVC Web Pages Web API SignalR |
特徴はASP.NETを参照 | |
RazorPages | ビューに焦点を当てたWebフレームワークであり、ビューと関連するロジックを同じページにまとめ、フォルダ構造がそのままサイト構造にないっている | |
Blazor | Server | ・アプリケーションは、サーバーサイドで実行される ・C#のコードは、サーバー上で実行され、クライアントのブラウザにはHTMLと必要なJavaScriptが送信される |
WebAssembly | ・クライアントブラウザ内でC#コードを実行 ・サーバーサイドの処理やリクエストが不要 |
以下の画像は、上記の整理内容を追加した完成図です。
まとめ
- .NET Familyは、大きく3つのプラットフォームがあり、OSや要件、ニーズによってフレームワークを採用する
- .NETへの一本化の決定で、.NET Framework、Xamarinは.NETで後継となり、OSを問わず、今後は.NETでの開発が推奨
- 今回の整理内容を以下に階層図でも示します。
.NET Family(.Net関連技術) |── .NET Framework(プラットフォーム) | |── Windows Forms | |── WPF | └── ASP.NET | |── Web Form | |── MVC | |── Web Pages | |── Web API | └── SignalR | |── .NET(旧.NET Core、プラットフォーム) | |── Windows Forms | |── WPF | |── .NET MAUI | └── ASP.NET Core | |── MVC | |── Web Pages | |── Web API | |── Web SignalR | |── Razor Pages | └── Blazor | |── Server | └── Web Assembly | └── Xamarin(プラットフォーム) |── Xamarin.iOS |── Xamarin.Android |── Xamarin.Mac └── Xamarin.Forms