Your SlideShare is downloading. ×
0
ASP.NET MVC 1.0
ASP.NET MVC 1.0
ASP.NET MVC 1.0
ASP.NET MVC 1.0
ASP.NET MVC 1.0
ASP.NET MVC 1.0
ASP.NET MVC 1.0
ASP.NET MVC 1.0
ASP.NET MVC 1.0
ASP.NET MVC 1.0
ASP.NET MVC 1.0
ASP.NET MVC 1.0
ASP.NET MVC 1.0
ASP.NET MVC 1.0
ASP.NET MVC 1.0
ASP.NET MVC 1.0
ASP.NET MVC 1.0
ASP.NET MVC 1.0
ASP.NET MVC 1.0
ASP.NET MVC 1.0
ASP.NET MVC 1.0
ASP.NET MVC 1.0
ASP.NET MVC 1.0
ASP.NET MVC 1.0
ASP.NET MVC 1.0
ASP.NET MVC 1.0
ASP.NET MVC 1.0
ASP.NET MVC 1.0
ASP.NET MVC 1.0
ASP.NET MVC 1.0
ASP.NET MVC 1.0
ASP.NET MVC 1.0
ASP.NET MVC 1.0
ASP.NET MVC 1.0
ASP.NET MVC 1.0
ASP.NET MVC 1.0
ASP.NET MVC 1.0
ASP.NET MVC 1.0
ASP.NET MVC 1.0
ASP.NET MVC 1.0
ASP.NET MVC 1.0
ASP.NET MVC 1.0
ASP.NET MVC 1.0
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

ASP.NET MVC 1.0

21,531

Published on

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
21,531
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
21
Comments
0
Likes
1
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

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

×