我正在使用域驱动设计实现社交网络。 我设计了Profile上下文,其中包含userid,userName,profile pic等等......在此上下文中,用户可以更改其userName 我还有一个消息传递上下文,用于在用户之间发送消息,在这个上下文中我有一个User类,其中包含userID和userName,注意到User在聚合内。 问题是可以在Profile上下文中随时更改userName,这就是我选择不将消息类与用户类绑定的原因,否则我将使用olds userName获取旧消息。 有没有意思,所以我每次都可以通过询问配置文件上下文,在消息传递上下文中懒惰地获取用户,如果是,那么在聚合中使用查询是否合适?
答案 0 :(得分:0)
这是您第一次需要从BC到另一个BC获取信息吗?如果没有,您的系统中的信息如何从一个BC传递到另一个BC?
我发现在BC之间传递信息的最佳方式是通过您的Domain对象发出的事件,让您的BC订阅这些事件,保留数据的本地副本。在你的情况下,你会:
(假设个人资料BC发出了一个' userNameChangedEvent')让你的Messaging BC订阅该事件,并让它继续“减少”'用户的版本 - 也许它只需要UserID和UserName。这样,当您的用户发布消息时,Messaging BC只会查询自己的瘦用户表,以获取用户名。
这种方法的一个警告是Eventual Consistency。也就是说,假设用户更改了他们的名字,然后立即发布消息...如何保证消息发布时消息来自BC的用户名已经更新。