連載:ASP.NET MVC入門【バージョン3対応】

第0回 Webアプリケーション・フレームワークの新たな選択肢

山田 祥寛(http://www.wings.msn.to/
2011/02/18
Page1 Page2 Page3

WebフォームもASP.NET MVCも基盤は共通

 これまでの解説を読むと、従来のWebフォームとASP.NET MVCとが、いかにも別世界のフレームワークに思えてくる。しかし、ここで誤解してならないのは、WebフォームとASP.NET MVCとは、いずれも従来からのASP.NETコアを基盤に動作しているという点である。

 もっといえば、WebフォームもASP.NET MVCも、ASP.NETのアプリケーション・ライフサイクルを共有している。


図5 ASP.NETのアプリケーション・ライフサイクル

 図5中央の緑色の領域は、ASP.NETのアプリケーション・ライフサイクルを示している。ASP.NETでは、リクエストを受け取ると、認証→キャッシュ解決→セッション取得……のようなステージを経て、処理を行っていく。

 これらのステージでの処理をつかさどるのが「HTTPモジュール」の役割だ。ASP.NETでは、OutputCacheModule、SessionStateModule、FormsAuthenticationModuleなどのHTTPモジュールを提供しており、これらのモジュールを利用して、ライフサイクルのあらかじめ決められた段階(イベント)に応じて、必要な処理を行っている。HTTPモジュールとは、標準的なASP.NETのライフサイクルに、必要な処理を割り込ませるための仕組みと考えてもよいだろう。

 そして、実際のページ実行で呼び出されるのがHTTPハンドラである。ASP.NET(Webフォーム)では、リクエストURLの拡張子に応じて、適切なHTTPハンドラを選択し、実処理を委ねている。例えば、.aspxファイルであればPageHandlerFactoryクラスがそれであるし、.asmxファイルであればWebServiceHandlerFactoryがそれに相当する。

 ASP.NETの世界では、HTTPモジュールとHTTPハンドラがまず基盤にあると理解しておけばよいだろう。

 この流れは、ASP.NET MVCでも同様である。ASP.NET MVCでURLルーティングを担うのはHTTPモジュールの一種であるUrlRoutingModule*6の役割だ。UrlRoutingModuleモジュールは、リクエストURIに応じてルートを決定するとともに、リクエストを処理するためのHTTPハンドラとしてMvcHandler(MvcRouteHandler)を強制的に割り当てている。実行時には、ここで割り当てられたMvcHandlerハンドラによって、Model−View−Controlerの処理を実行しているわけだ。

*6 厳密には、UrlRoutingModuleモジュールはASP.NET MVC固有のモジュールではない。WebフォームでもURLルーティングを有効にした場合には、UrlRoutingModuleモジュールによってハンドラの割り当てが行われる。

 以上を見ても分かるように、ASP.NET MVCは、ASP.NETのアプリケーション・ライフサイクルの上で動作する、純然たるASP.NETの拡張なのである。もっといえば、ASP.NET MVCを学ぶために、これまでのWebフォームの知識をすべて捨て去る必要はない。セッションやメンバシップ・フレームワーク、キャッシュ、データ・アクセスといったASP.NET(あるいは.NET Framework)の基本的な機能は、ASP.NET MVCでもそのまま利用できる。

 以上が、本連載のプロローグである。

 もはや、ASP.NETは1つではない。開発の選択肢が増えたということは、そのいずれを選択するのかを決めるために、テクノロジの長所・短所をきちんと把握しておくことはますます重要になってくる。本稿が、その手掛かりとなれば幸いである。

 次回からは、いよいよVisual Studio 2010(.NET Framework 4)+ASP.NET MVC 3を利用して、具体的なアプリケーション開発の手順を解説していく予定だ。最後に、ASP.NET MVCが提供する主な機能を概観する意味も含めて、本連載で扱う予定の内容を列挙しておく。

  • URLルーティング機能
  • Razor構文
  • リクエスト・データを処理するデータ・バインド
  • サーバサイド/クライアントサイドでの入力値検証
  • コントローラの処理結果を管理するActionResultオブジェクト
  • .aspx/.ascx/.masterファイルに対応したビュー・エンジン
  • ビューの生成を支援するビューヘルパー
  • 認証やキャッシュ、セキュリティ保護に対応したフィルタ

 さあ、始めよう。End of Article

 

 INDEX
  ASP.NET MVC入門【バージョン3対応】
  第0回 Webアプリケーション・フレームワークの新たな選択肢
    1.ASP.NET概論
    2.いま、いずれのフレームワークを学ぶべきか
  3.WebフォームもASP.NET MVCも基盤は共通
 
インデックス・ページヘ  「ASP.NET MVC入門【バージョン3対応】」


Insider.NET フォーラム 新着記事
  • 第2回 簡潔なコーディングのために (2017/7/26)
     ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている
  • 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
     Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう
  • 第1回 明瞭なコーディングのために (2017/7/19)
     C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える
  • Presentation Translator (2017/7/18)
     Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Insider.NET 記事ランキング

本日 月間