未读评论计入DDD

时间:2017-07-01 14:27:29

标签: domain-driven-design

我有讨论,评论和用户。我想为每个用户显示未读评论数。问题是:我应该在哪里放置代码,提供未读评论的数量?这不是Domain的一部分,只是一个演示问题。

我的想法是创建一个依赖于UnreadCommentsRepository的UnreadCommentsCounter,接受DiscussionId和UserId,并返回整数。我将在Application层的某个地方访问这个UnreadCommentsCounter,在一些可以访问Discussion []的DiscussionPayloadObject(智能DTO)中,返回Presentation层需要的内容。

问题是:

  1. 我应该在哪里保留UnreadCommentsCounter?申请中? 如果是这样,在哪个文件夹,应用程序/支持或应用程序/服务 或...?
  2. 我应该使用UnreadCommentsRepository提供的数据吗? 直接在UnreadCommentsCounter中,或添加一些UnreadComments 值对象并在UnreadCommentsCounter中使用它?如果我需要那个 价值对象,我应该在哪里保留它?可能不在域中。下一个 to UnreadCommentsCounter?

1 个答案:

答案 0 :(得分:0)

您的问题仅在建筑风格的背景下有效,因此我将在CQRS的情况下给出答案。

在我的项目中,我使用以下结构/图层:

  1. 演示
  2. 应用
  3. 基础设施
  4. 他们每个人的意思都是DDD从业者所熟知的,所以除了一个之外没有任何意义解释:领域;该层有2个子层:Write和Read。

    Write包含他们所需的AggregatesValue objects。它不包含任何对其他层的依赖,没有存储库接口,除了纯粹的,副作用免费代码之外别无其他。

    Read包含存储库,域服务,如过滤和优化列表,计数器,Presentation layer用于向用户显示数据的所有类。此子层不包含Presentation特定技术(如HTML代码)。此处的模型非常薄且速度非常快。 在这里,我会将您的UnreadCommentsCounter甚至是UnreadCommentsRepository 。为什么在这?因为它们将包含计算未读注释(域逻辑)的逻辑,并且repo将针对特定数据库进行非常优化(该逻辑将使用特定供应商的最佳可用功能来实现)。 UnreadCommentsRepository将精确包含演示文稿所需的数据,以保持图层变薄。