【12-D-3】 ASP.NET MVC - 概要と仕組み

17
小野 小野 修司 修司 あおい情報システム株式会社 あおい情報システム株式会社 12-D-3 ASP.NET ASP.NET MVC MVC 概要と仕組み 概要と仕組み

Transcript of 【12-D-3】 ASP.NET MVC - 概要と仕組み

Page 1: 【12-D-3】 ASP.NET MVC - 概要と仕組み

小野小野 修司修司

あおい情報システム株式会社あおい情報システム株式会社

12-D-3

ASP.NETASP.NET MVCMVC -- 概要と仕組み概要と仕組み

Page 2: 【12-D-3】 ASP.NET MVC - 概要と仕組み

ASP.NETASP.NET MVCMVCとはとは

MM -- ModelModelVV -- ViewViewCC -- ControllerController

MVCMVCパターンをパターンをASP.NETASP.NET上に実装上に実装

Page 3: 【12-D-3】 ASP.NET MVC - 概要と仕組み

ASP.NETASP.NET MVCMVC RCRCの内容の内容

ベースはベースはASP.NETASP.NET 3.53.5((SP1SP1))dlldll

System.Web.Mvc.dllSystem.Web.Mvc.dll -- MVCMVCの本体の本体System.Web.Abstractions.dllSystem.Web.Abstractions.dll -- テストのためのクラス群テストのためのクラス群System.Web.Routing.dllSystem.Web.Routing.dll -- SP1SP1と同一と同一

プロジェクトテンプレートプロジェクトテンプレートMVCMVCアプリケーションテンプレートアプリケーションテンプレートMVCMVCテストテンプレートテストテンプレート

VisualVisual StudioStudioの拡張の拡張雛形の作成(雛形の作成(AddAdd Controller/AddController/Add ViewView))ウィンドウ移動補助(ウィンドウ移動補助(GoGo ToTo View/Go ToView/Go To ControllerController))……

Page 4: 【12-D-3】 ASP.NET MVC - 概要と仕組み

テンプレートの構成テンプレートの構成

Global.asaxGlobal.asaxルーティングの設定ルーティングの設定

ControllersControllersフォルダフォルダコントローラクラス(xxxxコントローラクラス(xxxxControllerController))

HomeControllerHomeController --22枚のページの切り替え(枚のページの切り替え(22アクション)アクション)AccountControllerAccountController -認証のサンプル実装(-認証のサンプル実装(88アクション)アクション)

ModelsModelsフォルダフォルダモデルクラスの定義モデルクラスの定義初期状態は空初期状態は空

ViewsViewsフォルダフォルダコントローラに対応するフォルダコントローラに対応するフォルダフォルダの下層にアクションに対応するフォルダの下層にアクションに対応するViewPageViewPageクラスクラス((aspxaspxファイル:ファイル:<%<% %>%>によるインラインプログラミング)によるインラインプログラミング)

ScriptsScriptsフォルダフォルダJQueryJQuery、、MSMS AJAXAJAXののjsjsファイルを格納ファイルを格納

Page 5: 【12-D-3】 ASP.NET MVC - 概要と仕組み

ページの呼び出しページの呼び出し

Controller

HomeController.csAbout()

ルート

Views

Controller

About.aspx

ブラウザ

“/Home/About/”

Page 6: 【12-D-3】 ASP.NET MVC - 概要と仕組み

テストテンプレートの構成テストテンプレートの構成

HomeControllerTestHomeControllerTest22アクションに対してアクションに対して22個のページ切り替えテスト個のページ切り替えテスト

AccountControllerTestAccountControllerTest88アクションに対してアクションに対して2525個の認証動作テスト個の認証動作テスト

Page 7: 【12-D-3】 ASP.NET MVC - 概要と仕組み

コントローラの雛形追加コントローラの雛形追加

ModelModelの準備の準備POCOPOCO((PlainPlain OldOld CLRCLR ObjectObject)も利用できる)も利用できるIDataErrorInfoIDataErrorInfo により検証を実装できるにより検証を実装できる

AddAdd ControllerControllerアクションメソッドの雛形を生成アクションメソッドの雛形を生成IndexIndexDetailsDetailsCreateCreateCreateCreate((PostPost用)用)EditEditEditEdit((PostPost用)用)

DeleteDeleteは生成されないは生成されないセキュリティ面からセキュリティ面からDeleteDeleteの扱いには注意の扱いには注意

Page 8: 【12-D-3】 ASP.NET MVC - 概要と仕組み

ビューの雛形追加ビューの雛形追加

AddAdd ViewViewViewView名(自動で設定)名(自動で設定)

ModelModel指定指定

ViewViewのタイプ指定のタイプ指定CreateCreateDetailsDetailsEditEditEmptyEmptyListList

マスターページ指定マスターページ指定

フォルダとフォルダとaspxaspxを生成を生成

Page 9: 【12-D-3】 ASP.NET MVC - 概要と仕組み

WebWebフォーム(従来型フォーム(従来型ASP.NETASP.NET)) とと ASP.NETASP.NET MVCMVC

Page 10: 【12-D-3】 ASP.NET MVC - 概要と仕組み

WebWebフォームフォーム (従来型(従来型ASP.NETASP.NET)の特徴)の特徴

コントロールのドラッグ&ドロップコントロールのドラッグ&ドロップイベントドリブンイベントドリブン

ポストバックポストバックビューステートビューステート

コードはできるだけ書かないコードはできるだけ書かないミスの入り込む余地を少なくするミスの入り込む余地を少なくするユーザコントロール/カスタムコントロールの活用ユーザコントロール/カスタムコントロールの活用ロジックはコントロール内に隠蔽ロジックはコントロール内に隠蔽

コントロール指向の開発コントロール指向の開発

Page 11: 【12-D-3】 ASP.NET MVC - 概要と仕組み

ASP.NETASP.NET MVCMVCの特徴の特徴

コントロールを使わないコントロールを使わない((使えない、ではなく)使えない、ではなく)HTMLHTMLヘルパーヘルパー

URLURL(メソッド)(メソッド) == メッセージパッシングメッセージパッシング

ロジックは責務を負うべき場所に記述ロジックは責務を負うべき場所に記述ModelModel -- ビジネスロジックビジネスロジックControllerController -- 制御ロジック制御ロジックViewView -- できるだけロジックを持たないできるだけロジックを持たない

ユニットテストによりミスの入り込む余地を少なくするユニットテストによりミスの入り込む余地を少なくするModelModel、、ViewViewは置き換えが可能は置き換えが可能

オブジェクト指向の開発オブジェクト指向の開発

Page 12: 【12-D-3】 ASP.NET MVC - 概要と仕組み

ASP.NETASP.NET MVCMVC の仕組みの仕組み

Page 13: 【12-D-3】 ASP.NET MVC - 概要と仕組み

ASP.NETASP.NETのページ呼び出しのページ呼び出し

リクエストパスからページのイリクエストパスからページのインスタンスを生成するンスタンスを生成するHttpContextHttpContextののHandlerHandlerプロパプロパティにインスタンスをセットティにインスタンスをセット

HandlerHandlerにセットされているオにセットされているオブジェクトのブジェクトのProcessRequestProcessRequestメソッドを呼び出すメソッドを呼び出す

HttpContext

Handler

Page:IHttpHandler

ProcessRequest()

Page 14: 【12-D-3】 ASP.NET MVC - 概要と仕組み

MVCMVCルーティングルーティング

MapRouteMapRoute(拡張メソッド)は(拡張メソッド)はMvcRouteHandlerMvcRouteHandlerを利用を利用

MvcHandlerMvcHandlerを取得を取得

リクエストパスを書き換えるリクエストパスを書き換える~/UrlRouting.axd~/UrlRouting.axd

リクエストパスからページのイリクエストパスからページのインスタンスを生成するンスタンスを生成するHttpContextHttpContextののHandlerHandlerプロパプロパティにインスタンスをセットティにインスタンスをセットHandlerHandlerををMvcHandlerMvcHandlerに置に置き換えるき換えるHandlerHandlerにセットされているオにセットされているオブジェクトのブジェクトのProcessRequestProcessRequestメソッドを呼び出すメソッドを呼び出す

HttpContext

Handler

MvcHandler:IHttpHandler

ProcessRequest()

Page 15: 【12-D-3】 ASP.NET MVC - 概要と仕組み

MvcHandlerMvcHandlerのの ProcessRequestProcessRequest内の処理内の処理

1.1. ControllerControllerのインスタンスを生成のインスタンスを生成2.2. URLURLに指定されているアクションを実行に指定されているアクションを実行

メソッドを呼び出し、メソッドを呼び出し、ActionResultActionResultを受け取るを受け取る

3.3. ActionResultActionResultののExecuteResultExecuteResultを呼び出すを呼び出す返されたのが返されたのがViewResultViewResultの場合(の場合(ViewViewメソッド)メソッド)

ViewPageViewPageのインスタンスを生成するのインスタンスを生成する((CreateInstanceFromVirtualPathCreateInstanceFromVirtualPathメソッド)メソッド)ViewPageViewPageののProcessRequestProcessRequestを呼び出すを呼び出す

返されたのが返されたのがRedirectResultRedirectResultの場合の場合((RedirectRedirectメソッド)メソッド)

Response.RedirectResponse.Redirectを実行するを実行する

Page 16: 【12-D-3】 ASP.NET MVC - 概要と仕組み

ASP.NETASP.NET MVCMVCの仕組みの仕組み

ASP.NETASP.NETフレームワークの柔軟性、拡張性フレームワークの柔軟性、拡張性

を活かして構築されたものを活かして構築されたもの

ASP.NETASP.NETの機能を利用することが可能の機能を利用することが可能

認証認証

セッション管理セッション管理 等等

WebWebフォームと共に利用することも可能フォームと共に利用することも可能

Page 17: 【12-D-3】 ASP.NET MVC - 概要と仕組み

誰がための誰がためのASP.NETASP.NET MVCMVC