Domain driven design 多个聚合根之间的分页
我是DDD的新手,所以如果某些术语/理解有误,请执行我。但请纠正我,任何建议都将不胜感激 假设我正在做一个社会工作委员会网站,我已经确定了我的聚合根:候选人、工作和公司。非常不同的内容/上下文,因此每个都有自己的数据库表、存储库和服务。但现在我必须建立一个Pinterest风格的主页,其中数据块显示候选人、工作或公司的数据 现在棘手的部分是,数据块必须在它所代表的聚合上最后一次发生事件之前排序(公司被喜欢/评论,或者作业被更新,等等),分页以无限滚动的形式出现,同样就像Pinterest一样。由于这些聚合是独立发生的,所以我无法知道在任何特定页面上有多少个聚合。(但如果我这样做了,比如说一个跟踪聚合的上次更新时间的表,我别无选择,只能将其升级为另一个聚合根,并拥有自己的存储库?) 我将在哪里实现分页逻辑?我在某个地方读到,每个聚合根每个存储库应该有一个服务,所以我应该在controller中进行排序和分页(顺便说一下,我正在使用MVC)?或者应该有一个独立的应用程序服务来做这样的跨境工作吗?无论哪种情况,我都必须从数据库中获取所有聚合的所有实体 问题已经太多了,但我基本上是在问:Domain driven design 多个聚合根之间的分页,domain-driven-design,paging,aggregateroot,Domain Driven Design,Paging,Aggregateroot,我是DDD的新手,所以如果某些术语/理解有误,请执行我。但请纠正我,任何建议都将不胜感激 假设我正在做一个社会工作委员会网站,我已经确定了我的聚合根:候选人、工作和公司。非常不同的内容/上下文,因此每个都有自己的数据库表、存储库和服务。但现在我必须建立一个Pinterest风格的主页,其中数据块显示候选人、工作或公司的数据 现在棘手的部分是,数据块必须在它所代表的聚合上最后一次发生事件之前排序(公司被喜欢/评论,或者作业被更新,等等),分页以无限滚动的形式出现,同样就像Pinterest一样。由
我想到了几件事
- 这些聚合数据需要有多新鲜?我怀疑实时会不会增加很多价值。与业务人员交谈,并就延迟时间进行讨价还价。这将允许您构建一个更简单的问题解决方案
- 为什么不让某个进程异步扫描、聚合、排序和存储结果呢?甚至不需要在数据库(Redis)中。协商的延迟可能是运行进程的时间间隔
- 在您的示例中,分页几乎不是一个业务决策问题。您只需要提供无限滚动和一些ajax调用,以获取缓存、聚合和排序的信息。这与DDD无关
- 您的UI工件和聚合、排序过程似乎是一件非常独立的事情,与数据一起工作,或者更好的是,与每个上下文中以所需格式提供数据的datacomponent一起工作