やってみよう!ASP.NET MVC #2

4,561 views

Published on

OITEC第6回勉強会-セッション3「やってみよう!ASP.NET MVC #2」
発表者:taknb2nch

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

No Downloads
Views
Total views
4,561
On SlideShare
0
From Embeds
0
Number of Embeds
451
Actions
Shares
0
Downloads
0
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

やってみよう!ASP.NET MVC #2

  1. 1. やってみよう! ASP.NET MVC #2 ASP.NET MVC 1.0 の復習と 2.0 の新機能
  2. 2. 自己紹介 <ul><li>HN : taknb2nch </li></ul><ul><li>本名 : はぎの たかのぶ </li></ul><ul><li>年齢 : 〇〇歳 </li></ul><ul><li>仕事 : フリーの何でも屋さん </li></ul><ul><ul><li>よく使う言語 :  JAVA 、 C# </li></ul></ul><ul><ul><li>好きなこと :  DB 設計、お客とのお話 </li></ul></ul><ul><ul><li>最近の仕事 : Eclipse と VisualStudio の両刀使い </li></ul></ul><ul><li>Twitter ほかボチボチやってます </li></ul><ul><ul><li>taknb2nch </li></ul></ul>
  3. 3. アジェンダ <ul><li>MVC について </li></ul><ul><li>ASP.NET MVC 1.0 </li></ul><ul><li>ASP.NET MVC 2.0 </li></ul><ul><li>デモ? </li></ul>
  4. 4. MVC について
  5. 5. MVC とは? <ul><li>デザインパターンのひとつ(ソフトウェアアーキテクチャ) </li></ul><ul><li>Model 、 View 、 Controller に分けて考える </li></ul>View Controller Model HTTP リクエスト HTTP レスポンス 1.HTTP リクエストを受ける 2. ルールに従いアクションを実行する 3. ビジネスロジックを実行 4. 表示する View を呼び出す 5. データを参照 6.HTTP レスポンスを返す
  6. 6. ASP.NET MVC 1.0
  7. 7. ASP.NET MVC 1.0 <ul><li>2009 年 4 月 RTM がリリース </li></ul><ul><li>VisualStudio2008 用の追加コンポーネント </li></ul><ul><li>.NET Framework3.5 sp1 で動作 </li></ul>
  8. 8. Model <ul><li>ビジネスロジックやデータアクセス処理等を実装 </li></ul><ul><li>POCO ( Plain Old CLR Object ) </li></ul><ul><li>Entity Framework </li></ul><ul><li>NHibernate </li></ul><ul><li>S2Dao.NET 、 DBFlute.NET </li></ul><ul><li>・・・ </li></ul>
  9. 9. View #1 <ul><li>見た目の部分を担う </li></ul><ul><li>HTML ヘルーパーを使う </li></ul><ul><ul><li>BeginForm 、 TextBox 、 CheckBox 、 ActionLink 、 Encode </li></ul></ul><ul><ul><li>Url.Content </li></ul></ul><ul><ul><li>自作ヘルパー </li></ul></ul><ul><li><% %> 、 <%= %> を使用しロジック、値を組み込む </li></ul><ul><ul><li>複雑なロジックを組み込むのは禁物、シンプルに </li></ul></ul><ul><li>強く型付けされた View を使用する </li></ul><ul><ul><li>IntelliSense も有効 </li></ul></ul><ul><ul><li>デフォルトは dynamic </li></ul></ul>
  10. 10. View #2 <ul><li>View エンジンの変更が可能 </li></ul><ul><ul><li>WebFormViewEngine->NVelocity 等 </li></ul></ul><ul><li>従来のマスターページを使用できる </li></ul>
  11. 11. Controller #1 <ul><li>リクエストを受けルーティングの定義をもとにコントローラの Action を実行する </li></ul><ul><li>Action 名 =View 名とする </li></ul><ul><ul><li>Action の戻り値で View 名を指定することも可能 </li></ul></ul><ul><li>public で ActionResult (派生)型の戻り値を持つメソッドが Action となる </li></ul><ul><ul><li>NonAction 属性をつけることで非 Action と認識 </li></ul></ul><ul><ul><li>View 、 Redirect 、 Content 、 File 、 Json 、 Empty ・・・ </li></ul></ul><ul><li>View から送信された値は Action メソッドの引数で受け取れる </li></ul><ul><ul><li>単純パラメータ、 FormCollection 、 ViewModel (推奨) </li></ul></ul>
  12. 12. Controller #2 <ul><li>フィルタ属性にて振る舞いを変更 </li></ul><ul><ul><li>認証フィルタ、 Action フィルタ、 Result フィルタ、例外フィルタ </li></ul></ul><ul><ul><li>自作フィルタ </li></ul></ul><ul><li>セレクタ属性 </li></ul><ul><li>Request 、 Response 、 Server 、 Session の組み込みオブジェクトは使用しない </li></ul><ul><ul><li>単体テストを行う際、これらのインスタンスが必要になる </li></ul></ul><ul><ul><li>設計方針によっては OK </li></ul></ul><ul><li>ビジネスロジックを書かない </li></ul><ul><ul><li>サービス層を設ける </li></ul></ul>
  13. 13. ASP.NET MVC 2.0
  14. 14. ASP.NET MVC 2.0 <ul><li>2010 年 3 月に VisualStudio2008sp1 向けに RTM リリース </li></ul><ul><li>VisualStudio2010 に標準搭載 </li></ul><ul><li>jQuery  1.4.1 がデフォルトでプロジェクトに含まれる </li></ul><ul><ul><li>IntelliSense も有効? </li></ul></ul>
  15. 15. 代表的な新機能 <ul><li>強く型付けされた HTML ヘルパー </li></ul><ul><li>DataAnnontation 属性 </li></ul><ul><li>Templated Helpers </li></ul><ul><li>Areas </li></ul><ul><li>Asynchronous Controllers </li></ul><ul><li>DefaultValueAttribute </li></ul><ul><li>RenderAction </li></ul><ul><li>バイナリ型のバインドをサポート </li></ul><ul><li>Http Method の再定義 </li></ul><ul><li>RequireHttpsAttribute アクションフィルタの追加 </li></ul><ul><li>・・・ </li></ul>
  16. 16. 強く型付けされた HTML ヘルパー <ul><li>Html.HogeFor メソッド </li></ul><ul><ul><li>TextBox 、 TextArea 、 DropDownList 、 CheckBox 、 RadioButton 、 ListBox 、 Password 、 Hidden 、 Label </li></ul></ul><ul><ul><li>Editor 、 Display 、 DisplayText 、 ValidationMessage </li></ul></ul><ul><li>引数はラムダ式で指定 </li></ul><ul><ul><li>Html.TextBox(“hoge”, model.Hoge) -> Html.TextBoxFor(model => model.Hoge) </li></ul></ul><ul><ul><li>コンパイル時にチェックできる </li></ul></ul><ul><ul><li>IntelliSense も有効 </li></ul></ul>
  17. 17. DataAnnontation 属性 <ul><li>対象の Model のプロパティに属性を設定 </li></ul><ul><ul><li>Ex : Required 、 Range 、 StringLength 、 RegularExpression </li></ul></ul><ul><li>独自の検証属性を作成することが可能 </li></ul><ul><ul><li>ValidationAttribute または既存の検証属性を継承 </li></ul></ul><ul><li>クライアントサイドの検証も可能 </li></ul><ul><ul><li>検証用 JavaScript が用意されている </li></ul></ul><ul><ul><li>jQuery 検証を有効にすることも可能 </li></ul></ul><ul><li>Controller や View の変更が不要 </li></ul>
  18. 18. Templated Helpers <ul><li>テンプレートによるヘルパーメソッドのカスタマイズ </li></ul><ul><li>ScaffoldUI ヘルパーが対象 </li></ul><ul><ul><li>Html.Display ()、 Html.DisplayFor ()、 Html.DisplayForModel ()、 </li></ul></ul><ul><ul><li>Html.Editor ()、 Html.EditorFor ()、 Html.EditorForModel () </li></ul></ul><ul><li>各 View 配下の DisplayTemplates フォルダ内の *.ascx </li></ul>
  19. 19. Areas <ul><li>MVC プロジェクト内でアプリケーションを分割 </li></ul><ul><li>各アプリケーション内でルーティングを設定 </li></ul><ul><ul><li>HogeAreaRegistration クラスで RegisterArea メソッドをオーバーライド </li></ul></ul><ul><li>Global.asax にて設定を有効にする </li></ul><ul><ul><li>AreaRegistration.RegisterAllAreas() </li></ul></ul>
  20. 20. Asynchronous Controllers <ul><li>非同期アクションの呼び出しを行う </li></ul><ul><ul><li>void HogeAsync() </li></ul></ul><ul><ul><li>ActionResult HogeCompleted() </li></ul></ul>
  21. 21. DefaultValueAttribute <ul><li>Controller のアクションメソッドの引数を省略可能 </li></ul><ul><li>オプション引数と名前付き引数 で代用可 </li></ul><ul><ul><li>C#4.0 で追加 </li></ul></ul>
  22. 22. RenderAction <ul><li>アクションを呼び出してページを部分レンダリング </li></ul><ul><li>RenderPartial とは異なる </li></ul><ul><ul><li>RenderPartial はアクションの結果を元に描画 </li></ul></ul><ul><ul><li>RenderAction はアクションを呼び出して描画 </li></ul></ul>
  23. 23. バイナリ型のバインドをサポート <ul><li>Binary 型、 byte[] 型のバインドが可能 </li></ul><ul><li>Html.HiddenFor() を使用 </li></ul><ul><li>Base64 でエンコードされた値が設定される </li></ul>
  24. 24. Http Method の再定義 <ul><li>1.0 では AcceptVerbs(HttpVerbs) の属性で設定 </li></ul><ul><ul><li>アクションメソッドに対して設定 </li></ul></ul><ul><ul><li>ブラウザによっては非対応のメソッドがある </li></ul></ul><ul><li>View で Html.HttpMethodOverride(HttpVerbs) を使用により非対応のブラウザに対応 </li></ul><ul><ul><li>X-HTTP-Method-Override という名前の hidden 項目が埋め込まれる </li></ul></ul><ul><ul><li>ただし、 POST によるリクエスト送信時のみ </li></ul></ul><ul><li>アクションでの属性設定が簡単に </li></ul><ul><ul><li>[AcceptVerbs(HttpVerbs.POST)] -> [HttpPost] </li></ul></ul>
  25. 25. RequireHttpsAttribute の追加 <ul><li>HTTPS でのアクセスのみ受け付ける </li></ul><ul><li>HTTP アクセスの場合は自動的に HTTPS にリダイレクト </li></ul>
  26. 26. 本日のまとめ <ul><li>2.0 の登場でより開発しやすくなった </li></ul><ul><ul><li>開発しやすい、効率が上がる </li></ul></ul><ul><li>1.0 の考え方、開発方法は押さえておく必要あり </li></ul><ul><ul><li>2.0 になっても基本的にはかわらない </li></ul></ul>
  27. 27. 参考資料 #1 <ul><li>ASP.NET MVC </li></ul><ul><ul><li>http://www.asp.net/mvc </li></ul></ul><ul><li>ASP.NET MVC 2 RTM ソースコード </li></ul><ul><ul><li>http://aspnet.codeplex.com/wikipage?title=MVC </li></ul></ul><ul><li>ScottGu's Blog </li></ul><ul><ul><li>http://weblogs.asp.net/scottgu/default.aspx </li></ul></ul><ul><li>you’ve been HAACKED </li></ul><ul><ul><li>http://haacked.com/ </li></ul></ul>
  28. 28. 参考資料 #2 <ul><li>ASP.NET MVC 実践プログラミング </li></ul><ul><ul><li>http://www.wings.msn.to/index.php/-/A-03/978-4-7980-2401-1/ </li></ul></ul><ul><li>Programming Microsoft ASP.NET MVC </li></ul><ul><ul><li>http://www.amazon.co.jp/Programming-Microsoft-ASP-NET-Dino-Esposito/dp/0735627142 </li></ul></ul>
  29. 29. ご静聴ありがとうございました

×