2017-07-01 3 views
0

私はディスカッション、コメント、およびユーザーを持っています。私は各ユーザーの未読コメント数を表示したい。問題は、未読のコメントの数を提供するコードをどこに置くべきですか?これはドメインの一部ではなく、ただのプレゼンテーションです。未読のコメントはDDDでカウントされます

私の考えはUnreadCommentsRepositoryに依存するUnreadCommentsCounterを作成し、DiscussionIdとUserIdを受け入れ、整数を返します。 DiscussionPayloadObject(スマートDTO)のDiscussion []にアクセスして、Presentationレイヤに必要なものを返す、アプリケーション層のどこかのUnreadCommentsCounterにアクセスします。

質問は以下のとおりです。私はUnreadCommentsCounter自体を維持する必要があり

  1. ?アプリケーションでは? その場合は、アプリケーション/サポートまたはアプリケーション/サービス または...のどのフォルダにありますか?
  2. UnreadCommentsRepository のデータをUnreadCommentsCounterに直接入力するか、UnreadCommentsCounter値オブジェクトを追加してUnreadCommentsCounter内で使用する必要がありますか?その場合、 値オブジェクトが必要な場合は、どこに保持する必要がありますか?おそらくドメインにはありません。次へ を未読コメントに追加する?

答えて

0

あなたの質問は、建築様式の文脈でのみ有効ですので、CQRSの場合は回答します。

私は次の構造/層を使用する私のプロジェクトでは:

  1. プレゼンテーション
  2. アプリケーション
  3. ドメイン
  4. インフラ

それらのそれぞれの意味は非常にありますDDDの実務家に知られているので、説明は何もないしかし1つ:ドメイン。このレイヤーは2つのサブレイヤーを持っています:書き込みと読み取り。

AggregatesおよびValue objectsが含まれています。それは、他の層への依存性、リポジトリインタフェース、純粋な副作用フリーコード以外の依存性を含んでいません。

Readには、フィルターおよび最適化リスト、カウンタ、ユーザーにデータを表示するためにPresentation layerが使用するすべてのクラスなど、リポジトリ、ドメインサービスが含まれています。このサブレイヤにはPresentationの特定の技術(HTMLコードなど)は含まれていません。ここのモデルは非常に薄く、非常に高速です。 これはここにあなたのUnreadCommentsCounterとさらにUnreadCommentsRepositoryを入れます。なぜここに?未読コメント(ドメインロジック)を計算するロジックを含み、特定のデータベース(そのベンダーの最高の利用可能な機能を使用して実装される)に非常に最適化されるためです。 UnreadCommentsRepositoryには、レイヤーを薄く保つためにプレゼンテーションが必要とするデータが含まれています。

+0

Domain \ Write \ DiscussionEntityがある場合、DiscussionEntityRepositoryInterfaceはどこですか?私が理解しているように、それはDomain \ Read \ Discussion \ DiscussionEntityRepositoryInterfaceにあります。しかし、CQRSでは、読み書き用のリポジトリは2つの異なるリポジトリです。 –

+0

とにかく「私の」CQRSの場合、ドメイン\モデル\ディスカッション\ *のエンティティの隣に書込みと読込みの両方のリポジトリを配置していれば、UnreadCommentsをそこに置くこともできます:Domain \ Model \ Discussion \ UnreadComments \ *。 –

+0

モデルを分割する必要があります(W - R)。私はあなたの "あなたの"建築に分かれていません。また、 'UnreadComments *'は明らかにreadmodelです。 –

関連する問題