シナプス技術者ブログ

シナプスの技術者公式ブログ。インターネットで、鹿児島の毎日を笑顔にします。

.NET系を整理してみた

こんにちは、システム開発課の田㞍です。

.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

参考サイト

learn.microsoft.com

dotnet.microsoft.com

dotnet.microsoft.com

dotnet.microsoft.com

learn.microsoft.com

learn.microsoft.com

zenn.dev