SlideShare ist ein Scribd-Unternehmen logo
1 von 17
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

Weitere ähnliche Inhalte

Was ist angesagt?

Pro aspnetmvc3framework chap19
Pro aspnetmvc3framework chap19Pro aspnetmvc3framework chap19
Pro aspnetmvc3framework chap19Hideki Hashizume
 
JavaFX 2.0 - リッチクライアントのためのUI基盤
JavaFX 2.0 - リッチクライアントのためのUI基盤JavaFX 2.0 - リッチクライアントのためのUI基盤
JavaFX 2.0 - リッチクライアントのためのUI基盤Yuichi Sakuraba
 
まだDOM操作で消耗してるの?
まだDOM操作で消耗してるの?まだDOM操作で消耗してるの?
まだDOM操作で消耗してるの?IRI MO
 
後期第三回ネットワークチーム講座資料
後期第三回ネットワークチーム講座資料後期第三回ネットワークチーム講座資料
後期第三回ネットワークチーム講座資料densan_teacher
 
はじめよう JavaFX 2.x(第3回 岡山Javaユーザー会)
はじめよう JavaFX 2.x(第3回 岡山Javaユーザー会)はじめよう JavaFX 2.x(第3回 岡山Javaユーザー会)
はじめよう JavaFX 2.x(第3回 岡山Javaユーザー会)a know
 
やってみよう!ASP.NET MVC #2
やってみよう!ASP.NET MVC #2やってみよう!ASP.NET MVC #2
やってみよう!ASP.NET MVC #2Tadahiro Higuchi
 
20111204 WebBroser Control Tips for Windows Phone
20111204 WebBroser Control Tips for Windows Phone20111204 WebBroser Control Tips for Windows Phone
20111204 WebBroser Control Tips for Windows PhoneKenji Wada
 
自作node.jsフレームワークとnginxを使ってラジオサイトを作ってみた
自作node.jsフレームワークとnginxを使ってラジオサイトを作ってみた自作node.jsフレームワークとnginxを使ってラジオサイトを作ってみた
自作node.jsフレームワークとnginxを使ってラジオサイトを作ってみたYuki Takei
 
図とコード例で多分わかる React と flux (工事中)
図とコード例で多分わかる React と flux (工事中)図とコード例で多分わかる React と flux (工事中)
図とコード例で多分わかる React と flux (工事中)Teloo
 
Nitrogen Web Framework
Nitrogen Web FrameworkNitrogen Web Framework
Nitrogen Web FrameworkNgoc Dao
 
Sencha ug3 siesta_share
Sencha ug3 siesta_shareSencha ug3 siesta_share
Sencha ug3 siesta_share久司 中村
 
CouchDB20091120_validation
CouchDB20091120_validationCouchDB20091120_validation
CouchDB20091120_validationMakoto Ohnami
 
何が変わった JavaFX 2.0
何が変わった JavaFX 2.0何が変わった JavaFX 2.0
何が変わった JavaFX 2.0Yuichi Sakuraba
 
ScaLa+Liftとか
ScaLa+LiftとかScaLa+Liftとか
ScaLa+Liftとかyouku
 
Hakodate - simple framework
Hakodate - simple frameworkHakodate - simple framework
Hakodate - simple frameworkHiroaki Murayama
 

Was ist angesagt? (20)

Pro aspnetmvc3framework chap19
Pro aspnetmvc3framework chap19Pro aspnetmvc3framework chap19
Pro aspnetmvc3framework chap19
 
JavaFX 2.0 - リッチクライアントのためのUI基盤
JavaFX 2.0 - リッチクライアントのためのUI基盤JavaFX 2.0 - リッチクライアントのためのUI基盤
JavaFX 2.0 - リッチクライアントのためのUI基盤
 
まだDOM操作で消耗してるの?
まだDOM操作で消耗してるの?まだDOM操作で消耗してるの?
まだDOM操作で消耗してるの?
 
後期第三回ネットワークチーム講座資料
後期第三回ネットワークチーム講座資料後期第三回ネットワークチーム講座資料
後期第三回ネットワークチーム講座資料
 
はじめよう JavaFX 2.x(第3回 岡山Javaユーザー会)
はじめよう JavaFX 2.x(第3回 岡山Javaユーザー会)はじめよう JavaFX 2.x(第3回 岡山Javaユーザー会)
はじめよう JavaFX 2.x(第3回 岡山Javaユーザー会)
 
やってみよう!ASP.NET MVC #2
やってみよう!ASP.NET MVC #2やってみよう!ASP.NET MVC #2
やってみよう!ASP.NET MVC #2
 
20111204 WebBroser Control Tips for Windows Phone
20111204 WebBroser Control Tips for Windows Phone20111204 WebBroser Control Tips for Windows Phone
20111204 WebBroser Control Tips for Windows Phone
 
自作node.jsフレームワークとnginxを使ってラジオサイトを作ってみた
自作node.jsフレームワークとnginxを使ってラジオサイトを作ってみた自作node.jsフレームワークとnginxを使ってラジオサイトを作ってみた
自作node.jsフレームワークとnginxを使ってラジオサイトを作ってみた
 
図とコード例で多分わかる React と flux (工事中)
図とコード例で多分わかる React と flux (工事中)図とコード例で多分わかる React と flux (工事中)
図とコード例で多分わかる React と flux (工事中)
 
J query place
J query placeJ query place
J query place
 
Nitrogen Web Framework
Nitrogen Web FrameworkNitrogen Web Framework
Nitrogen Web Framework
 
Backbone.js
Backbone.jsBackbone.js
Backbone.js
 
Sencha ug3 siesta_share
Sencha ug3 siesta_shareSencha ug3 siesta_share
Sencha ug3 siesta_share
 
CouchDB20091120_validation
CouchDB20091120_validationCouchDB20091120_validation
CouchDB20091120_validation
 
前期講座08
前期講座08前期講座08
前期講座08
 
何が変わった JavaFX 2.0
何が変わった JavaFX 2.0何が変わった JavaFX 2.0
何が変わった JavaFX 2.0
 
ScaLa+Liftとか
ScaLa+LiftとかScaLa+Liftとか
ScaLa+Liftとか
 
JavaFX 2.0 への誘い
JavaFX 2.0 への誘いJavaFX 2.0 への誘い
JavaFX 2.0 への誘い
 
Jhs portfolio
Jhs portfolioJhs portfolio
Jhs portfolio
 
Hakodate - simple framework
Hakodate - simple frameworkHakodate - simple framework
Hakodate - simple framework
 

Andere mochten auch (8)

20111203
2011120320111203
20111203
 
20120425
2012042520120425
20120425
 
20110607
2011060720110607
20110607
 
20120128
2012012820120128
20120128
 
20120609
2012060920120609
20120609
 
20120616
2012061620120616
20120616
 
20121215
2012121520121215
20121215
 
20140322
2014032220140322
20140322
 

Ähnlich wie 20090212

Spring mvc
Spring mvcSpring mvc
Spring mvcRyo Asai
 
Hokuriku.NET ASP.NET MVC入門 「実践」 20120825
Hokuriku.NET ASP.NET MVC入門 「実践」 20120825 Hokuriku.NET ASP.NET MVC入門 「実践」 20120825
Hokuriku.NET ASP.NET MVC入門 「実践」 20120825 miso- soup3
 
ASP.NET MVC と jQuery で実践する標準志向 Web 開発
ASP.NET MVC と jQuery で実践する標準志向 Web 開発ASP.NET MVC と jQuery で実践する標準志向 Web 開発
ASP.NET MVC と jQuery で実践する標準志向 Web 開発Akira Inoue
 
jQuery と MVC で実践する標準志向 Web 開発
jQuery と MVC で実践する標準志向 Web 開発jQuery と MVC で実践する標準志向 Web 開発
jQuery と MVC で実践する標準志向 Web 開発Akira Inoue
 
基礎から見直す ASP.NET MVC の単体テスト自動化方法 ~ Windows Azure 関連もあるかも~
基礎から見直す ASP.NET MVC の単体テスト自動化方法 ~ Windows Azure 関連もあるかも~基礎から見直す ASP.NET MVC の単体テスト自動化方法 ~ Windows Azure 関連もあるかも~
基礎から見直す ASP.NET MVC の単体テスト自動化方法 ~ Windows Azure 関連もあるかも~normalian
 
20091030cakephphandson 01
20091030cakephphandson 0120091030cakephphandson 01
20091030cakephphandson 01Yusuke Ando
 
[公開用]Netラボ2012年2月勉強会 asp.netmvc4 beta新機能の紹介
[公開用]Netラボ2012年2月勉強会 asp.netmvc4 beta新機能の紹介[公開用]Netラボ2012年2月勉強会 asp.netmvc4 beta新機能の紹介
[公開用]Netラボ2012年2月勉強会 asp.netmvc4 beta新機能の紹介david9142
 
PowerShellを使用したWindows Serverの管理
PowerShellを使用したWindows Serverの管理PowerShellを使用したWindows Serverの管理
PowerShellを使用したWindows Serverの管理junichi anno
 
Windows ストアアプリのつくりかた (JS + HTML + CSS)
Windows ストアアプリのつくりかた (JS + HTML + CSS)Windows ストアアプリのつくりかた (JS + HTML + CSS)
Windows ストアアプリのつくりかた (JS + HTML + CSS)Yu Nobuoka
 
20120528 aws meister-reloaded-awssd-kforjava-public
20120528 aws meister-reloaded-awssd-kforjava-public20120528 aws meister-reloaded-awssd-kforjava-public
20120528 aws meister-reloaded-awssd-kforjava-publicAmazon Web Services Japan
 

Ähnlich wie 20090212 (20)

Spring mvc
Spring mvcSpring mvc
Spring mvc
 
Hokuriku.NET ASP.NET MVC入門 「実践」 20120825
Hokuriku.NET ASP.NET MVC入門 「実践」 20120825 Hokuriku.NET ASP.NET MVC入門 「実践」 20120825
Hokuriku.NET ASP.NET MVC入門 「実践」 20120825
 
ASP.NET MVC と jQuery で実践する標準志向 Web 開発
ASP.NET MVC と jQuery で実践する標準志向 Web 開発ASP.NET MVC と jQuery で実践する標準志向 Web 開発
ASP.NET MVC と jQuery で実践する標準志向 Web 開発
 
ASP.NET MVC 1.0
ASP.NET MVC 1.0ASP.NET MVC 1.0
ASP.NET MVC 1.0
 
Ajax basic
Ajax basicAjax basic
Ajax basic
 
jQuery と MVC で実践する標準志向 Web 開発
jQuery と MVC で実践する標準志向 Web 開発jQuery と MVC で実践する標準志向 Web 開発
jQuery と MVC で実践する標準志向 Web 開発
 
基礎から見直す ASP.NET MVC の単体テスト自動化方法 ~ Windows Azure 関連もあるかも~
基礎から見直す ASP.NET MVC の単体テスト自動化方法 ~ Windows Azure 関連もあるかも~基礎から見直す ASP.NET MVC の単体テスト自動化方法 ~ Windows Azure 関連もあるかも~
基礎から見直す ASP.NET MVC の単体テスト自動化方法 ~ Windows Azure 関連もあるかも~
 
20091030cakephphandson 01
20091030cakephphandson 0120091030cakephphandson 01
20091030cakephphandson 01
 
20080524
2008052420080524
20080524
 
[公開用]Netラボ2012年2月勉強会 asp.netmvc4 beta新機能の紹介
[公開用]Netラボ2012年2月勉強会 asp.netmvc4 beta新機能の紹介[公開用]Netラボ2012年2月勉強会 asp.netmvc4 beta新機能の紹介
[公開用]Netラボ2012年2月勉強会 asp.netmvc4 beta新機能の紹介
 
20100313
2010031320100313
20100313
 
20081003
2008100320081003
20081003
 
PowerShellを使用したWindows Serverの管理
PowerShellを使用したWindows Serverの管理PowerShellを使用したWindows Serverの管理
PowerShellを使用したWindows Serverの管理
 
Gwt1
Gwt1Gwt1
Gwt1
 
20050917
2005091720050917
20050917
 
Mvc conf session_1_osada
Mvc conf session_1_osadaMvc conf session_1_osada
Mvc conf session_1_osada
 
Clrh 110716 wcfwf
Clrh 110716 wcfwfClrh 110716 wcfwf
Clrh 110716 wcfwf
 
Windows ストアアプリのつくりかた (JS + HTML + CSS)
Windows ストアアプリのつくりかた (JS + HTML + CSS)Windows ストアアプリのつくりかた (JS + HTML + CSS)
Windows ストアアプリのつくりかた (JS + HTML + CSS)
 
Mvc conf session_4_ono
Mvc conf session_4_onoMvc conf session_4_ono
Mvc conf session_4_ono
 
20120528 aws meister-reloaded-awssd-kforjava-public
20120528 aws meister-reloaded-awssd-kforjava-public20120528 aws meister-reloaded-awssd-kforjava-public
20120528 aws meister-reloaded-awssd-kforjava-public
 

Mehr von 小野 修司 (17)

20100224
2010022420100224
20100224
 
20100218 lt
20100218 lt20100218 lt
20100218 lt
 
20100218
2010021820100218
20100218
 
20091207
2009120720091207
20091207
 
20090711
2009071120090711
20090711
 
20090418
2009041820090418
20090418
 
20090328
2009032820090328
20090328
 
20080627 2
20080627 220080627 2
20080627 2
 
20080627 1
20080627 120080627 1
20080627 1
 
20080213
2008021320080213
20080213
 
20080201
2008020120080201
20080201
 
20071204
2007120420071204
20071204
 
20071030
2007103020071030
20071030
 
20070310
2007031020070310
20070310
 
20061125
2006112520061125
20061125
 
20061122
2006112220061122
20061122
 
20060419
2006041920060419
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 フォームと共に利用することも可能