ASP.NET CoreのWebAPIとWebアプリの比較
はじめに
ASP.NET Coreの下記のプロジェクトテンプレートはどちらもMVC(Model-View-Controller)を採用しており統合できるとのこと。
そこで、統合する際の注意点を把握するため、2つのプロジェクトのサンプルコードを比較しました。
環境
- Windows 10 64bit
- Visual Studio Community 2022
- C#
- .NET 7.0
- ASP.NET Core
比較対象
プロジェクトテンプレート
- ASP.NET Core Web API
- ASP.NET Core Webアプリ(Model-View-Controller)
プロジェクト構成
| 設定内容 | ASP.NET Core Web API | ASP.NET Core Webアプリ |
|---|---|---|
| フレームワーク | .NET 7.0 | .NET 7.0 |
| 認証の種類 | なし | なし |
| HTTPS用の構成 | チェックなし | チェックなし |
| Dockerを有効にする | チェックなし | チェックなし |
| コントローラーを使用する | チェックあり | N/A |
| OpenAPIサポートを有効にする | チェックなし | N/A |
| 最上位レベルのステートメントを使用しない | チェックなし | チェックなし |
比較結果
デフォルトのサンプルコードを比較した結果
| 比較内容 | ASP.NET Core Web API | ASP.NET Core Webアプリ |
|---|---|---|
| フォルダ構成 | ビュー関連のフォルダ(ファイル)がない | 下記のファルダ(ファイル)がある Models(cs) Views(cshtml) wwwroot(css、JavaScript) |
| コントローラーの追加方法 | コントローラーのみ追加 Program.cs AddControllers() |
コントローラー+ビューを追加 Program.cs AddControllersWithViews() |
| ルーティングの方法 | 属性ルーティング コントローラー内の属性でルーティングする Program.cs MapControllers() |
規則ルーティング 引数にパターン {controller=Home}/{action=Index}/{id?}を指定するProgram.cs MapControllerRoute() |