ホームページ >Java >&#&チュートリアル >Java 3 層アーキテクチャと DDD 階層アーキテクチャとは何ですか?

Java 3 層アーキテクチャと DDD 階層アーキテクチャとは何ですか?

PHPz
PHPz転載
2023-05-15 10:25:053075ブラウズ

3 層アーキテクチャ

従来の 3 層アーキテクチャは、主にビジネス インターフェイス層、ビジネス ロジック層、データ アクセス層に分かれています

Java 3 層アーキテクチャと DDD 階層アーキテクチャとは何ですか?

  • ビジネス インターフェイス層: 主にリソース パスの定義、リクエスト メッセージの受け入れ、応答メッセージの返信、リクエストのエンコーディングなどを含む API の定義;

  • ビジネス ロジック層: 主にビジネス ロジック処理を実行するこの層には、DTO から VO へのデータ マッピング、コア ビジネス ロジックの作成、さまざまなデータ ウェアハウスの結合、およびビジネス ロジックの実行が含まれます;

  • # データ アクセス層: 主に実行データ ストレージ。VO から PO へのデータ マッピング、データ インターフェイスの定義、マッピング XML の作成を含みます。

DDD 階層化アーキテクチャ

DDD 階層化アーキテクチャは、主にユーザー インターフェイス層、アプリケーション層、ドメイン層、基本層;

Java 3 層アーキテクチャと DDD 階層アーキテクチャとは何ですか?

  • ユーザー インターフェイス層: ユーザーへの情報の表示と、ユーザー、プログラム、自動化スクリプト、バッチなどのユーザー指示の解釈を担当します。スクリプトなど;

  • アプリケーション層: 主に、複数の集約されたサービスとドメイン オブジェクトを調整して、サービスのオーケストレーションと組み合わせを完了するために使用されます。権限検証、トランザクションなど、ローカルまたはリモートのサービスを調整できます。制御、重複防止など、コア ビジネス ロジックをここに配置しないでください。

  • ドメイン層: 集約ルート、エンティティ、値オブジェクト、ドメイン サービスなどのコア ロジックを実装します。 、ビジネス拡張ポイントと検証ルール、結合された集約サービスとその他の関連機能を含む;

  • 基本レイヤー: いくつかのサードパーティ ツール、キャッシュ、データベース、依存関係反転設計を使用し、他のレイヤーから分離されたファイルなど。

進化

3 層アーキテクチャから DDD アーキテクチャへの進化は、主にロジック層とデータベース アクセス層で発生します

Java 3 層アーキテクチャと DDD 階層アーキテクチャとは何ですか?

  • ##フロントエンド データの可用性と柔軟性を高めるために新しい DTO が追加されました。

  • 3 層アーキテクチャのビジネス ロジック層は次のとおりです。アプリケーション層とドメイン層に変更され、ビジネスが容易になる ロジックは混乱せず、アプリケーションはフロントエンドの変更に迅速に対応します;

  • ベース層とドメイン層の設計変更データ アクセス層は、主流テクノロジーの変化に対応するために、依存関係の逆転を通じて基本設定から基本リソースの分離を実現します。

プロジェクト構造

Java 3 層アーキテクチャと DDD 階層アーキテクチャとは何ですか?

ユーザー インターフェイス層

  • アセンブラー: DTO とエンティティ オブジェクト相互変換とデータ交換は DTO と同時に行われます;

  • Dto: データ伝送キャリア、DTO はドメイン オブジェクトを外部から隔離できます;

  • ファサード: 複数のアプリケーション サービスへのリクエストを処理する、粗いインターフェイス粒度の定義;

アプリケーション層

  • イベント: 主にイベントを保存します。関連コード。これには、パブリッシュとサブスクライブの 2 つのサブディレクトリが含まれており、ここにパブリッシュおよびサブスクライブ関連コードが配置されます。ここでは、さまざまなフィールドのサービス サブスクリプション、またはマイクロサービス間のサブスクリプションを取得できます。

  • サービス: アプリケーション主に外部サービス向けのサービスは、カプセル化、オーケストレーション、およびカプセル化されて、粗粒度のサービスと独立したビジネス ロジックを提供します

ドメイン層

  • 集約: 集約ソフトウェア パッケージのルート ディレクトリは、集約の名前に従って名前が付けられ、エンティティ、集約ルート、エンティティ、値オブジェクト、およびドメイン サービスを定義でき、独立してマイクロサービスに分割できます。

    #Entity : 集約ルート、エンティティ、値オブジェクト、ファクトリ モード関連コード、および統合エンティティ関連ロジックを格納し、すべては輻輳モードを使用してこのクラスに配置されます。 : イベント アクティビティに関連するイベント エンティティとロジック コードを保存します;

  • サービス: さまざまなエンティティの組み合わせに基づくドメイン サービス、ビジネス ロジック;

  • リポジトリ: 集約クエリと永続化ドメイン オブジェクト コードを格納します。

  • 基本層

  • Config: 主に、スプリングブート自動構成などの構成関連のコードを格納します。サードパーティ コンポーネントの構成;

Util: 主にプラットフォーム、開発フレームワーク、メッセージ、データベース、キャッシュ、ファイル、バス、ゲートウェイ、サードパーティ ライブラリなどの基本コードを保存します。さまざまなリソース カテゴリに対してさまざまなサブディレクトリを作成できます;

  • サンプル コード

以上がJava 3 層アーキテクチャと DDD 階層アーキテクチャとは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はyisu.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。