【发布时间】:2012-04-28 06:42:49
【问题描述】:
我是 DDD 的新手,所以如果某些术语/理解有点偏离,请执行我。但请纠正我,任何建议都将不胜感激。
假设我正在做一个社会工作委员会网站,并且我已经确定了我的聚合根源:候选人、工作和公司。非常不同的事物/上下文,因此每个都有自己的数据库表、存储库和服务。但现在我必须构建一个 Pinterest 风格的主页,其中的数据块显示候选人、工作或公司的数据。
现在棘手的部分是数据块必须在最后一次发生在它所代表的聚合上时进行排序(一家公司被点赞/评论,或者工作被更新等),并且分页以无限的形式发生滚动,就像 Pinterest 一样。由于这些聚合是独立发生的,因此我无法知道任何特定页面上有多少聚合。 (但如果我这样做了,比如说一个跟踪聚合上次更新时间的表,我别无选择,只能将其提升为另一个聚合根,并拥有自己的存储库?)
我将在哪里实现分页逻辑?我在某处读到,每个聚合根每个存储库应该有一个服务,所以我应该在控制器中排序和分页(顺便说一下,我正在使用 MVC)?还是应该有一个独立的应用程序服务来做这样的跨界工作?无论哪种情况,我都必须从 db 获取所有聚合的所有实体?
问题已经太多了,但我基本上是在问:
- 是分页表示、业务还是持久性逻辑?哪个水平层?
- 跨界代码应该驻留在 DDD 中的什么位置?哪个垂直堆栈?
【问题讨论】:
标签: domain-driven-design paging aggregateroot