Skip to content

MS_ASPNETMVC

nishi_74322014 edited this page Aug 21, 2026 · 2 revisions

ASP.NET MVC

概要

ASP.NET MVC は、Microsoft が開発・提供している、
Model View Controller (MVC) パターンをベースとした
ASP.NET アプリケーションを開発するための

  • Web アプリケーションフレームワーク。
  • MVC アーキテクチャの Web UI テクノロジ。

補足(最新化): 本ページが扱う「ASP.NET MVC」は
.NET Framework 上の MVC 5 までを指す。
MVC 6 は開発途中で ASP.NET Core MVC として
作り直された(ASP.NET Core MVC を参照)。

新規開発は ASP.NET Core MVC を使う。
ただし System.Web.MvcMicrosoft.AspNetCore.Mvc は別物で、
名前空間も型も異なるため、ソースの互換性は限定的である。

特徴

一般的には、

以下のように言われている。

.NET で Model-View-Controller モデルでの開発を行うためのフレームワークで、
Java などの MVC アーキテクチャに慣れた開発者にとってはなじみやすいフレームワークである。

ASP.NET Web Formsは、

豊富なサーバー コントロールにより、HTML レンダリングが行われるため、
画面設計・画面構築において高い生産性を確保することができた。

ASP.NET MVC

コレに対して、ASP.NET MVC は、

  • サーバー コントロールがなく(代替に Html ヘルパーが存在する)、
    HTML も開発者が記述しなければならない分、生産性は劣るが、
    HTML/CSS/JavaScript に対応した、よりきめ細やかな画面デザインが実現できる。

  • JavaScript フレームワークとの親和性が高い。
    Ajax の普及により jQuery などの JavaScript フレームワークを利用することが
    増えてきているが、JavaScript フレームワークを併用する場合には
    ASP.NET MVC の方が開発が容易となる場合もある。

  • その他、ASP.NET Web Forms では困難であった
    単体テストの自動化が容易になるなどの特徴がある。

移行メモ: 元ページは「JavaScript フレームワークの親和性」と
なっていたので「の親和性」に正した。

補足(単体テストが容易になる理由): Web Forms のコードビハインドは
Page を継承し、HttpContext に強く依存するため、
テストのためにランタイムを立ち上げる必要があった。

MVC の Controller はただのクラスで、

  • アクション メソッドは ActionResult を返す純粋な関数に近い
  • 依存はコンストラクタで注入できる

ため、new してメソッドを呼ぶだけでテストできる。
これが「テスト自動化が容易」の実体である
テスティング・フレームワークを参照)。

MVCの特徴

ASP.NET Web Forms vs ASP.NET MVCを参照。

適合案件

一般的には、

以下のように言われている。

  • Struts 等の MVC フレームワークに慣れた Java 技術者の取り込み。

  • HTML/CSS/JavaScript による RIA 開発

    • HTML/CSS デザインを重視(流用)するインターネット系システム
    • JavaScript を多用した RIA アプリケーション
      • jQuery UI を使用した RIA アプリケーション
      • jQuery Mobile を使用したモバイル・デバイス向け RIA アプリケーション
  • テスティング・フレームワークを使用した、
    画面からの単体テストの自動化がフィットする案件

補足(この記述の時代性): jQuery UI / jQuery Mobile はいずれも
現在は開発が終了している(jQuery Mobile は 2021 年に非推奨)。
「RIA」という語自体も、Flash / Silverlight 時代の用語であり、
現在は SPASingle-page application)が
その位置を占めている。

現在の判断軸に置き換えると、次のようになる。

要件 選択
サーバー レンダリングで十分・SEO が要る ASP.NET Core MVC / Razor Pages
画面が高度にインタラクティブ SPA(React / Vue)+ Web API
C# で完結させたい Blazor

大規模開発案件への適応

ASP.NET Web Forms vs ASP.NET MVCを参照。

参考

内部リンク

連載:ASP.NET MVC入門

MVC 1

Insider.NET ASP.NET MVC入門 - @IT
http://www.atmarkit.co.jp/ait/subtop/features/dotnet/aspnetmvc_index.html

  • 第1回 ASP.NET MVC フレームワーク 基本のキ

    • ASP.NET MVC とは?/ASP.NET MVC を利用するための準備
    • Hello, World アプリケーションを作成する(1)(2)
    • ユーザー・パラメータを受け取る/アクション・メソッドでポスト・データの取得
    • 入力フォームに検証機能を追加する
  • 第2回 スキャフォールディング機能で軽々 DB 連携アプリケーション

    • Entity Data モデルを作成/コントローラ・クラスを作成
    • Index / Details / Create / Edit アクション・メソッド&ビューを定義
    • ビューの部品化
  • 第3回 ActionResult オブジェクトでアクション操作も自由自在

    • ViewResult / RedirectToRouteResult
    • ContentResult / JsonResult / PartialViewResult
    • JavaScriptResult / FileResult
  • 第4回 フィルタ属性による認証/キャッシュ/セキュリティ対策の実装

    • ページ・キャッシング機能を有効化する:OutputCache 属性
    • アプリケーションに認証機能を追加したい:Authorize 属性
    • カスタム・エラー・ページを有効化する:HandleError 属性
    • 妥当性を検証:ValidateInput 属性/CSRF 対策:ValidateAntiForgeryToken 属性

移行メモ: 元ページの目次は
artialViewResult」「リケーションに認証機能を」のように
先頭文字が落ちていたため補った。

補足: ValidateAntiForgeryToken はビュー側の @Html.AntiForgeryToken()
セットで機能する。片方だけでは効かない点に注意
(ASP.NET Core では [ValidateAntiForgeryToken] /
[AutoValidateAntiforgeryToken] に相当。フォーム タグ ヘルパーが
自動でトークンを埋め込むため、既定で有効になっている)。

MVC 3

連載:ASP.NET MVC入門【バージョン3対応】 - @IT
http://www.atmarkit.co.jp/fdotnet/aspnetmvc3/index/

  • 第0回 Web アプリケーション・フレームワークの新たな選択肢
  • 第1回 Controller - View 開発のキモを押さえる
  • 第2回 Entity Framework コード・ファーストでモデル開発
  • 第3回 モデル・バインドとアノテーション検証の実装
  • 第4回 検証属性の自作とクラス・レベルのモデル検証
  • 第5回 新しいビュー・エンジン「Razor」の基本を理解しよう
  • 第6回 テンプレート機能でビュー開発を効率化
  • 第7回 レイアウト/部分ビューでアプリ共通のデザインを定義
  • 最終回 テスト自動化でアプリケーションの品質向上
    • モック・ライブラリ Moq の利用方法
    • データベース・アクセスを伴うテスト

MVC 4

特集:ASP.NET 4.5新機能概説(3):ASP.NET MVCの新機能 - @IT
http://www.atmarkit.co.jp/ait/articles/1304/23/news056.html

MVC 5

書籍転載:ASP.NET MVC 5 実践プログラミング - Build Insider
https://www.buildinsider.net/web/bookaspmvc5

補足(Html.Raw の注意): Html.Raw は HTML エンコードを無効にするため、
ユーザー入力を渡すと XSS になる
Razor は既定で @ 出力を自動エンコードしており、それが安全側の設計である。
「エンコードされて困る」場面では、まず
そもそも HTML を入れる必要があるかを疑うこと。

MSDN


Tags: 移行, .NET開発, ASP.NET, ASP.NET MVC

NetDevInfraWiki

マイクロソフト系技術情報 Wiki
Open 棟梁 Wiki

(未着手)

開発基盤部会 Wiki

移行管理: DONETODO

Clone this wiki locally