Application Service
Application Serviceとは
Application Serviceは、一つのユースケースを進めるために、入出力、認可、Repository、Transaction、ドメインモデルの呼び出しを調整する役割です。業務上の判断そのものは持ちません。
Application Serviceには何を書く?
推奨
ユースケースの進行、入出力、認可、Repository呼び出し、Transaction境界を調整し、業務判断はドメインモデルへ委譲する。
なぜ
アプリケーションの手順とドメインルールを分けると、同じルールを別の入口から安全に再利用できます。
判断基準
- 処理の順序を組み立てる
- 外部I/Oを調整する
- ドメインオブジェクトの操作を呼び出す
BAD
Application Service内のif文だけでキャンセル期限や状態遷移を判定する。
GOOD
注文を取得し、order.cancel(reason)を呼び、保存してイベントを公開する。
図:責務と依存方向
Presentation
HTTP・画面の入出力
Application
ユースケースを進行
Domain
業務判断と不変条件
Infrastructure
DB・外部APIの実装
Application / Domainが定義したinterfaceを実装する ↑