SlideShare a Scribd company logo
ASP.NET MVC 1.0 おおたに しんぺい (shot)
自己紹介 名前 おおたに しんぺい ブログ http://d.hatena.ne.jp/shot6/ 所属 T2 プロジェクト http://t-2.googlecode.com 電通国際情報サービス http://www.isid.co.jp
本日のゴール ASP.NET MVC に興味をもってもらう REST 系フレームワーク時代の到来 ASP.NET MVC を通じて、 URL を使ったコンポーネントの呼び出し機能の実現方法 ASP.NET MVC の機能の説明
本日の目次 ASP.NET MVC とは 何故 ASP.NET MVC か ASP.NET MVC の機能 基本的な仕組み 機能 メリット・デメリット デモ まとめ
ASP.NET MVC とは .NET 環境で MVC を実現するフレームワーク 2009/03/17 に 1.0 リリース オープンソース http:// aspnet . codeplex .com/Release/ ProjectReleases . aspx ? ReleaseId =24471   からダウンロード可能
ASP.NET MVC とは .NET 3.5 で動作 コードは C#/VB.NET で記述可能 VisualStudio の拡張ツールもある VS2008 から。 規約にそって開発 ASP.NET のしがらみを受けない きれいな URL の実現 http:// hogehoge .com/ foo /account
ASP.NET MVC とは テスト駆動開発 最初からテスト駆動で開発できるようになっている ただし、 VS2008 Express では出来ない。 Ajax サポートの充実 jQuery と MS 独自の Ajax ライブラリ ASP.NET MVC で既に Ajax 用の仕組みが入る
何故 ASP.NET MVC か わかりやすい。 特に Struts などのアクションベース Web フレームワークに慣れている開発者は。 コードも比較的キレイです コードがオープンですぐにわかる。 拡張ポイントが多い 主要コンポーネントはほぼ全て拡張可能 ただし現状ドキュメント不足
何故 ASP.NET MVC か MS が本気! IDE の対応度合いが本気 ひな形プロジェクトの生成が可能 (VS2010 で標準へ ) テーブルからモデルを自動生成、そして Controller  の作成して結びつけるだけ 規約ベースの開発 URL をつかって規約で呼び出し先を決める 自分でルーティング先も変更可能
ASP.NET MVC の機能 基本的な仕組み 機能
ASP.NET MVC の機能 基本的な仕組み 機能
基本的な仕組み (MVC) 基本は MVC 構成 Model はテーブルのエンティティ 基本自動生成したものに手を加えるっぽい 見たサンプルでは Repository パターンもあった かつ、プレゼンテーションモデルもある View は aspx 親クラスは ViewPage<Model> Controller は IController のサブクラス フロントコントローラパターン
基本的な仕組み (MVC) Model View Controller <<framework>> IController View は Model を 知っている Controller は Model を View と 関連づける <<framework>> ViewPage<T>
基本的な仕組み (ASP.NET) ASP.NET との関係 ASP.NET 上に搭載されている。 ViewState は使わず ASP.NET の WebForm でなく、独自の Form よりユーザがコントローラブルなのが特徴
基本的な仕組み( URL マッチ) URL と Controller の規約 http:// ドメイン名 / コントローラ名 / アクション名 / パラメータ コントローラ名 HogeController -> Hoge になる アクション名 メソッド名そのまま パラメータ メソッドの引数になる
基本的な仕組み( URL マッチ) どうして URL とコントローラがマッピングされるのか? そういう設定がされている。 ASP.MVC プロジェクトではルーティング設定を設定するコードが生成される Global.aspx.cs に記述 ルーティング設定を拡張すれば、独自に設定する事も可能
基本的な仕組み( URL マッチ) デフォルトマッピングはこんな感じ -> つまり / コントローラ名 / アクション名 /… となる routes.MapRoute( “ Default”,  //  このルーティング設定の名前 “ {controller}/{action}/{id} ”,  // URL  の形式 new { controller = &quot;Home&quot;, action = &quot;Index&quot;, id = &quot;&quot; }  //  デフォルトの遷移先 );
基本的な仕組み(全体の流れ) ASP.NET の機能拡張のみで実装 エントリポイントは UrlRoutingModule(WebConfig) ASP.NET のルーティング機能を使う <httpModules> <add name=&quot; UrlRoutingModule &quot;  type=&quot; System.Web.Routing.UrlRoutingModule , … /> </httpModules>
基本的な仕組み(全体の流れ) つまり、、、 UrlRoutingModule MvcHandler
基本的な仕組み(全体の流れ) Global.asax.cs を読んでルーティングテーブル作成 UrlRoutingModule はテーブルから最初にマッチしたルーティングを適用する MvcRouteHandler が MvcHandler を作る MvcRouteHandler が ControllerFactory を使って Controller を作る Controller.Execute() 実行 View の結果とそのレンダリングを含む ViewResult の生成と実行
ASP.NET MVC の機能 基本的な仕組み 機能
Controller 生成機能 何はなくても Visual Studio ASP.NET MVC プロジェクトの生成
Controller 生成機能 Controllers Controller クラスをおく
Controller 生成機能 Controllers Controller クラスは VS で簡単に追加できる 決めるのは Controller 名 CRUD のどの操作の機能を足すか->自動生成
Controller 生成された Controller Controller クラスは System.Web.Mvc.Controller の子クラス アクションメソッドの戻り値は ActionResult 実質上は View においてある、 aspx を指定 標準的な出力されるメソッドは、 Index :  一覧表示(デフォルト呼び出し) Details :  詳細画面表示 Create :  モデルの新規追加 Edit :  既存モデルの修正
Controller の抜粋 public class HogeController : Controller { public ActionResult Index() { return  View() ;//Index.aspx に遷移したいと判断 } [AcceptVerbs(HttpVerbs.Post)] public ActionResult Create(FormCollection collection) { try { return  RedirectToAction(“Index”) ;//IndexController に委譲 } catch { return View(); } } }
Controller が返す ActionResult ActionResult 返すべき View の形とそのレンダリング方法を示す ViewResult 最も標準的なレスポンス。呼び出したメソッド名 RedirectToAction(“controller”) 該当コントローラにリダイレクト JsonResult FileContentResult FileStreamResult
Model 生成機能 Models Model クラスをおく
Model 生成機能 Model は RDBMS のエンティティ ADO.NET Entity や LINQ to SQL など選択可能
Views 生成機能 View は Views フォルダに配置する Views は階層構造になる
Views 生成機能 各 View はユースケースごと Controller 1つに対して、フォルダ1つ Controller の各アクションと View が 1 対 1 が基本 Controller の 各アクションに対応
Views 生成機能 Controller から自動生成も可能 Controller のアクション内で View の生成 View の名前 View で使うモデルと CRUD 種類を指定
View View は asp Inherits 指定で、 System.Web.Mvc.ViewPage <T> <%@ Page Title=&quot;&quot; Language=&quot;C#&quot; MasterPageFile=&quot;~/Views/Shared/Site.Master&quot;  Inherits=&quot; System.Web.Mvc.ViewPage<IEnumerable<MovieApp.Models.Movie>> &quot; %> <asp:Content ID=&quot;Content1&quot; ContentPlaceHolderID=&quot;head&quot; runat=&quot;server&quot;> <title>Index</title> </asp:Content> <asp:Content ID=&quot;Content2&quot; ContentPlaceHolderID=&quot;MainContent&quot; runat=&quot;server&quot;> <h2>Index</h2> …… <% foreach (var item in Model) { %> <tr> <td> <%= Html.ActionLink(&quot;Edit&quot;, &quot;Edit&quot;, new { /* id=item.PrimaryKey */ }) %> | <%= Html.ActionLink(&quot;Details&quot;, &quot;Details&quot;, new { /* id=item.PrimaryKey */ })%> </td> <td> ……
ルーティング ルーティングは Global.asax.cs に記述 自分用に URL を自在に変更可能 カスタマイズする場合 MvcApplication.RegisterRoutes メソッドに記述 デフォルトルートよりも優先して記述 /hello/greeting/ 名前を /hello/ 名前に変更する場合 routes.MapRoute(&quot;helloid&quot;, &quot; hello/{id}&quot; , new { controller=&quot;Hello&quot;, action=”greeting&quot;, id=&quot;&quot; });
メリット・デメリット メリット 非常にわかりやすい アクションドリブン 小さく使いやすい コントローラブルでパフォーマンスも良好 Java の Web アプリ開発者からの移行はスムーズに出来る
メリット・デメリット デメリット 逆に ASP.NET に慣れている人にはつらい イベントドリブン リッチな画面を作るには別途 Control を作る 従来の ASP.NET 資産の移行がどの程度できるかわからない URL 設計が必要になる
MVC  対  ASP ASP.NET MVC vs ASP.NET(By MS) コントローラ MVC :フロントコントローラ ASP :ページコントローラ 状態 MVC: ステートレス( ViewState なし) ASP :ステートフル( ViewState あり) チームの適用規模 MVC: 大きいチーム ASP :小さいチーム
デモ よくある CRUD 系アプリケーション
余談 .NET 開発もいよいよ本格的にオープンに。 時代は変わった。 REST 系への力の入れ具合が伺える REST ライクなフレームワークが、これからの主流。 コードハック的な話 ASP.NET MVC はソースも小さく読みやすい 現状16000ステップ程度 ASP.NET の拡張としても良い例
余談2 こんな感じで調べました。 もし欲しいという人いたら後で教えてください
まとめ ASP.NET MVC 良い! Java 屋観点からすると使いやすい ASP.NET にあった、とっつきにくさが無い IDE も対応してるので、非常に楽。 今後の .NET での Web 開発のデファクトになる可能性が高い -> とりあえず はじめてみよう  MVC
参考文献 ASP.NET MVC サイト http://www.asp.net/ mvc / Scott Gu さんのブログ http:// weblogs .asp.net/ scottgu / IIS & ASP.NET Routing http://learn. iis .net/page. aspx /496/ iis-url-rewriting-and-aspnet-routing / ASP.NET Routing http://msdn.microsoft.com/en-us/library/cc668201.aspx
おわり      どうもありがとうございました。

More Related Content

What's hot (20)

PPTX
Angular js はまりどころ
Ayumi Goto
 
PDF
AngularJSの高速化
Kon Yuichi
 
PDF
Angular.jsについてちょっとしゃべる
Masashi Haga
 
PDF
Isomorphic web development with scala and scala.js
TanUkkii
 
PDF
Ma gician <wide version> @meguro.es 2019/10/10
Eucen Stew
 
PPTX
チュートリアルではじめるVue.js
小川 昌吾
 
PDF
Vue.js入門
Takuya Sato
 
PDF
Alt01-LT
Yuta Hiroto
 
PDF
Ma gician <Vue にはできないこと (1)> WeJS 37th
Eucen Stew
 
PDF
Ma_gician (世界中のフロントエンダーの残業時間を減らす、新しいフロントエンドフレームワーク)<詳細版>
Eucen Stew
 
PPTX
React を導入した フロントエンド開発
daisuke-a-matsui
 
PPTX
Vue.js 2.0を試してみた
Toshiro Shimizu
 
PDF
One night Vue.js
Masahiro Kyuden
 
PDF
こんなに使える!今どきのAPIドキュメンテーションツール
dcubeio
 
PDF
traceur-compilerで ECMAScript6を体験
Toshio Ehara
 
PDF
はじめてのVue.js
kamiyam .
 
PPTX
ASP.NET MVCとEntity Frameworkで作ってみた
Kentaro Inomata
 
PDF
Koa.js_エンジニア勉強会20140328
エンジニア勉強会 エスキュービズム
 
PDF
Vue.jsでさくっとMVVM
Satoshi Anai
 
PPTX
20160927 reactmeetup
Naoki Kurosawa
 
Angular js はまりどころ
Ayumi Goto
 
AngularJSの高速化
Kon Yuichi
 
Angular.jsについてちょっとしゃべる
Masashi Haga
 
Isomorphic web development with scala and scala.js
TanUkkii
 
Ma gician <wide version> @meguro.es 2019/10/10
Eucen Stew
 
チュートリアルではじめるVue.js
小川 昌吾
 
Vue.js入門
Takuya Sato
 
Alt01-LT
Yuta Hiroto
 
Ma gician <Vue にはできないこと (1)> WeJS 37th
Eucen Stew
 
Ma_gician (世界中のフロントエンダーの残業時間を減らす、新しいフロントエンドフレームワーク)<詳細版>
Eucen Stew
 
React を導入した フロントエンド開発
daisuke-a-matsui
 
Vue.js 2.0を試してみた
Toshiro Shimizu
 
One night Vue.js
Masahiro Kyuden
 
こんなに使える!今どきのAPIドキュメンテーションツール
dcubeio
 
traceur-compilerで ECMAScript6を体験
Toshio Ehara
 
はじめてのVue.js
kamiyam .
 
ASP.NET MVCとEntity Frameworkで作ってみた
Kentaro Inomata
 
Koa.js_エンジニア勉強会20140328
エンジニア勉強会 エスキュービズム
 
Vue.jsでさくっとMVVM
Satoshi Anai
 
20160927 reactmeetup
Naoki Kurosawa
 

Viewers also liked (9)

PPT
Struts2 in a nutshell
Shinpei Ohtani
 
PDF
はじめての ASP.NET MVC
jz5 MATSUE
 
PDF
ASP.NET シングル ページ アプリケーション (SPA) 詳説
Akira Inoue
 
PPTX
ASP.NET SPA開発をはじめよう~今と未来とステップアップ
慎一 古賀
 
PDF
絶対に描いてはいけないグラフ入りスライド24枚
itoyan110
 
PDF
しょぼいプレゼンをパワポのせいにするな! by @jessedee
「MakeLeaps」請求書の作成、管理、郵送
 
KEY
ノンデザイナーのための配色理論
tsukasa obara
 
PPT
色彩センスのいらない配色講座
Mariko Yamaguchi
 
PDF
見やすいプレゼン資料の作り方 - リニューアル増量版
MOCKS | Yuta Morishige
 
Struts2 in a nutshell
Shinpei Ohtani
 
はじめての ASP.NET MVC
jz5 MATSUE
 
ASP.NET シングル ページ アプリケーション (SPA) 詳説
Akira Inoue
 
ASP.NET SPA開発をはじめよう~今と未来とステップアップ
慎一 古賀
 
絶対に描いてはいけないグラフ入りスライド24枚
itoyan110
 
しょぼいプレゼンをパワポのせいにするな! by @jessedee
「MakeLeaps」請求書の作成、管理、郵送
 
ノンデザイナーのための配色理論
tsukasa obara
 
色彩センスのいらない配色講座
Mariko Yamaguchi
 
見やすいプレゼン資料の作り方 - リニューアル増量版
MOCKS | Yuta Morishige
 
Ad

Similar to ASP.NET MVC 1.0 (20)

PDF
Pro aspnetmvc3framework chap11
Hideki Hashizume
 
PDF
Hokuriku.NET ASP.NET MVC入門 「実践」 20120825
miso- soup3
 
PPT
20090212
小野 修司
 
PDF
Asp Net Mvc 基礎のキソ
Yoshitaka Seo
 
PDF
ASP.NET MVC のルーティング設定を少しだけ REST ぽくする
dany1468
 
PPTX
20080630
小野 修司
 
PDF
ASP.NET MVC 2 ~新機能の紹介~
Yoshitaka Seo
 
PDF
ASP.NET MVC と jQuery で実践する標準志向 Web 開発
Akira Inoue
 
PPT
T35 ASP.NET MVCを使ったTDD入門
normalian
 
PDF
Pro aspnetmvc3framework chap15
Hideki Hashizume
 
PPT
やってみよう!ASP.NET MVC #2
Tadahiro Higuchi
 
PDF
最新 ASP.NET Web 開発オーバービュー
Akira Inoue
 
PDF
Introduction for Browser Side MVC
Ryunosuke SATO
 
PDF
Mvc conf session_1_osada
Hiroshi Okunushi
 
PDF
[公開用]Netラボ2012年2月勉強会 asp.netmvc4 beta新機能の紹介
david9142
 
PPT
20090606
小野 修司
 
PPTX
はじめてのASP.NET MVC5
Tomo Mizoe
 
PDF
XAML と C# を使った Windows ストアアプリ(LOB)構築のためのtips Prism 4.5 & Kona project 等のご紹介
Shotaro Suzuki
 
PDF
ASP.NET MVC Part 2
Yoshitaka Seo
 
PPTX
20120425
小野 修司
 
Pro aspnetmvc3framework chap11
Hideki Hashizume
 
Hokuriku.NET ASP.NET MVC入門 「実践」 20120825
miso- soup3
 
20090212
小野 修司
 
Asp Net Mvc 基礎のキソ
Yoshitaka Seo
 
ASP.NET MVC のルーティング設定を少しだけ REST ぽくする
dany1468
 
20080630
小野 修司
 
ASP.NET MVC 2 ~新機能の紹介~
Yoshitaka Seo
 
ASP.NET MVC と jQuery で実践する標準志向 Web 開発
Akira Inoue
 
T35 ASP.NET MVCを使ったTDD入門
normalian
 
Pro aspnetmvc3framework chap15
Hideki Hashizume
 
やってみよう!ASP.NET MVC #2
Tadahiro Higuchi
 
最新 ASP.NET Web 開発オーバービュー
Akira Inoue
 
Introduction for Browser Side MVC
Ryunosuke SATO
 
Mvc conf session_1_osada
Hiroshi Okunushi
 
[公開用]Netラボ2012年2月勉強会 asp.netmvc4 beta新機能の紹介
david9142
 
20090606
小野 修司
 
はじめてのASP.NET MVC5
Tomo Mizoe
 
XAML と C# を使った Windows ストアアプリ(LOB)構築のためのtips Prism 4.5 & Kona project 等のご紹介
Shotaro Suzuki
 
ASP.NET MVC Part 2
Yoshitaka Seo
 
20120425
小野 修司
 
Ad

More from Shinpei Ohtani (16)

PDF
Amazon Aurora
Shinpei Ohtani
 
PDF
AWS Lambda and Amazon API Gateway
Shinpei Ohtani
 
PDF
ECS for Docker Meetup #4
Shinpei Ohtani
 
PDF
JVM的な何か@JVM Operation Casual Talk
Shinpei Ohtani
 
PDF
Amazon kinesisで広がるリアルタイムデータプロセッシングとその未来
Shinpei Ohtani
 
PDF
Amazon Elastic MapReduce@Hadoop Conference Japan 2011 Fall
Shinpei Ohtani
 
PDF
プログラマブルクラウドの薦め
Shinpei Ohtani
 
PDF
サンプルから見るMapReduceコード
Shinpei Ohtani
 
PPTX
Hadoopソースリーディング第1回アジェンダ
Shinpei Ohtani
 
PDF
サンプルから見るMap reduceコード
Shinpei Ohtani
 
PPTX
Hadoopソースリーディング第1回アジェンダ
Shinpei Ohtani
 
PPT
はやわかりHadoop
Shinpei Ohtani
 
PPT
T2 Web Framework
Shinpei Ohtani
 
PDF
T2 Hacks
Shinpei Ohtani
 
PDF
T2 webframework
Shinpei Ohtani
 
PPT
Struts2を始めよう!
Shinpei Ohtani
 
Amazon Aurora
Shinpei Ohtani
 
AWS Lambda and Amazon API Gateway
Shinpei Ohtani
 
ECS for Docker Meetup #4
Shinpei Ohtani
 
JVM的な何か@JVM Operation Casual Talk
Shinpei Ohtani
 
Amazon kinesisで広がるリアルタイムデータプロセッシングとその未来
Shinpei Ohtani
 
Amazon Elastic MapReduce@Hadoop Conference Japan 2011 Fall
Shinpei Ohtani
 
プログラマブルクラウドの薦め
Shinpei Ohtani
 
サンプルから見るMapReduceコード
Shinpei Ohtani
 
Hadoopソースリーディング第1回アジェンダ
Shinpei Ohtani
 
サンプルから見るMap reduceコード
Shinpei Ohtani
 
Hadoopソースリーディング第1回アジェンダ
Shinpei Ohtani
 
はやわかりHadoop
Shinpei Ohtani
 
T2 Web Framework
Shinpei Ohtani
 
T2 Hacks
Shinpei Ohtani
 
T2 webframework
Shinpei Ohtani
 
Struts2を始めよう!
Shinpei Ohtani
 

Recently uploaded (8)

PDF
Hyperledger Fabric最新v3.x系での機能強化、変更点にキャッチアップ!
LFDT Tokyo Meetup
 
PDF
[Hardening Designers Confernece 2025]ランサムウェアでの見えざるログ・見えるログ
kataware
 
PDF
人気ブロックチェーン基盤「Hyperledger Fabric」最新版を動かしてみた!
LFDT Tokyo Meetup
 
PDF
20250711_日本IBM ミドルウエア・ユーザー研究会(JIMUC)総会_中村会長資料.pdf
ChikakoInami1
 
PDF
PostgreSQL18新機能紹介(db tech showcase 2025 発表資料)
NTT DATA Technology & Innovation
 
PDF
20250710_Devinで切り拓くDB革命_〜価値創出に集中せよ〜.pdf
Masaki Yamakawa
 
PDF
プライバシ保護のためのインターネットアーキテクチャの進化 (2025-07-11)
Jun Kurihara
 
PDF
Hyperledger Fabric公式サンプル fabric-samples徹底解説
LFDT Tokyo Meetup
 
Hyperledger Fabric最新v3.x系での機能強化、変更点にキャッチアップ!
LFDT Tokyo Meetup
 
[Hardening Designers Confernece 2025]ランサムウェアでの見えざるログ・見えるログ
kataware
 
人気ブロックチェーン基盤「Hyperledger Fabric」最新版を動かしてみた!
LFDT Tokyo Meetup
 
20250711_日本IBM ミドルウエア・ユーザー研究会(JIMUC)総会_中村会長資料.pdf
ChikakoInami1
 
PostgreSQL18新機能紹介(db tech showcase 2025 発表資料)
NTT DATA Technology & Innovation
 
20250710_Devinで切り拓くDB革命_〜価値創出に集中せよ〜.pdf
Masaki Yamakawa
 
プライバシ保護のためのインターネットアーキテクチャの進化 (2025-07-11)
Jun Kurihara
 
Hyperledger Fabric公式サンプル fabric-samples徹底解説
LFDT Tokyo Meetup
 

ASP.NET MVC 1.0

  • 1. ASP.NET MVC 1.0 おおたに しんぺい (shot)
  • 2. 自己紹介 名前 おおたに しんぺい ブログ http://d.hatena.ne.jp/shot6/ 所属 T2 プロジェクト http://t-2.googlecode.com 電通国際情報サービス http://www.isid.co.jp
  • 3. 本日のゴール ASP.NET MVC に興味をもってもらう REST 系フレームワーク時代の到来 ASP.NET MVC を通じて、 URL を使ったコンポーネントの呼び出し機能の実現方法 ASP.NET MVC の機能の説明
  • 4. 本日の目次 ASP.NET MVC とは 何故 ASP.NET MVC か ASP.NET MVC の機能 基本的な仕組み 機能 メリット・デメリット デモ まとめ
  • 5. ASP.NET MVC とは .NET 環境で MVC を実現するフレームワーク 2009/03/17 に 1.0 リリース オープンソース http:// aspnet . codeplex .com/Release/ ProjectReleases . aspx ? ReleaseId =24471 からダウンロード可能
  • 6. ASP.NET MVC とは .NET 3.5 で動作 コードは C#/VB.NET で記述可能 VisualStudio の拡張ツールもある VS2008 から。 規約にそって開発 ASP.NET のしがらみを受けない きれいな URL の実現 http:// hogehoge .com/ foo /account
  • 7. ASP.NET MVC とは テスト駆動開発 最初からテスト駆動で開発できるようになっている ただし、 VS2008 Express では出来ない。 Ajax サポートの充実 jQuery と MS 独自の Ajax ライブラリ ASP.NET MVC で既に Ajax 用の仕組みが入る
  • 8. 何故 ASP.NET MVC か わかりやすい。 特に Struts などのアクションベース Web フレームワークに慣れている開発者は。 コードも比較的キレイです コードがオープンですぐにわかる。 拡張ポイントが多い 主要コンポーネントはほぼ全て拡張可能 ただし現状ドキュメント不足
  • 9. 何故 ASP.NET MVC か MS が本気! IDE の対応度合いが本気 ひな形プロジェクトの生成が可能 (VS2010 で標準へ ) テーブルからモデルを自動生成、そして Controller の作成して結びつけるだけ 規約ベースの開発 URL をつかって規約で呼び出し先を決める 自分でルーティング先も変更可能
  • 10. ASP.NET MVC の機能 基本的な仕組み 機能
  • 11. ASP.NET MVC の機能 基本的な仕組み 機能
  • 12. 基本的な仕組み (MVC) 基本は MVC 構成 Model はテーブルのエンティティ 基本自動生成したものに手を加えるっぽい 見たサンプルでは Repository パターンもあった かつ、プレゼンテーションモデルもある View は aspx 親クラスは ViewPage<Model> Controller は IController のサブクラス フロントコントローラパターン
  • 13. 基本的な仕組み (MVC) Model View Controller <<framework>> IController View は Model を 知っている Controller は Model を View と 関連づける <<framework>> ViewPage<T>
  • 14. 基本的な仕組み (ASP.NET) ASP.NET との関係 ASP.NET 上に搭載されている。 ViewState は使わず ASP.NET の WebForm でなく、独自の Form よりユーザがコントローラブルなのが特徴
  • 15. 基本的な仕組み( URL マッチ) URL と Controller の規約 http:// ドメイン名 / コントローラ名 / アクション名 / パラメータ コントローラ名 HogeController -> Hoge になる アクション名 メソッド名そのまま パラメータ メソッドの引数になる
  • 16. 基本的な仕組み( URL マッチ) どうして URL とコントローラがマッピングされるのか? そういう設定がされている。 ASP.MVC プロジェクトではルーティング設定を設定するコードが生成される Global.aspx.cs に記述 ルーティング設定を拡張すれば、独自に設定する事も可能
  • 17. 基本的な仕組み( URL マッチ) デフォルトマッピングはこんな感じ -> つまり / コントローラ名 / アクション名 /… となる routes.MapRoute( “ Default”, // このルーティング設定の名前 “ {controller}/{action}/{id} ”, // URL の形式 new { controller = &quot;Home&quot;, action = &quot;Index&quot;, id = &quot;&quot; } // デフォルトの遷移先 );
  • 18. 基本的な仕組み(全体の流れ) ASP.NET の機能拡張のみで実装 エントリポイントは UrlRoutingModule(WebConfig) ASP.NET のルーティング機能を使う <httpModules> <add name=&quot; UrlRoutingModule &quot; type=&quot; System.Web.Routing.UrlRoutingModule , … /> </httpModules>
  • 20. 基本的な仕組み(全体の流れ) Global.asax.cs を読んでルーティングテーブル作成 UrlRoutingModule はテーブルから最初にマッチしたルーティングを適用する MvcRouteHandler が MvcHandler を作る MvcRouteHandler が ControllerFactory を使って Controller を作る Controller.Execute() 実行 View の結果とそのレンダリングを含む ViewResult の生成と実行
  • 21. ASP.NET MVC の機能 基本的な仕組み 機能
  • 22. Controller 生成機能 何はなくても Visual Studio ASP.NET MVC プロジェクトの生成
  • 23. Controller 生成機能 Controllers Controller クラスをおく
  • 24. Controller 生成機能 Controllers Controller クラスは VS で簡単に追加できる 決めるのは Controller 名 CRUD のどの操作の機能を足すか->自動生成
  • 25. Controller 生成された Controller Controller クラスは System.Web.Mvc.Controller の子クラス アクションメソッドの戻り値は ActionResult 実質上は View においてある、 aspx を指定 標準的な出力されるメソッドは、 Index : 一覧表示(デフォルト呼び出し) Details : 詳細画面表示 Create : モデルの新規追加 Edit : 既存モデルの修正
  • 26. Controller の抜粋 public class HogeController : Controller { public ActionResult Index() { return View() ;//Index.aspx に遷移したいと判断 } [AcceptVerbs(HttpVerbs.Post)] public ActionResult Create(FormCollection collection) { try { return RedirectToAction(“Index”) ;//IndexController に委譲 } catch { return View(); } } }
  • 27. Controller が返す ActionResult ActionResult 返すべき View の形とそのレンダリング方法を示す ViewResult 最も標準的なレスポンス。呼び出したメソッド名 RedirectToAction(“controller”) 該当コントローラにリダイレクト JsonResult FileContentResult FileStreamResult
  • 28. Model 生成機能 Models Model クラスをおく
  • 29. Model 生成機能 Model は RDBMS のエンティティ ADO.NET Entity や LINQ to SQL など選択可能
  • 30. Views 生成機能 View は Views フォルダに配置する Views は階層構造になる
  • 31. Views 生成機能 各 View はユースケースごと Controller 1つに対して、フォルダ1つ Controller の各アクションと View が 1 対 1 が基本 Controller の 各アクションに対応
  • 32. Views 生成機能 Controller から自動生成も可能 Controller のアクション内で View の生成 View の名前 View で使うモデルと CRUD 種類を指定
  • 33. View View は asp Inherits 指定で、 System.Web.Mvc.ViewPage <T> <%@ Page Title=&quot;&quot; Language=&quot;C#&quot; MasterPageFile=&quot;~/Views/Shared/Site.Master&quot; Inherits=&quot; System.Web.Mvc.ViewPage<IEnumerable<MovieApp.Models.Movie>> &quot; %> <asp:Content ID=&quot;Content1&quot; ContentPlaceHolderID=&quot;head&quot; runat=&quot;server&quot;> <title>Index</title> </asp:Content> <asp:Content ID=&quot;Content2&quot; ContentPlaceHolderID=&quot;MainContent&quot; runat=&quot;server&quot;> <h2>Index</h2> …… <% foreach (var item in Model) { %> <tr> <td> <%= Html.ActionLink(&quot;Edit&quot;, &quot;Edit&quot;, new { /* id=item.PrimaryKey */ }) %> | <%= Html.ActionLink(&quot;Details&quot;, &quot;Details&quot;, new { /* id=item.PrimaryKey */ })%> </td> <td> ……
  • 34. ルーティング ルーティングは Global.asax.cs に記述 自分用に URL を自在に変更可能 カスタマイズする場合 MvcApplication.RegisterRoutes メソッドに記述 デフォルトルートよりも優先して記述 /hello/greeting/ 名前を /hello/ 名前に変更する場合 routes.MapRoute(&quot;helloid&quot;, &quot; hello/{id}&quot; , new { controller=&quot;Hello&quot;, action=”greeting&quot;, id=&quot;&quot; });
  • 35. メリット・デメリット メリット 非常にわかりやすい アクションドリブン 小さく使いやすい コントローラブルでパフォーマンスも良好 Java の Web アプリ開発者からの移行はスムーズに出来る
  • 36. メリット・デメリット デメリット 逆に ASP.NET に慣れている人にはつらい イベントドリブン リッチな画面を作るには別途 Control を作る 従来の ASP.NET 資産の移行がどの程度できるかわからない URL 設計が必要になる
  • 37. MVC 対 ASP ASP.NET MVC vs ASP.NET(By MS) コントローラ MVC :フロントコントローラ ASP :ページコントローラ 状態 MVC: ステートレス( ViewState なし) ASP :ステートフル( ViewState あり) チームの適用規模 MVC: 大きいチーム ASP :小さいチーム
  • 38. デモ よくある CRUD 系アプリケーション
  • 39. 余談 .NET 開発もいよいよ本格的にオープンに。 時代は変わった。 REST 系への力の入れ具合が伺える REST ライクなフレームワークが、これからの主流。 コードハック的な話 ASP.NET MVC はソースも小さく読みやすい 現状16000ステップ程度 ASP.NET の拡張としても良い例
  • 41. まとめ ASP.NET MVC 良い! Java 屋観点からすると使いやすい ASP.NET にあった、とっつきにくさが無い IDE も対応してるので、非常に楽。 今後の .NET での Web 開発のデファクトになる可能性が高い -> とりあえず はじめてみよう MVC
  • 42. 参考文献 ASP.NET MVC サイト http://www.asp.net/ mvc / Scott Gu さんのブログ http:// weblogs .asp.net/ scottgu / IIS & ASP.NET Routing http://learn. iis .net/page. aspx /496/ iis-url-rewriting-and-aspnet-routing / ASP.NET Routing http://msdn.microsoft.com/en-us/library/cc668201.aspx