SlideShare a Scribd company logo
ASP.NET MVC
      - 概要と仕
組み

12-D-3   小野 修司
         あおい情報システム株式会社
ASP.NET MVC とは

 M -  Model
 V -  View
 C -  Controller

   MVC パターンを ASP.NET 上に実装
ASP.NET MVC RC の内容
 ベースは ASP.NET 3.5 ( SP1 )
 dll
   System.Web.Mvc.dll            - MVC の本体
   System.Web.Abstractions.dll   - テストのためのクラス
    群
   System.Web.Routing.dll        - SP1 と同一
 プロジェクトテンプレート
   MVC アプリケーションテンプレート
   MVC テストテンプレート
 Visual Studio の拡張
     雛形の作成( Add Controller/Add View )
     ウィンドウ移動補助( Go To View/Go To Controller )
     …
テンプレートの構成
 Global.asax
    ルーティングの設定
 Controllers フォルダ
    コントローラクラス(xxxx Controller )
        HomeController      - 2 枚のページの切り替え( 2 アクション
         )
        AccountController   -認証のサンプル実装( 8 アクション)
 Models フォルダ
    モデルクラスの定義
    初期状態は空
 Views フォルダ
      コントローラに対応するフォルダ
      フォルダの下層にアクションに対応する ViewPage クラス
       ( aspx ファイル: <% %> によるインラインプログラミング
       )
 Scripts フォルダ
    JQuery 、 MS AJAX の js ファイルを格納
ページの呼び出し

                  ルート


                    Controller

                         HomeController.cs
                              About()
 “/Home/About/”
                        Views
   ブラウザ
                         Controller

                             About.aspx
テストテンプレートの構成

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


 AccountControllerTest
   8 アクションに対して 25 個の認証動作テス
    ト
コントローラの雛形追加
 Model の準備
    POCO ( Plain Old CLR Object )も利用できる
    IDataErrorInfo により検証を実装できる
 Add Controller
      アクションメソッドの雛形を生成
      Index
      Details
      Create
      Create ( Post 用)
      Edit
      Edit ( Post 用)

    Delete は生成されない
        セキュリティ面から Delete の扱いには注意
ビューの雛形追加
 Add View
     View 名(自動で設定)
     Model 指定
     View のタイプ指定
         Create
         Details
         Edit
         Empty
         List
   マスターページ指定
 フォルダと aspx を生
  成
Web フォーム(従来型
   ASP.NET )
       と
  ASP.NET MVC
Web フォーム
(従来型 ASP.NET )の特徴
 コントロールのドラッグ&ドロップ
 イベントドリブン
  ポストバック
  ビューステート
 コードはできるだけ書かない
    ミスの入り込む余地を少なくする
    ユーザコントロール/カスタムコントロールの活用
    ロジックはコントロール内に隠蔽

 コントロール指向の開発
ASP.NET MVC の特徴
 コントロールを使わない ( 使えない、ではなく)
  HTML ヘルパー
 URL (メソッド) = メッセージパッシング
 ロジックは責務を負うべき場所に記述
    Model        - ビジネスロジック
    Controller   - 制御ロジック
    View         - できるだけロジックを持たない
 ユニットテストによりミスの入り込む余地を少
  なくする
 Model 、 View は置き換えが可能

 オブジェクト指向の開発
ASP.NET MVC の仕組み
ASP.NET のページ呼び出し
                             HttpContext

                              Handler


 リクエストパスからページ
  のインスタンスを生成する
 HttpContext の Handler プロ                      Page
  パティにインスタンスをセ                              : IHttpHandler
  ット

                                           ProcessRequest()
 Handler にセットされてい
  るオブジェクトの
  ProcessRequest メソッドを
  呼び出す
MVC ルーティング
 MapRoute (拡張メソッ
  ド)は MvcRouteHandler        HttpContext
  を利用
    MvcHandler を取得           Handler
 リクエストパスを書き換
  える
    ~/UrlRouting.axd
 リクエストパスからページ
  のインスタンスを生成する                               MvcHandler
                                            : IHttpHandler
 HttpContext の Handler プロ
  パティにインスタンスをセ
  ット                                       ProcessRequest()
 Handler を MvcHandler に
  置き換える
 Handler にセットされてい
  るオブジェクトの
  ProcessRequest メソッドを
  呼び出す
MvcHandler の
ProcessRequest 内の処理
1. Controller のインスタンスを生成
2. URL に指定されているアクションを実行
     メソッドを呼び出し、 ActionResult を受け取る
3. ActionResult の ExecuteResult を呼び出す
     返されたのが ViewResult の場合( View メソッド
      )
       ViewPage のインスタンスを生成する
        ( CreateInstanceFromVirtualPath メソッド)
       ViewPage の ProcessRequest を呼び出す

     返されたのが RedirectResult の場合
      ( Redirect メソッド)
       Response.Redirect を実行する
ASP.NET MVC の仕組み

 ASP.NET フレームワークの柔軟性、拡
  張性を活かして構築されたもの
  ASP.NET の機能を利用することが可能
   認証
   セッション管理 等
  Web フォームと共に利用することも可能
誰がための ASP.NET MVC

More Related Content

What's hot (20)

PDF
Pro aspnetmvc3framework chap19
Hideki Hashizume
 
PDF
JavaFX 2.0 - リッチクライアントのためのUI基盤
Yuichi Sakuraba
 
PPTX
まだDOM操作で消耗してるの?
IRI MO
 
PDF
後期第三回ネットワークチーム講座資料
densan_teacher
 
PDF
はじめよう JavaFX 2.x(第3回 岡山Javaユーザー会)
a know
 
PPT
やってみよう!ASP.NET MVC #2
Tadahiro Higuchi
 
PPTX
20111204 WebBroser Control Tips for Windows Phone
Kenji Wada
 
PDF
自作node.jsフレームワークとnginxを使ってラジオサイトを作ってみた
Yuki Takei
 
PDF
図とコード例で多分わかる React と flux (工事中)
Teloo
 
PDF
J query place
sayoko miura
 
PPT
Nitrogen Web Framework
Ngoc Dao
 
PDF
Backbone.js
daisuke shimizu
 
KEY
Sencha ug3 siesta_share
久司 中村
 
PPT
CouchDB20091120_validation
Makoto Ohnami
 
PPTX
前期講座08
Takenori Nakagawa
 
PDF
何が変わった JavaFX 2.0
Yuichi Sakuraba
 
PDF
ScaLa+Liftとか
youku
 
PDF
JavaFX 2.0 への誘い
Yuichi Sakuraba
 
PPTX
Jhs portfolio
ssuser25d7ff
 
PDF
Hakodate - simple framework
Hiroaki Murayama
 
Pro aspnetmvc3framework chap19
Hideki Hashizume
 
JavaFX 2.0 - リッチクライアントのためのUI基盤
Yuichi Sakuraba
 
まだDOM操作で消耗してるの?
IRI MO
 
後期第三回ネットワークチーム講座資料
densan_teacher
 
はじめよう JavaFX 2.x(第3回 岡山Javaユーザー会)
a know
 
やってみよう!ASP.NET MVC #2
Tadahiro Higuchi
 
20111204 WebBroser Control Tips for Windows Phone
Kenji Wada
 
自作node.jsフレームワークとnginxを使ってラジオサイトを作ってみた
Yuki Takei
 
図とコード例で多分わかる React と flux (工事中)
Teloo
 
J query place
sayoko miura
 
Nitrogen Web Framework
Ngoc Dao
 
Backbone.js
daisuke shimizu
 
Sencha ug3 siesta_share
久司 中村
 
CouchDB20091120_validation
Makoto Ohnami
 
前期講座08
Takenori Nakagawa
 
何が変わった JavaFX 2.0
Yuichi Sakuraba
 
ScaLa+Liftとか
youku
 
JavaFX 2.0 への誘い
Yuichi Sakuraba
 
Jhs portfolio
ssuser25d7ff
 
Hakodate - simple framework
Hiroaki Murayama
 

Viewers also liked (8)

PPTX
20111203
小野 修司
 
PPTX
20120425
小野 修司
 
PPTX
20110607
小野 修司
 
PPTX
20120128
小野 修司
 
PPTX
20120609
小野 修司
 
PPTX
20120616
小野 修司
 
PPTX
20121215
小野 修司
 
PPTX
20140322
小野 修司
 
20111203
小野 修司
 
20120425
小野 修司
 
20110607
小野 修司
 
20120128
小野 修司
 
20120609
小野 修司
 
20120616
小野 修司
 
20121215
小野 修司
 
20140322
小野 修司
 
Ad

Similar to 20090212 (20)

PDF
Hokuriku.NET ASP.NET MVC入門 「実践」 20120825
miso- soup3
 
PDF
ASP.NET MVC と jQuery で実践する標準志向 Web 開発
Akira Inoue
 
PDF
Asp Net Mvc 基礎のキソ
Yoshitaka Seo
 
PDF
Mvc conf session_1_osada
Hiroshi Okunushi
 
PPT
T35 ASP.NET MVCを使ったTDD入門
normalian
 
PPT
ASP.NET MVC 1.0
Shinpei Ohtani
 
PDF
Introduction for Browser Side MVC
Ryunosuke SATO
 
PPT
20080524
小野 修司
 
PDF
ASP.NET WEB API 開発体験
miso- soup3
 
PDF
ASP.NET MVC 2 ~新機能の紹介~
Yoshitaka Seo
 
PDF
最新 ASP.NET Web 開発オーバービュー
Akira Inoue
 
PPT
20090328
小野 修司
 
PPTX
20081003
小野 修司
 
PDF
Pro aspnetmvc3framework chap15
Hideki Hashizume
 
PDF
はじめての ASP.NET MVC
jz5 MATSUE
 
PDF
[公開用]Netラボ2012年2月勉強会 asp.netmvc4 beta新機能の紹介
david9142
 
PDF
Mvc conf session_4_ono
Hiroshi Okunushi
 
PPTX
20100218
小野 修司
 
PDF
ASP.NET MVC Part 2
Yoshitaka Seo
 
PPT
20050917
小野 修司
 
Hokuriku.NET ASP.NET MVC入門 「実践」 20120825
miso- soup3
 
ASP.NET MVC と jQuery で実践する標準志向 Web 開発
Akira Inoue
 
Asp Net Mvc 基礎のキソ
Yoshitaka Seo
 
Mvc conf session_1_osada
Hiroshi Okunushi
 
T35 ASP.NET MVCを使ったTDD入門
normalian
 
ASP.NET MVC 1.0
Shinpei Ohtani
 
Introduction for Browser Side MVC
Ryunosuke SATO
 
20080524
小野 修司
 
ASP.NET WEB API 開発体験
miso- soup3
 
ASP.NET MVC 2 ~新機能の紹介~
Yoshitaka Seo
 
最新 ASP.NET Web 開発オーバービュー
Akira Inoue
 
20090328
小野 修司
 
20081003
小野 修司
 
Pro aspnetmvc3framework chap15
Hideki Hashizume
 
はじめての ASP.NET MVC
jz5 MATSUE
 
[公開用]Netラボ2012年2月勉強会 asp.netmvc4 beta新機能の紹介
david9142
 
Mvc conf session_4_ono
Hiroshi Okunushi
 
20100218
小野 修司
 
ASP.NET MVC Part 2
Yoshitaka Seo
 
20050917
小野 修司
 
Ad

More from 小野 修司 (16)

PPTX
20100313
小野 修司
 
PPT
20100224
小野 修司
 
PPTX
20100218 lt
小野 修司
 
PPTX
20091207
小野 修司
 
PPTX
20090711
小野 修司
 
PPTX
20090418
小野 修司
 
PPTX
20080627 2
小野 修司
 
PPTX
20080627 1
小野 修司
 
PPTX
20080213
小野 修司
 
PPTX
20080201
小野 修司
 
PPTX
20071204
小野 修司
 
PPTX
20071030
小野 修司
 
PPTX
20070310
小野 修司
 
PPT
20061125
小野 修司
 
PPTX
20061122
小野 修司
 
PPT
20060419
小野 修司
 
20100313
小野 修司
 
20100224
小野 修司
 
20100218 lt
小野 修司
 
20091207
小野 修司
 
20090711
小野 修司
 
20090418
小野 修司
 
20080627 2
小野 修司
 
20080627 1
小野 修司
 
20080213
小野 修司
 
20080201
小野 修司
 
20071204
小野 修司
 
20071030
小野 修司
 
20070310
小野 修司
 
20061125
小野 修司
 
20061122
小野 修司
 
20060419
小野 修司
 

20090212

  • 1. ASP.NET MVC       - 概要と仕 組み 12-D-3 小野 修司 あおい情報システム株式会社
  • 2. ASP.NET MVC とは  M -  Model  V -  View  C -  Controller  MVC パターンを ASP.NET 上に実装
  • 3. ASP.NET MVC RC の内容  ベースは ASP.NET 3.5 ( SP1 )  dll  System.Web.Mvc.dll - MVC の本体  System.Web.Abstractions.dll - テストのためのクラス 群  System.Web.Routing.dll - SP1 と同一  プロジェクトテンプレート  MVC アプリケーションテンプレート  MVC テストテンプレート  Visual Studio の拡張  雛形の作成( Add Controller/Add View )  ウィンドウ移動補助( Go To View/Go To Controller )  …
  • 4. テンプレートの構成  Global.asax  ルーティングの設定  Controllers フォルダ  コントローラクラス(xxxx Controller )  HomeController - 2 枚のページの切り替え( 2 アクション )  AccountController -認証のサンプル実装( 8 アクション)  Models フォルダ  モデルクラスの定義  初期状態は空  Views フォルダ  コントローラに対応するフォルダ  フォルダの下層にアクションに対応する ViewPage クラス ( aspx ファイル: <% %> によるインラインプログラミング )  Scripts フォルダ  JQuery 、 MS AJAX の js ファイルを格納
  • 5. ページの呼び出し ルート Controller HomeController.cs About() “/Home/About/” Views ブラウザ Controller About.aspx
  • 6. テストテンプレートの構成  HomeControllerTest  2 アクションに対して 2 個のページ切り替え テスト  AccountControllerTest  8 アクションに対して 25 個の認証動作テス ト
  • 7. コントローラの雛形追加  Model の準備  POCO ( Plain Old CLR Object )も利用できる  IDataErrorInfo により検証を実装できる  Add Controller  アクションメソッドの雛形を生成  Index  Details  Create  Create ( Post 用)  Edit  Edit ( Post 用)  Delete は生成されない  セキュリティ面から Delete の扱いには注意
  • 8. ビューの雛形追加  Add View  View 名(自動で設定)  Model 指定  View のタイプ指定  Create  Details  Edit  Empty  List  マスターページ指定  フォルダと aspx を生 成
  • 9. Web フォーム(従来型 ASP.NET ) と ASP.NET MVC
  • 10. Web フォーム (従来型 ASP.NET )の特徴  コントロールのドラッグ&ドロップ  イベントドリブン  ポストバック  ビューステート  コードはできるだけ書かない  ミスの入り込む余地を少なくする  ユーザコントロール/カスタムコントロールの活用  ロジックはコントロール内に隠蔽  コントロール指向の開発
  • 11. ASP.NET MVC の特徴  コントロールを使わない ( 使えない、ではなく)  HTML ヘルパー  URL (メソッド) = メッセージパッシング  ロジックは責務を負うべき場所に記述  Model - ビジネスロジック  Controller - 制御ロジック  View - できるだけロジックを持たない  ユニットテストによりミスの入り込む余地を少 なくする  Model 、 View は置き換えが可能  オブジェクト指向の開発
  • 13. ASP.NET のページ呼び出し HttpContext Handler  リクエストパスからページ のインスタンスを生成する  HttpContext の Handler プロ Page パティにインスタンスをセ : IHttpHandler ット ProcessRequest()  Handler にセットされてい るオブジェクトの ProcessRequest メソッドを 呼び出す
  • 14. MVC ルーティング  MapRoute (拡張メソッ ド)は MvcRouteHandler HttpContext を利用  MvcHandler を取得 Handler  リクエストパスを書き換 える  ~/UrlRouting.axd  リクエストパスからページ のインスタンスを生成する MvcHandler : IHttpHandler  HttpContext の Handler プロ パティにインスタンスをセ ット ProcessRequest()  Handler を MvcHandler に 置き換える  Handler にセットされてい るオブジェクトの ProcessRequest メソッドを 呼び出す
  • 15. MvcHandler の ProcessRequest 内の処理 1. Controller のインスタンスを生成 2. URL に指定されているアクションを実行  メソッドを呼び出し、 ActionResult を受け取る 3. ActionResult の ExecuteResult を呼び出す  返されたのが ViewResult の場合( View メソッド )  ViewPage のインスタンスを生成する ( CreateInstanceFromVirtualPath メソッド)  ViewPage の ProcessRequest を呼び出す  返されたのが RedirectResult の場合 ( Redirect メソッド)  Response.Redirect を実行する
  • 16. ASP.NET MVC の仕組み  ASP.NET フレームワークの柔軟性、拡 張性を活かして構築されたもの  ASP.NET の機能を利用することが可能  認証  セッション管理 等  Web フォームと共に利用することも可能