我在想,如果课程和章节分别是两个人在做,那么数据库设计部分如何共享文档。最终目标还是大家共享稳定的文档。

http://www.jdon.com/45721
这篇帖子也可以看看。发现saga,process manager问题。

纠正一下自己:聚合根之间不直接引用现在看来比较理想化了,具体操作会有很多问题。
现在更倾向于可以直接相互引用。

2013-09-22 17:46 "@showerxp
"的内容
纠正一下自己:聚合根之间不直接引用现在看来比较理想化了,具体操作会有很多问题。
现在更倾向于可以直接相互引用。 ...

我个人认为不能聚合根不能引用,这是DDD的特点,会破坏上下文边界,见Evans 的文章:http://www.jdon.com/44491

关于实现方面问题,这两天我正好在折腾Jdon框架,放出两个聚合根不互相引用,通过消息实现调用的案例:
https://github.com/banq/jdonframework/tree/master/src/test/java/com/jdon/sample/test/cqrs

例子中aggregateRootA中只包含aggregateRootB的ID即可。
[该贴被banq于2013-09-22 22:05修改过]

2013-09-22 17:46 "@showerxp
"的内容
纠正一下自己:聚合根之间不直接引用现在看来比较理想化了,具体操作会有很多问题。
现在更倾向于可以直接相互引用。 ...

如果是CQRS+Event Sourcing的架构,那聚合根与聚合根之间的通信都是通过事件来完成,所以每个聚合根都只需要关注自己的数据,每个聚合根只需要告诉外部我发生了什么即可;另外通过CQRS的架构,使得我们的领域层不需要包含各种统计信息,不必为了满足查询的功能而设计各种统计信息。所以我们的领域层只需要封装纯粹的业务逻辑即可。在职责两个前提下,聚合根与聚合根是不需要相互对象引用的,而只需要保存聚合根的ID即可。
[该贴被tangxuehua于2013-09-23 18:19修改过]

2013-09-23 09:29 "@tangxuehua "的内容
那聚合根与聚合根之间的通信都是通过事件来完成,所以每个聚合根都只需要关注自己的数据,每个聚合根只需要告诉外部我发生了什么即可

《DDD精简版》中并没有强调聚合根之间的隔离。现在来看,也只有“事件总线编程”方能实现聚合根不相互持有。不过,考虑到事件总线编程的实现成本和学习成本,以及实际项目应用的时候是否能完全符合软件建模极端需求等因素,所以我定性为“太理想化”。不知道除了本坛子,还有没有其他具体应用的例子。
“工具”要打磨,但是事情也需要做。DDD的目标我认为还是回归业务,以及如何维护稳定的软件业务模型。因此,能简单靠近DDD目标既是胜利。