/note/tech
- 伝統的レイヤードアーキテクチャ
- BusinessLogic層に文字通りすべてのビジネスロジックを凝集するという設計
- DataAccess層の存在でモデリングの中心がDBになり、業務的なモデリングが阻害されがち
- BusinessLogic層がファットになりがち
- 結果、長く運用しているほどメンテが辛くなって行きがち
- EricEvansのドメイン駆動で提案されたアーキテクチャ
- モデリングのしやすさは改善されたが、Domain層がInfrastructure層に依存している
- オニオンアーキテクチャ
- 依存関係は上から下へのみ許可される
- 依存関係を逆転させる
- ローレベルなレイヤを実装してからハイレベルなレイヤに依存させるのではなく、ハイレベルなレイヤが公開したInterfaceに基づいてローレベルレイヤが実装する
- DomainModel、Applicationが常に独立した形で書け、その単位で品質保証をすることができる
- [MEMO]
- テスト戦略
- 最低限ApplicationServiceに対する結合テストのみ実装するのが費用対効果が高い
- リファクタリングをしてモデルを成熟させていくことを重視するので内部を自由にリファクタがしやすいという利点
- クラス単位の細かいテストはリファクタリングの気力を削ぐ
- [MEMO]
(2018/05/06)