ASP.NET 業務アプリ開発時のフレームワーク選定
現在の ASP.NET の状況
2020 年。
.NET 5 の登場を控え、フレームワークとしての ASP.NET を列挙してみると、これだけ種類があります。
- ASP.NET Web Forms
- ASP.NET MVC
- ASP.NET Core MVC
- ASP.NET Razor ページ
- Blazor
もう少し詳しく説明しましょう。
1. ASP.NET Web Forms
Web の概念を意識させず、Windows Forms のアプリケーションを作成するように、高い生産性で Web 開発が行えたのは衝撃的でした。
一方で、マイクロソフト独自の独特な「お作法」が多く、そこは色々と批判も多い部分ですが、手軽に Web アプリケーションを作れるメリットは、今でもあります。
ViewState によるパフォーマンス問題はありますが(これはけっこう大きいですけど……)、今でも解説書の新刊が発売されている状況から、まだ現役で使っている現場もあるのかもしれません。
2. ASP.NET MVC
MVC パターンによる Web アプリケーションの開発を行えます。
Web Forms とは概念が全く異なっているため、登場時、Web Forms 開発者はかなり戸惑いました(学習を諦めた技術者も少なくありません)。
テストのしやすさ、メンテナンスのしやすさ、そして、パフォーマンスの大幅な改善。
エンタープライズ向けアプリケーション開発の現場では、.NET 開発におけるメインの選択肢となるでしょう。
3. ASP.NET Core MVC
もともと、ASP.NET MVC 6 として開発されていたものです。名前が変わって、Core MVC となりました。
.NET Core で ASP.NET MVC を選択すると、このフレームワークになります。
API、非同期、タグヘルパーといった機能が強化・追加され、従来までの ASP.NET MVC で「イケてない」部分が細かく改良されています。
今後は、こちらが主流になっていくものと考えられます。
4. ASP.NET Razor ページ
MVC ではなく、Web Forms に近い概念をもっています。.aspx と .aspx.cs に別れていた Web Forms の考え方に近いです。
「ページ」に対してのコーディングに集中でき、Web Forms と MVC の「あいのこ」みたいな感じです。
まだそれほど実績がないため、今後どうなるのかに注目です。
5. Blazor
フロント部分も JavaScript ではなく、C# で記述できます。
流行の SPA(Single Page Application)を作る際には、React や Angular も検討されますが、今後、ASP.NET で SPA を作る場合は、最有力となるかもしれません。
そして、Blazor は、Web Forms の後継としての役割も担っています。Web Forms のマイグレーションを行う場合、今後は Blazor を使うよう推奨されています。
プラットフォームにより選択できるフレームワークが異なる
なお、説明したフレームワークは、Visual Studio で新規プロジェクトを作る際に、選択できるものが異なってきます。
.NET Framework 4.8 を選択した場合
- ASP.NET Web Forms
- ASP.NET MVC
.NET Core(.NET 5 以降)を選択した場合
- ASP.NET Core MVC
- ASP.NET Razor ページ
- Blazor
- React, Angular
どれを選択するかで工数も変わってきます。
そして、募集をかけた際に面談に来る技術者も変わってきます。
顧客の要件と照らし合わせた、総合的な判断が求められます。