我有讨论,评论和用户。我想为每个用户显示未读评论数。问题是:我应该在哪里放置代码,提供未读评论的数量?这不是Domain的一部分,只是一个演示问题。
我的想法是创建一个依赖于UnreadCommentsRepository的UnreadCommentsCounter,接受DiscussionId和UserId,并返回整数。我将在Application层的某个地方访问这个UnreadCommentsCounter,在一些可以访问Discussion []的DiscussionPayloadObject(智能DTO)中,返回Presentation层需要的内容。
问题是:
答案 0 :(得分:0)
您的问题仅在建筑风格的背景下有效,因此我将在CQRS
的情况下给出答案。
在我的项目中,我使用以下结构/图层:
他们每个人的意思都是DDD从业者所熟知的,所以除了一个之外没有任何意义解释:领域;该层有2个子层:Write和Read。
Write
包含他们所需的Aggregates
和Value objects
。它不包含任何对其他层的依赖,没有存储库接口,除了纯粹的,副作用免费代码之外别无其他。
Read
包含存储库,域服务,如过滤和优化列表,计数器,Presentation layer
用于向用户显示数据的所有类。此子层不包含Presentation
特定技术(如HTML代码)。此处的模型非常薄且速度非常快。 在这里,我会将您的UnreadCommentsCounter
甚至是UnreadCommentsRepository
。为什么在这?因为它们将包含计算未读注释(域逻辑)的逻辑,并且repo将针对特定数据库进行非常优化(该逻辑将使用特定供应商的最佳可用功能来实现)。 UnreadCommentsRepository
将精确包含演示文稿所需的数据,以保持图层变薄。