3

DTO を使用してアプリケーションのユース ケースを公開する Application Service との境界付けられたコンテキストがあります。

境界付けられたコンテキストには、豊富なドメイン オブジェクトを使用してドメイン ユース ケースを公開するドメイン サービスも含まれます。アプリケーション サービスは、ドメイン サービスの「クライアント」です。

最後に、ドメイン オブジェクトの永続性を可能にするリポジトリです。

ドメインには他の境界付けられたコンテキストが存在し、境界付けられたコンテキストを所有するチーム間の関係は顧客/サプライヤーであるため、チームは同じ目標に合わせて協力し、必要なユースケースを他の境界付けられたコンテキストに公開することができます。

この状況では、「顧客の境界付けられたコンテキスト」は「サプライヤーの境界付けられたコンテキスト」に接続する必要がありますか?

「サプライヤーの境界付けられたコンテキスト」が、「サプライヤーの境界付けられたコンテキスト」の豊富なドメイン オブジェクトを公開しているリポジトリまたはドメイン サービスに直接アクセスしても問題ありませんか? (「サプライヤーの境界付けられたコンテキスト」をドメイン内でのリークから保護する「顧客の境界付けられたコンテキスト」の ACL を使用)。ドメインのリファクタリングによってすべての ACL が壊れ、メンテナンスが必要になるため、このアプローチが適切かどうかはわかりません。これがACLの目標であることは知っていますが...

それとも、「コンシューマー バウンド コンテキスト」は、パブリック DTO が公開されている「サプライヤー バウンド コンテキスト」のアプリケーション サービスにのみ接続することが望ましいでしょうか。(ACL は必要ありません)。ユースケースが明らかにドメインのユースケースであっても、アプリケーションサービスがドメインサービスを模倣してアクセスポイントとして機能するように強制するため、このアプローチが良いかどうかはわかりません.

ご意見はありますか?良い/悪い経験を持つ2つのアプローチのいずれかを試した人はいますか?

Vaughn Vernon の本や Scott Millett の本からは明確な答えが見つかりません。

4

1 に答える 1

2

2 つのチームが協力して、サプライヤ BC の API を定義する必要があります。他の BC アプリ サービスやモデルに直接結合しないでください。

API は多くの場合、REST API として実現されますが、あなたの質問からは、複数の BC を 1 つのアプリケーションに統合しているように思えます。その場合は、API をインターフェイス ライブラリとして定義する必要があります。

インターフェイス ライブラリはバージョン管理され、文書化されている必要があります。これは、サプライヤー チームが維持し、消費者チームはニーズに応じて変更要求を行う必要があります。

サプライヤ BC が非常に単純なモデルを持っている場合にのみ、API を介してドメイン モデル自体を公開します。それ以外の場合はすべて、必要なユース ケースをカプセル化するアプリ サービスを定義することが理にかなっています。次に、これらのアプリ サービスのみが API として公開されます。

于 2016-06-14T12:37:18.050 に答える