連載:ASP.NET MVC入門【バージョン3対応】第0回 Webアプリケーション・フレームワークの新たな選択肢山田 祥寛(http://www.wings.msn.to/)2011/02/18 |
|
|
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ファイルに対応したビュー・エンジン
- ビューの生成を支援するビューヘルパー
- 認証やキャッシュ、セキュリティ保護に対応したフィルタ
INDEX | ||
ASP.NET MVC入門【バージョン3対応】 | ||
第0回 Webアプリケーション・フレームワークの新たな選択肢 | ||
1.ASP.NET概論 | ||
2.いま、いずれのフレームワークを学ぶべきか | ||
3.WebフォームもASP.NET MVCも基盤は共通 | ||
「ASP.NET MVC入門【バージョン3対応】」 |
- 第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用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
|
|