【问题标题】:DDD - getting information lazily from other contextsDDD - 从其他上下文中懒惰地获取信息
【发布时间】:2017-06-29 15:31:48
【问题描述】:

我正在使用领域驱动设计实现一个社交网络。 我设计了包含用户 ID、用户名、个人资料图片等的配置文件上下文......在这种情况下,用户可以更改他的用户名 我还有一个消息上下文,用于在用户之间发送消息,在这个上下文中,我有一个包含 userID 和 userName 的 User 类,注意到 User 在聚合中。 问题是用户名可以在配置文件上下文中随时更改,这就是我选择不将消息类与用户类绑定的原因,否则我会得到带有旧用户名的旧消息。 有没有办法让我每次都可以通过询问 Profile 上下文来让用户懒洋洋地进入消息传递上下文,如果是的话,在聚合中使用查询是否很好?

【问题讨论】:

    标签: domain-driven-design bounded-contexts


    【解决方案1】:

    这是您第一次需要从一个 BC 到另一个 BC 获取信息吗?如果不是,您的系统中的信息是如何从一个 BC 传递到另一个 BC 的?

    我发现跨 BC 传递信息的最佳方式是通过域对象发出的事件,并让您的 BC 订阅这些事件,保留数据的本地副本。在你的情况下,你会:

    (假设 Profile BC 发出“userNameChangedEvent”)让您的 Messaging BC 订阅该事件,并让它保持用户的“缩减”版本 - 也许它只需要 UserID 和 UserName。这样,当您的用户发布消息时,Messaging BC 只需查询其自己的苗条用户表,以获取用户名。

    这种方法的一个警告是 Eventual Consistency 。也就是说,假设一个用户更改了他们的名字,然后立即发布了一条消息……你怎么能保证在消息发布时用户名已经在 Messaging BC 上更新了。

    【讨论】:

      猜你喜欢
      • 2012-08-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-06
      • 2015-07-29
      相关资源
      最近更新 更多