実践ドメイン駆動設計 (Object Oriented Selection)
- 作者: ヴァーン・ヴァーノン,高木正弘
- 出版社/メーカー: 翔泳社
- 発売日: 2015/03/17
- メディア: 大型本
- この商品を含むブログ (2件) を見る
- 作者: ヴァーン・ヴァーノン
- 出版社/メーカー: 翔泳社
- 発売日: 2015/03/19
- メディア: Kindle版
- この商品を含むブログを見る
コマンドクエリ責務分離(CQRS)
- 必要なデータを全てリポジトリから取得してユーザに表示するのが、難しいこともある
- ドメインを洗練させるほど、起きやすい
- リポジトリだけで解決するのはあまりやりたくない
- クライアント側で複数のリポジトリにアクセスさせ、必要なデータを組み合わせて「データ変換オブジェクト」に格納するという手が一つ
- リポジトリ上に特別なファインダを用意、一回の問い合わせで各地のデータを取りまとめる
- どちらもだめならUX設計に妥協が必要 => 人にやさしくないものが出来上がる
- CQRSというアーキテクチャパターンを導入
- DDDを採用したときのアーキテクチャパターンとして、なぜ適用するか?
- CQRSの構成要素
- クライアントとクエリプロセッサ
- クエリモデル
- 非正規化したデータモデル
- 表示用のデータだけ扱う
- データモデルがSQL DBだとすると、表示内容毎にテーブルを用意する(VIEWの意味? テーブルを別々につくる)
- 例をみると、テーブル自体を分けるので一般ユーザーからはマネージャの情報は見えず、マネージャからも一般ユーザーの情報は見えないとなっている
- 多分VIEWでいい
- クライアントからのコマンド実行
- コマンドプロセッサ
- 発行されたコマンドをうけとる
- 分類方式 => 分類毎にメソッドを宣言、シンプル
- 専用方式 => ハンドラ毎にひとつの責務
- メッセージング方式 => 非同期。便利だが、設計が複雑
- 個々のハンドラが他のハンドラに依存しないようにする