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