Developer's Bookshelf

レイヤードアーキテクチャ

役割ごとにレイヤー(層)を作るアーキテクチャ。レイヤーの作り方は様々。

  • ソフトウェアアーキテクチャの基礎: プレゼンテーション層、ビジネス層、永続化層、データベース層
  • ドメイン駆動設計: ユーザインタフェース、アプリケーション、ドメイン、インフラストラクチャ

参考文献

From ソフトウェアアーキテクチャの基礎 ―エンジニアリングに基づく体系的アプローチ
レイヤードアーキテクチャ内のコンポーネントは、論理的な水平方向のレイヤーとして編成される。各レイヤーは、アプリケーション内で特定の役割(プレゼンテーションロジックやビジネスロジックなど)を果たす。

技術で分割されたアーキテクチャ。


From エリック・エヴァンスのドメイン駆動設計
複雑なプログラムはレイヤに分割すること。各レイヤで設計を進め、凝集度を高めて下位層だけに依存するようにすること。標準的なアーキテクチャパターンに従って、上位のレイヤに対しては疎結合にすること。ドメインモデルに関係するコード全部を1 つの層に集中させ、ユーザインタフェース、アプリケーション、インフラストラクチャのコードから分離すること。表示や格納、アプリケーションタスク管理などの責務から解放されることで、ドメインオブジェクトはドメインモデルを表現するという責務に専念できる。これによって、モデルは十分豊かで明確になるように進化し、本質的なビジネスの知識をとらえて、それを機能させることができるようになる。

「下位層だけに依存する」と「ドメイン層」の2つが重要。