LoginSignup
10
12

More than 3 years have passed since last update.

ASP.NET Core MVC 3.1 入門 その2 「MVCプロジェクトの基本構造」

Last updated at Posted at 2020-07-06

はじめに

本記事は将来の自分に向けた備忘録としての意味が強いです。
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
言語
C#

ASP.NET Core MVC 3.1 プロジェクトの基本構造

ソリューションエクスプローラーを眺める

前回の記事で作成した「Web アプリケーション(モデル ビュー コントローラー)」テンプレートのソリューションエクスプローラーを眺めてみましょう。

こちらのテンプレートには、最初からMVCプロジェクトに必要な最低限の構成が用意されているので、各フォルダ/ファイルの概要について次項でまとめます。

image.png

各フォルダ/ファイルの概要

今回はルートレベルに限定して記載します。

ファイル/フォルダ 概要
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 では必須
  • 配置場所(名前空間)
    • Controllersフォルダ配下
      • 前身のASP.NET MVC では必須
      • Core MVC では、コントローラーの検出に名前空間は無関係ですが、お作法として

上記の規約に従うことで、開発者は決定しなければならない事項が減り、
アプリケーション固有の開発に力を注ぐことができるというわけです。

この仕組みを生かし、効率的に開発を進めていくためにも、ASP.NET Core MVC では、どこに何を作るべきかを把握しておく必要があります。

10
12
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
12