Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

ぜい肉のないコントローラーをめざそう ASP.NET MVC

6,409 views

Published on

2012/06/09 Communiry Open Day
Hokuriku.NET

  • Be the first to comment

ぜい肉のないコントローラーをめざそう ASP.NET MVC

  1. 1. ぜい肉のないコントローラ をめざそう! C ASP.NET MV
  2. 2. 1.はじめに目的 ぜい肉のない美しいコントローラを、めざそう!ASP.NET MVC ・関心の分離を推進するフレームワーク。 ・MVCを選択したからといって、その心にそったコードが生 まれるわけではない。 ・特にコントローラの部分は、開発者の手によって様々な姿 にかわる。
  3. 3. 1.はじめに対象者 MVCのチュートリアルを終え、1~2回アプリを 作成した方 スピーカーについて MVCを1年ちょっと。 TDD twitter : @miso_soup3 blog : はてな miso_soup3
  4. 4. 目次 1. はじめに 2. ぜい肉のないコントローラ の作り方 3つのダイエット方法 3. まとめ
  5. 5. 2.ぜい肉のないコントローラの作り方そもそもコントローラ(アクションメソッド)の仕事ってなあに?1. 送信された入力データをうけとる2. タスクを実行する3. レスポンス用のビューモデルを準備する4. ビューを呼び出す → この4つがコントローラの主な役割
  6. 6. 2.ぜい肉のないコントローラの作り方これは避けたい・・・メタボなコントローラの例
  7. 7. 2.ぜい肉のないコントローラの作り方 ダイエット その1 モデルバインダー に任せる
  8. 8. 2.ぜい肉のないコントローラの作り方方法1 モデルバインダー コントローラの1つめの仕事である、 「送信された入力データをうけとる」、 これをモデルバインダーにお任せする。
  9. 9. 2.ぜい肉のないコントローラの作り方方法1 モデルバインダー
  10. 10. 2.ぜい肉のないコントローラの作り方 ダイエット その2 アクションフィルター ・セレクタ属性で フォロー
  11. 11. 2.ぜい肉のないコントローラの作り方方法2 アクションフィルター・セレクタ属性 メソッドに共通することは、アクション・セレクタ属性 を作成し、メソッドから追い出そう、ということ。
  12. 12. 2.ぜい肉のないコントローラの作り方方法2 アクションフィルター・セレクタ属性 [ AjaxOnly ]
  13. 13. 2.ぜい肉のないコントローラの作り方方法2 アクションフィルター・セレクタ属性[ AllowGetJson ]
  14. 14. 2.ぜい肉のないコントローラの作り方方法2 アクションフィルター・セレクタ属性 [ AcceptParameter ] [ NotAcceptParameter]
  15. 15. 2.ぜい肉のないコントローラの作り方方法2 アクションフィルター・セレクタ属性 [ AcceptParameter ] [ NotAcceptParameter]
  16. 16. 2.ぜい肉のないコントローラの作り方方法2 アクションフィルター・セレクタ属性
  17. 17. 2.ぜい肉のないコントローラの作り方方法2 アクションフィルター・セレクタ属性 OnActionExecuting OnActionExecuted OnResultExecuting メソッドから追い出そう OnResultExecuted
  18. 18. 2.ぜい肉のないコントローラの作り方 ダイエット その3 もう全部、 外部に委託しちゃう
  19. 19. 2.ぜい肉のないコントローラの作り方方法3 タスクの実行を外部へ コントローラの仕事の1つである、 「タスクの実行」、 これを、他の人にお願いする。 Service... Controller Repository... Handller...
  20. 20. 方法3 タスクの実行を外部へ 気をつけたいこと 2点
  21. 21. 2.ぜい肉のないコントローラの作り方方法3 タスクの実行を外部へ気をつけたいこと "依存性" Service... Controller Service... Handller...
  22. 22. 2.ぜい肉のないコントローラの作り方方法3 タスクの実行を外部へ気をつけたいこと"1つのメソッドからは1つの外部コンポーネントを利用する" Controller Service... アクションメソッド Service... Controller Controller Service... アクションメソッド Service...
  23. 23. 2.ぜい肉のないコントローラの作り方 方法3 タスクの実行を外部へどのように解決しているか?→サンプルを参考。下の3つは、すべて違う方法で、コントローラの記述がされている。(IoCフレームワーク:Unity, StructureMap, Autofac)ASP.NET Design Patterns - ASP.NET MVC 2 Case Study Starter Kithttp://aspnetdesignpatterns.codeplex.com/Project Silkhttp://silk.codeplex.com/EFMVC - ASP.NET MVC 4, Entity Framework 4.3 Code First and Windows Azurehttp://efmvc.codeplex.com/
  24. 24. まとめ
  25. 25. 3.まとめ モデルバインダーはここまで共通する処理は、アクション・セレクタ属性へ → 外部へ
  26. 26. 3.まとめ
  27. 27. 3.まとめダイエット方法 1. モデルバインダー 2. 共通する処理は、アクション・セレクタ属性へ 3. 外部に委託紹介した3つの方法だけで、とても品質のよいコントローラ を記述できる。大事なのは、美しさを追い求めるこころです!!
  28. 28. ぜい肉のない美しいコントローラにした先には・・・読みやすい、変更しやすい、など、心地よい開発体験がまっています。ここからは、想像になりますが・・・・コントローラを極めると、コードが宣言的なものだけになり、コントローラの単体テストがいらなくなるのではないか?もしくは、一発のコード自動生成で済むのではないか?と思います。コントローラの記述については、まだまだ考える必要があると思います。

×