適切なアプリケーション アーキテクチャは、プロジェクトの開発を良い方向に促進し、保守が容易であるだけでなく、チーム メンバーが効果的にコラボレーションできるように導きます。
DDD はアプリケーション アーキテクチャの実装を現場の視点から推進するもので、次にランディング ソリューションを紹介します。
アーキテクチャの階層化
まずアーキテクチャレベルでは、DDDの階層化アーキテクチャパターンを踏襲しつつ、六角形アーキテクチャの形状と組み合わせて、新たな階層化アーキテクチャパターンを形成する。次のように:
各レベルの責任は次のとおりです。
- アダプター層(アダプター)はシステムトラフィックの入り口となり、リクエストをアプリケーション層に振り分けて特定のアプリケーションロジックを処理します。この層は、ビジネス インターフェイスのリクエスト、バッチ処理、メッセージなどをカバーします。
- システムのファサードとしてのファサード レイヤー (ファサード) は、システムが外部に公開される機能を表現するために使用されます。
- アプリケーション層 (アプリケーション) は、システムのアプリケーション ロジック オーケストレーション層であり、システム間またはアグリゲーション間のビジネス オーケストレーションに使用され、コア制御機能を表現しません。
- ドメイン層 (ドメイン) は、ドメイン駆動アーキテクチャの中核として、システムの中核となるモデル、ルール、サービスを担い、システム全体の頭脳となります。
- インフラストラクチャ層(インフラストラクチャ)は、ドメイン層をサポートするシステムの基盤であり、この層の位置付けは主にシステムの基本機能(キャッシュ、ストレージなど)、下流のサポート システムの統合、およびドメインの腐食防止機能。
アーキテクチャの依存関係
プロジェクト アーキテクチャの観点から見ると、各コンポーネント モジュール間の依存関係の相互作用は次のとおりです。
工学構造
アーキテクチャのランディング モードを形成した後、プロジェクトの実装も非常に重要であり、プロジェクトの保守性とコーディングのランディング ステージの実装戦略に影響します。着陸可能なエンジニアリング構造を見てみましょう。
.
|-- app
| |-- adapter
| |-- application
| |-- domain
| |-- facade
| `-- infrastructure
| |-- acl
| |-- dal
| |-- integration
|-- bootstrap
|-- conf
`-- test
各ディレクトリの意味は以下のとおりです。
- app: エンジニアリング アプリケーションがコードを保存するディレクトリ。サブディレクトリは、前のアーキテクチャの階層化で説明したさまざまなモジュールです。
- ブートストラップ: アプリケーションのスターター、および環境を除くアプリケーションの構成情報
- conf: 環境関連の構成情報
- テスト: プロジェクト関連のテスト コード
エンジニアリング構造の観点から、インフラストラクチャ層は責任に従って分割されます。
- dal: データベース対話モジュール
- 統合: システム統合モジュール (下流システムとの統合、他の基本機能の統合など)
- acl: システム防食層、ドメインと基本設定間の防食絶縁
プロジェクトの構造に関する詳細情報を表示するには、[ddla アーキテクチャ エンジニアリング仕様]をクリックします。
スキーマの使用法
次の Maven コマンドを使用して、groupId、artifactId、バージョン、パッケージ、およびその他のパラメーターを期待する値に置き換えます。スキャフォールディングのバージョン (ddla-archetype.version) は、groupId (ddla) を使用して Maven ウェアハウスで直接検索できます。 -アーキタイプ)。
mvn archetype:generate \
-DgroupId=com.lazycece.ddlademo \
-DartifactId=ddlademo \
-Dversion=1.0.0-SNAPSHOT \
-Dpackage=com.lazycece.ddlademo \
-DarchetypeArtifactId=ddla-archetype \
-DarchetypeGroupId=com.lazycece.ddla \
-DarchetypeVersion=${ddla-archetype.version}
オープンソースアドレス
https://github.com/lazycece/ddla