3

私は最初の単純なアプリケーション DDD スタイルを設計し始めており、概念がどのように連携するかを理解し始めています。

従来のブログ アプリケーションを設計する場合、Article クラスは集計ルートの 1 つになります。記事を取得し、関連するすべてのデータ (発行日、著者など) を管理および削除したい。コメントに困っています。最初は、コメントは Article 集合体の一部であるエンティティのように見えます: コメントは記事に関連して作成されます。記事を削除すると、関連するコメントも削除されます。

次に、任意の記事について、ブログに投稿された最新のコメントを含む小さなボックスをブログに表示したいと考えています。したがって、データ ストアからコメント (およびコメントのみ) を取得したいようです。DDD のアイデアに対する私の理解からすると、それは集約ルートになります。しかし、コメントはアーティクルに強く依存しているように見えるので、それは完全に正しいとは思えません。

どのようにモデル化しますか?

ありがとう。

4

1 に答える 1

9

あなたがそれについて考えるとき、あなたはおそらくそれ自体が集合体Commentであるべきである様々な理由を見つけるでしょう:

  • 最新のコメントをリストしたい
  • 特定のユーザーによるすべてのコメントを一覧表示することができます
  • コメントをネストしたい場合があります(コメントは別のコメントへの返信です)
  • 管理インターフェースを介してコメントを承認/拒否することができます
  • ユーザーは自分のコメントを編集または削除したい場合があります
  • ..。

私は一般的な経験則として次のことを取ります:あなたの骨材をできるだけ小さくしてください。疑わしい場合は、より多くの集合体の側で誤りを犯してください。

このようにモデル化することで、コメントを複数のオブジェクトに添付できますArticleUser

Comment
    string Text
    string UserName
    bool IsApproved

Article
    string Title
    string Body
    ...
    List<CommentIds> CommentIds

User
    string UserName
    ...
    List<CommentIds> CommentIds

ListOfTenLatestComments
    List<CommentIds> CommentIds
于 2012-09-12T14:41:12.827 に答える