ASP.NET と .NET Framework の関係と将来性
ASP.NET と .NET Framework 業務アプリではどれを選ぶべき?
2020 年。.NET Framework が登場してから 20 年近くが経過しました。
そして、テクノロジーの進歩と時代の要求に合わせて、.NET Framework は大きな変化の時を迎えました。
私は .NET Framework 1.1 が登場した頃から .NET に関わっていますが、
今、ASP.NET と .NET Framework を選定する際にどうすれば良いかをまとめました。
.NET Framework と .NET Core、そして.NET
まず、プラットフォーム(アプリケーション開発・実行環境)の話から。
大きなポイントはこの通り。
- .NET Framework は 4.8 で最終バージョン
今後は、セキュリティパッチ等の提供のみ行われます。 - .NET Core は、2020 年秋に登場する「.NET 5」に統合
新機能は .NET 5 に追加されていく。
もう少し詳しく説明すると、以下の通りです。
.NET Framework
Windows サーバーに対応した、(従来までの).NET Framework。
サポート期間は、それぞれの OS のサポートライフサイクルに従うため、OS のサポートが続いている限りセキュリティパッチがリリースされます。
.NET Core
マルチプラットフォーム(Linux でも動く)に対応した .NET Framework。
.NET Core は、3.1 が最終バージョンです。
3.1 は LTS(Long Term Support)で、リリースから 3 年間(2022 年 12 月まで)サポートされます。
.NET 5
.NET Core をベースに、Xamarin、Unity、IoT、AI 全ての分野、あらゆるデバイスをサポートする意欲的なプラットフォームです。
今後 マイクロソフトの .NET 投資全てはこちらに注がれます。
.NET 5 以降は、.NET 6, .NET 7...とリリースされていく予定です。
ASP.NET は複雑な状況
さて、.NET の Webアプリケーションフレームワーク である ASP.NET はどうでしょう。詳しく知らないと、どれを選べば良いのかよくわかりません(笑)。
- ASP.NET Web Forms
- ASP.NET MVC
- ASP.NET Core MVC
- ASP.NET Razor ページ
- Blazor
それぞれのフレームワークの説明は、こちらにまとめています。
採用するプラットフォームに分類すると、シンプルになります。
- NET Framework
- ASP.NET Web Forms
- ASP.NET MVC
- .NET Core (.NET 5 以降)
- ASP.NET Core MVC
- ASP.NET Razor ページ
- Blazor
※ ちなみに、.NET Core の場合、フロント側は、React や Angular という選択肢もあります。
ケース別 推奨するフレームワーク
フレームワークは、顧客が求めるものによって決まるのかな、と思います。
保守的な顧客
- 安定性重視
- 閉域網で提供される、社内向けシステム
- 外部に公開しているサービス(BtoB)
- 極力モジュールのアップデート等は行いたくない
- 機能改修は行うけど、作ったら 5 年 10 年の単位でそのまま使う
こんな感じの顧客の場合、以下の選択しかありません。
.NET Framework 4.8
ASP.NET MVC
自動テストを入れておくと、保守フェーズに入り、ちょっとした機能改修の際にも品質を担保しやすくなります。
やや保守的な顧客
- 安定性重視
- 外部に公開しているサービス(BtoB または BtoC)
- モジュールのアップデートは行っても良い
.NET Framework 4.8
ASP.NET MVC
または
.NET Core
ASP.NET Core MVC
基本的には安定性重視だけど、モジュールのアップデートや機能追加は定期的に行いたい場合です。
今後、トレンドを追いかけたいなら .NET Core がオススメです。
進歩的な顧客
外部に公開しているサービス(BtoC)で、とにかく「今風」のイケてるアプリが欲しい。アジャイル開発も全く抵抗がない。.NET Core
React, Angular(Blazor も検討)
顧客が何を求めているのかを考えよう
最後に、あえて言うことでもありませんが……
.NET Framework が登場した時には、ASP.NET Web Forms しか選択肢がありませんでしたが、今ではたくさんの選択肢があります。
ただし、ここに挙げた話は、あくまで「作る側」の話であり、顧客からすると「どうでもいい」話です。
顧客が望んでいる予算と納期で、最高のものを提供するにはどうすればよいか、という視点を持って選定を行いたいものです。