我正在使用域驱动设计实现一个社交网络。我设计了包含用户 ID、用户名、个人资料图片等的配置文件上下文……在这种情况下,用户可以更改他的用户名我还有一个消息传递上下文,用于在用户之间发送消息,在这种情况下我有一个包含 userID 和 userName 的 User 类,注意 User 在聚合中。问题是用户名可以在配置文件上下文中随时更改,这就是我选择不将消息类与用户类绑定的原因,否则我会收到带有旧用户名的旧消息。有没有一种方法,所以我每次都可以通过询问 Profile 上下文来让用户懒洋洋地进入消息传递上下文,如果是,那么在聚合中使用查询是否很好?
问问题
49 次
1 回答
0
这是您第一次需要从一个 BC 到另一个 BC 获取信息吗?如果不是,您的系统中的信息如何从一个 BC 传递到另一个 BC?
我发现跨 BC 传递信息的最佳方式是通过域对象发出的事件,并让您的 BC 订阅这些事件,保留数据的本地副本。在你的情况下,你会:
(假设 Profile BC 发出“userNameChangedEvent”)让您的 Messaging BC 订阅该事件,并让它保留用户的“缩减”版本 - 也许它只需要 UserID 和 UserName。这样,当您的用户发布消息时,Messaging BC 只需查询其自己的苗条用户表,以获取用户名。
这种方法的一个警告是最终一致性。也就是说,假设用户更改了他们的名字,然后立即发布了一条消息……您如何保证在发布消息时用户名已在 Messaging BC 上更新。
于 2017-07-25T16:39:09.617 回答