ASP.NET MVC から ASP.NET Core MVC へ移行のメリットまとめ

こんにちは！


本記事では、ASP.NET MVC (.NET Framework) から<a href="https://docs.microsoft.com/ja-jp/aspnet/core/mvc/overview?view=aspnetcore-5.0" target="_blank">ASP.NET Core MVC (.NET) </a> に移行すべきなのか？　移行した場合のメリットやポイントをまとめましたので紹介します！


## メリット

### 最大のメリットはマルチプラットフォーム対応による様々な恩恵

何といっても、最大のメリットはマルチプラットフォーム対応です。

Windows / Windows Server だけではなく、Linux や Mac でも動作し、開発環境もマルチプラットフォームで開発を進めることが出来ます。

以降の解説ポイントについても、マルチプラットフォームだからこそのメリットについて解説していますのでご参考ください。

### 今後も機能改善が行われる

ASP.NET は新機能の開発はストップされましたが、ASP.NET Core は今後も継続して機能改善を行います。

ASP.NET Core は、例えば「依存性の注入」「ホスト先としてIISだけではなく、Apache、Nginxなどの選択」「クラウドを展開を視野にいれた設定ファイル１つで構築できる構成」など、様々な機能改善が行われています。

> ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/48623/5bb99691-3aee-ca6b-97ad-77be818ebc9a.png)



ソフトウェア開発手法は、日々進化しています。

.NET Core ベースの ASP.NET Core であれば、今後も追加されていく新規機能や、パフォーマンスの改善などの恩恵を最大限に享受することが出来るでしょう。


### サーバ運用コストを安く抑えることができる

マルチプラットフォームのメリットとして、運用コストを抑えることが出来るメリットがあります。

ASP.NET を動作させる場合は、Windows Server を採用する必要がありますが、ASP.NET Core は、Linux 上で運用することができるため、例えば、AWS で運用した場合の Windows Server ライセンス料金の節約にもなります。

[https://aws.amazon.com/jp/windows/resources/licensing/](https://aws.amazon.com/jp/windows/resources/licensing)


### パフォーマンスが優れている

ASP.NET Core  は、非常に素晴らしいパフォーマンスを発揮します。

バックエンドテクノロジーとして非常にポピュラーな Java Servlet や Node.js と比較しても、高パフォーマンスを発揮しています。

>　![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/48623/951e3062-56dc-7cd8-925e-7aed569ffcd4.png)


<span style="font-size: 80%">※下記サイトより引用</span>

[https://dotnet.microsoft.com/platform/why-choose-dotnet](https://dotnet.microsoft.com/platform/why-choose-dotnet)


### DevOps の導入がしやすい

Linux でも動作するため、DevOps を導入しやすさは ASP.NET と比べると導入ハードルが著しく低いです。

AWS や Azure も、最近は .NET Core をサポートする機能も充実していますので、クラウドでの運用もすぐに始めることができるでしょう。

[https://docs.aws.amazon.com/ja_jp/sdk-for-net/v3/developer-guide/net-dg-config-netcore.html](https://docs.aws.amazon.com/ja_jp/sdk-for-net/v3/developer-guide/net-dg-config-netcore.html)


[https://aws.amazon.com/jp/about-aws/whats-new/2020/03/aws-lambda-now-supports-net-core-3-1/](https://aws.amazon.com/jp/about-aws/whats-new/2020/03/aws-lambda-now-supports-net-core-3-1/)




### Visual Studio Code でも開発が出来る

ASP.NET は Visual Studio 一択でした。

Visual Studio は、非常に多機能、高性能な機能が豊富ですが、反面、動作が遅くなることもありました。

ASP.NET Core は、引き続き Visual Studio も利用できますが、 Visual Studio Code でも開発を行うことができます。

Visual Studio Code では非常に軽量で高速に動作しますし、何より無料で利用できるのも魅力ですね。

[https://azure.microsoft.com/ja-jp/products/visual-studio-code/](https://azure.microsoft.com/ja-jp/products/visual-studio-code/)


## デメリット

### 一部のレガシーテクノロジがサポートされてない

.NET Framework から .NET Core に移行する際に、一部のレガシーテクノロジが利用できません。

詳細は下記をMicrosoft の公式ページをご参照ください、あわせて代替手段についての解説も記載されています。

[https://docs.microsoft.com/ja-jp/dotnet/core/porting/net-framework-tech-unavailable](https://docs.microsoft.com/ja-jp/dotnet/core/porting/net-framework-tech-unavailable)




## その他のポイント

### 実際にかかる移行コスト

プロジェクトによっては、 .NET Core で利用できない API や ライブラリをつかっているかによって大きく影響します。

主な変更点については、Microsoft の公式ドキュメントに記載されているため、事前に調査して影響度を把握するのが良いでしょう。



[https://docs.microsoft.com/ja-jp/dotnet/core/compatibility/fx-core](https://docs.microsoft.com/ja-jp/dotnet/core/compatibility/fx-core)

[https://docs.microsoft.com/ja-jp/dotnet/core/porting/net-framework-tech-unavailable](https://docs.microsoft.com/ja-jp/dotnet/core/porting/net-framework-tech-unavailable)

[https://docs.microsoft.com/ja-jp/dotnet/core/compatibility/unsupported-apis](https://docs.microsoft.com/ja-jp/dotnet/core/compatibility/unsupported-apis)




ソースコードの基本的なビジネスロジックはそのまま利用できるでしょうが、いずれにしてもテストは必須となります。

例えば、システムテストを予定している案件と抱き合わせで ASP.NET Core への移行も同タイミングで検討頂くと、よりコストを抑えることができるかもしません。

### ベストな移行タイミングは？ 

将来的に ASP.NET Core への移行タイミングを考える時に、おすすめのバージョンは .NET 6 や .NET 8 です。

なぜなら、それらのバージョンが  LTS (Long Term Support) であるためです。

新しい .NET は、隔年で LTS (Long Term Support) 対象のバージョンをリリースするのですが、直近だとそれが .NET 6 (2021年リリース)、 .NET 8 (2023年リリース) となります。

> ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/48623/a8126bc2-efb8-a991-a48b-6d431ec95846.png)


<span style="font-size: 80%">※下記サイトより引用</span>

[https://github.com/dotnet/core/blob/master/roadmap.md](https://github.com/dotnet/core/blob/master/roadmap.md)




### ASP.NET MVC (.NET Framework) ライフサイクルポリシーについて

.NET Framework 4.5.2 以降は、 .NET Framework 単体のサポートではなく、OS (Windows / Windows Server) のライフサイクルに依存しますので、OSのサポートが続く限りはサポートされ続けます。
詳細は下記のページよりご確認できます。

[https://docs.microsoft.com/ja-jp/lifecycle/faq/dotnet-framework#:~:text=%E5%BF%85%E8%A6%81%E3%81%8C%E3%81%82%E3%82%8A%E3%81%BE%E3%81%99%E3%80%82-,.,%E3%82%B5%E3%83%9D%E3%83%BC%E3%83%88%E3%81%8C%E6%8F%90%E4%BE%9B%E3%81%95%E3%82%8C%E3%81%BE%E3%81%99%E3%80%82](https://docs.microsoft.com/ja-jp/lifecycle/faq/dotnet-framework#:~:text=%E5%BF%85%E8%A6%81%E3%81%8C%E3%81%82%E3%82%8A%E3%81%BE%E3%81%99%E3%80%82-,.,%E3%82%B5%E3%83%9D%E3%83%BC%E3%83%88%E3%81%8C%E6%8F%90%E4%BE%9B%E3%81%95%E3%82%8C%E3%81%BE%E3%81%99%E3%80%82)


例えば、執筆時点(2021年2月10日)の Windows Server 2019 であれば、”終了日: 2029/01/09”までご利用頂けます。

[https://docs.microsoft.com/ja-jp/lifecycle/products/?terms=Windows%20Server%202019](https://docs.microsoft.com/ja-jp/lifecycle/products/?terms=Windows%20Server%202019)




## まとめ

長期的な投資と考えた場合、ASP.NET Core MVC へ移行は、「インフラコストの節約」「継続的なプラットフォームの機能改善」「DevOps 導入による開発サイクルの改善および品質向上」など、総合的に考えて非常にメリットがある選択肢です。

短期的には、移行コストとしてインフラの見直し、テスト実施などのコストは発生するものの検討して頂く価値はあるかと思います。

## 開発全般に関するご相談はお任せください！

インフラジスティックス・ジャパンでは、各プラットフォームの特別技術トレーニングの提供や、開発全般のご支援を行っています。


「古い技術やサポート終了のプラットフォームから脱却する必要があるが、その移行先のプラットフォームやフレームワークの検討が進まない、知見がない。」

「新しい開発テクノロジーを採用したいが、自社内にエキスパートがいない。日本語リソースも少ないし、開発を進められるか不安。」

「自社のメンバーで開発を進めたいが、これまで開発フェーズを外部ベンダーに頼ってきたため、ツールや技術に対する理解が乏しい。」

「UIを刷新したい。UIデザインやUI/UXに関する検討の進め方が分からない。外部のデザイン会社に頼むと、開発が難しくなるのではないか、危惧している。」

といったご相談を承っています。

お問い合せは<a href="https://jp.infragistics.com/about-us/contact-us#contactform" target="_blank">こちら</a>からお気軽にご相談ください。