ASP.NET

2018/07/07 VS2017
個人的にはASP.NET MVC一択かなと思っていたのですが、Web系テンプレート選択で悩むことが増えてきたので…。

VS2017のWeb関連テンプレート

ASP.NET or ASP.NET Core

入口で大きく2つに分かれていますがターゲットフレームワークの違いで選択してしまいそうですが、ここでの選択はターゲットフレームワークの違いではなくASP.NETのバージョンによる違いです。
asp20180707001.png

ASP.NET Coreは元はASP.NET5と呼ばれてました。
asp20180707005.png

なんとなくの推測ですが、.NET Coreに対応するにあたり他の言語から移行しやすいようにフォルダの構成等を世間の流行りに合わせたら、ASP.NET4からの自動アップグレードができなくなった。しょうがないのでリセットして1から始めた感じ。
ASP.NETをASP.NET Coreに移植するべき?
ASP.NETは簡単には無くならない。WebFormやWCFやWFはASP.NETのまま残る(.NET Core対応予定なし)。
MVCも完全な互換があるわけではない。依存ライブラリによっては.NET Core未対応のものもある。
→移植の規模が大きい場合は手間をかけてまで書き換える必要は無い。
.NET Coreが.NET Frameworkより優れている点
  • クロスプラットフォーム(macOS、Linux、Windowsで実行できる)
  • パフォーマンスが向上した
  • side-by-sideで.NET Frameworkより細かいバージョン違いまで管理が可能(マイナーバージョン違いを同時に動かすことができる)
  • 新しいAPIが使える
  • オープンソースである
新しいプロジェクトを作成する場合は.NET Coreの採用を真剣に検討すべき、だそうです。
正直今まであまり必要と思ってませんでしたが、機械学習やらRazor Pagesを試そうとすると.NET Coreを入れろ、から始まっているので仕方なくと言う感じです。

ASP.NET Core Web アプリケーション

旧称:ASP.NET5
対象フレームワークは.NET Coreあるいは.NET Framework
作成時に選択(後から切り替えは無理っぽい→プロジェクトファイル直接編集すれば可)どちらのフレームワークを選ぶかの判断基準はこちら
asp20180707004.png

テンプレート名プロジェクトタイプ備考
ASP.NET Core詳細
APIRESTful HTTPサービス詳細
WebアプリケーションASP.NET Core Razorページ詳細
Webアプリケーション(モデル ビュー コントローラ)ASP.NET Core MVC詳細
AngularSPA(with Angular)詳細
React.jsSPA(with React.js)同上
React.jsとReduxSPA(with React.js,Redux)同上

ASP.NET Web アプリケーション(.NET Framework)

通称:ASP.NET4
対象フレームワークは.NET Frameworkのみ
フレームワークの切替機能はなく、アイコンにさりげなく(?)ASP.NET4の4が付いています。
asp20180707003.png

テンプレート名プロジェクトタイプ備考
ASP.NET4詳細
WebフォームWebForm詳細
MVCASP.NET MVC5詳細
Web APIRESTful HTTPサービス(ヘルプページ付)詳細
Single Page ApplicationSPA(with Knockout.js)詳細
Azure APIアプリRESTful HTTPサービス(with Swagger)詳細
OK キャンセル 確認 その他