More Related Content What's hot (20)
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
Ma gician <Vue にはできないこと (1)> WeJS 37th
Eucen Stew
PDF
Ma_gician (世界中のフロントエンダーの残業時間を減らす、新しいフロントエンドフレームワーク)<詳細版>
Eucen Stew
PDF
こんなに使える!今どきのAPIドキュメンテーションツール
dcubeio
Viewers also liked (9)
PPTX
ASP.NET SPA開発をはじめよう~今と未来とステップアップ
慎一 古賀
Similar to ASP.NET MVC 1.0 (20)
PDF
Hokuriku.NET ASP.NET MVC入門 「実践」 20120825
miso- soup3
PDF
ASP.NET MVC のルーティング設定を少しだけ REST ぽくする
dany1468
PDF
[公開用]Netラボ2012年2月勉強会 asp.netmvc4 beta新機能の紹介
david9142
PDF
XAML と C# を使った Windows ストアアプリ(LOB)構築のためのtips Prism 4.5 & Kona project 等のご紹介
Shotaro Suzuki
More from Shinpei Ohtani (16)
PDF
Amazon Elastic MapReduce@Hadoop Conference Japan 2011 Fall
Shinpei Ohtani
Recently uploaded (8)
PDF
[Hardening Designers Confernece 2025]ランサムウェアでの見えざるログ・見えるログ
kataware
PDF
20250711_日本IBM ミドルウエア・ユーザー研究会(JIMUC)総会_中村会長資料.pdf
ChikakoInami1
ASP.NET MVC 1.02. 自己紹介 名前 おおたに しんぺい ブログ 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 をつかって規約で呼び出し先を決める 自分でルーティング先も変更可能 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> 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 = "Home", action = "Index", id = "" } // デフォルトの遷移先 ); 18. 基本的な仕組み(全体の流れ) ASP.NET の機能拡張のみで実装 エントリポイントは UrlRoutingModule(WebConfig) ASP.NET のルーティング機能を使う <httpModules> <add name=" UrlRoutingModule " type=" System.Web.Routing.UrlRoutingModule , … /> </httpModules> 20. 基本的な仕組み(全体の流れ) Global.asax.cs を読んでルーティングテーブル作成 UrlRoutingModule はテーブルから最初にマッチしたルーティングを適用する MvcRouteHandler が MvcHandler を作る MvcRouteHandler が ControllerFactory を使って Controller を作る Controller.Execute() 実行 View の結果とそのレンダリングを含む ViewResult の生成と実行 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 31. Views 生成機能 各 View はユースケースごと Controller 1つに対して、フォルダ1つ Controller の各アクションと View が 1 対 1 が基本 Controller の 各アクションに対応 33. View View は asp Inherits 指定で、 System.Web.Mvc.ViewPage <T> <%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits=" System.Web.Mvc.ViewPage<IEnumerable<MovieApp.Models.Movie>> " %> <asp:Content ID="Content1" ContentPlaceHolderID="head" runat="server"> <title>Index</title> </asp:Content> <asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server"> <h2>Index</h2> …… <% foreach (var item in Model) { %> <tr> <td> <%= Html.ActionLink("Edit", "Edit", new { /* id=item.PrimaryKey */ }) %> | <%= Html.ActionLink("Details", "Details", new { /* id=item.PrimaryKey */ })%> </td> <td> …… 34. ルーティング ルーティングは Global.asax.cs に記述 自分用に URL を自在に変更可能 カスタマイズする場合 MvcApplication.RegisterRoutes メソッドに記述 デフォルトルートよりも優先して記述 /hello/greeting/ 名前を /hello/ 名前に変更する場合 routes.MapRoute("helloid", " hello/{id}" , new { controller="Hello", action=”greeting", id="" }); 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 :小さいチーム 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