はじめに
本記事は将来の自分に向けた備忘録としての意味が強いです。
ASP.NET Core MVC 3.1 プロジェクトの基本構造について、自分が学んだことを記載します。
はじめて ASP.NET Core MVC で開発をする方にとって、「どこに何を書いたらいいかわからない」というのはよくある話だと思いますので、少しでも参考になれば幸いです。
前回の記事
ASP.NET Core MVC 3.1 入門 その1 「Hello World!」
今回のゴール
- ASP.NET Core MVC 3.1 プロジェクトの基本構造を把握する
- CoCをという理念を知る
環境
- IDE
- Visual Studio 2019
<dt>言語</dt>
<dd>C#</dd>
ASP.NET Core MVC 3.1 プロジェクトの基本構造
ソリューションエクスプローラーを眺める
前回の記事で作成した「Web アプリケーション(モデル ビュー コントローラー)」テンプレートのソリューションエクスプローラーを眺めてみましょう。
こちらのテンプレートには、最初からMVCプロジェクトに必要な最低限の構成が用意されているので、各フォルダ/ファイルの概要について次項でまとめます。
各フォルダ/ファイルの概要
今回はルートレベルに限定して記載します。
ファイル/フォルダ | 概要 |
---|---|
wwwroot | スタイルシートやJavascriptライブラリ、画像といった静的なファイルを格納するフォルダ。Webルートと呼ぶ。 |
Controllers | コントローラークラスを格納するフォルダ |
Models | モデルクラスを格納するフォルダ |
Views | ビューテンプレートを格納するフォルダ |
appsettings.json | アプリケーションの稼働に必要な各設定情報を管理するファイル |
Program.cs | アプリケーションのエントリーポイントを担うクラス |
Startup.cs | アプリケーションが起動されるタイミングで実行されるメソッドを集めたクラス |
Coc(設定より規約)
ASP.NET Core MVCは**CoC(Convention over Configuration)**という理念を取り入れて作られています。
和訳すると「設定より規約」となります。
何を言っているかというと、ASP.NET Core MVC では
各フォルダやファイルの名称,配置場所も重要になってきます。
例えば、本来であれば、開発者はコントローラーについて、
例えば以下のような事項を「設定」(決定)しなければなりません。
- 何をもってコントローラークラスとするか
- コントローラークラスをどこに配置するか
しかし、ASP.NET Core MVC には以下の「規約」があります。
- 命名規則
- コントローラーはクラス名の末尾を
Controller
とするか、Controller
属性を付与しなければならない
- コントローラーはクラス名の末尾を
- 継承関係
- 通常コントローラークラスは「Microsoft.AspNetCore.Mvc.Controller」クラスを継承する
- 前身のASP.NET MVC では必須
- 通常コントローラークラスは「Microsoft.AspNetCore.Mvc.Controller」クラスを継承する
- 配置場所(名前空間)
- Controllersフォルダ配下
- 前身のASP.NET MVC では必須
- Core MVC では、コントローラーの検出に名前空間は無関係ですが、お作法として
- Controllersフォルダ配下
上記の規約に従うことで、開発者は決定しなければならない事項が減り、
アプリケーション固有の開発に力を注ぐことができるというわけです。
この仕組みを生かし、効率的に開発を進めていくためにも、ASP.NET Core MVC では、どこに何を作るべきかを把握しておく必要があります。