【问题标题】:DDD Making changes across contextsDDD 跨上下文进行更改
【发布时间】:2020-05-21 20:58:50
【问题描述】:

假设我正在为一家保险公司编写软件。我使用 DDD,并与与客户帐户、地址和相关信息相关的实体有一个有界上下文。如果客户登录并更改这些实体,这很简单。

但是,内部支持人员使用另一个门户。现在,如果客户打电话来更新他们的帐户信息(不是政策,而是电话号码、地址等)。最好和干净的方法是什么?

  1. 调用客户使用的限界上下文(HTTP 等)。
  2. 允许从内部门户进行更改(可能跨数据库/架构边界修改数据)。
  3. 引发有关更改对象的域事件,并在客户端应用程序上处理它(同样,这是与另一个上下文中的域对象相关的事件,我们不会从内部门户写入数据库)。

【问题讨论】:

    标签: domain-driven-design


    【解决方案1】:

    有界上下文的存在是因为它们在领域中具有意义,并且存在于您的系统中。它们不存在为特定类型的用户或特定客户端应用程序提供服务。事实上,限界上下文服务于多种类型的用户和多个客户端应用程序是最常见的,尤其是在具有面向客户的应用程序和后台的软件系统中。

    在您的保险域中,客户和后台用户都将直接与 CustomerManagement BC 交互,因为该 BC 可以同时为两者提供服务,而不仅仅是客户。就像客户和后台用户都能够看到客户的政策、他们的覆盖范围等一样。

    从技术上讲,实施将取决于您的架构。两个客户端应用程序都可以与相同的 API 通信,甚至可以共享端点。或者您可以为每个客户端提供一个 API,这些 API 将直接与同一个 BC 通信(调用相同的代码或通过对同一个远程服务进行远程调用)。

    【讨论】:

      【解决方案2】:

      如果您的企业允许用户直接通过电话直接更改有关客户的信息,那么您已经回答了您的问题,您的系统应该允许这样做。这就是 DDD 关注领域的原因,而领域是您示例中的业务逻辑我看到了上下文客户管理和使用此信息的其他一些上下文,但如果有人需要更改有关客户的信息,这是业务案例和系统应该允许这样做!

      【讨论】:

      • 绝对应该允许。我关心的是如何在技术上实现它。
      • @AnhadSingh 直接访问具有特定权限的用户,例如管理员。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-08-22
      • 2020-06-14
      • 2018-02-23
      • 2013-11-27
      • 2021-02-23
      • 2019-03-02
      • 1970-01-01
      相关资源
      最近更新 更多