gpt4 book ai didi

domain-driven-design - 可以在两个不同的域中复制/保留相同的信息吗?

转载 作者:行者123 更新时间:2023-12-04 08:23:49 26 4
gpt4 key购买 nike

我的应用程序中有两个域共享相同的客户端概念。其中一个域是“目录组件”,它负责拥有与客户相关的所有详细信息(即:国家、电话号码等)。另一个域是“Offers Component”,它负责拥有与系统中的报价建模相关的所有细节。

客户端存在于两个域中,国家最初只在“目录组件”中使用。新要求意味着在“优惠组件”中使用客户所在的国家/地区。

在我们的 CRUD 过程中,我们有一个业务逻辑,可以在所有适当的组件(在本例中为目录和报价)中协调客户端的创建。

我们面临两个选择:

  1. 在 CRUD 过程中,将国家插入“优惠组件”并将其保存在自己的数据库中。这样做的缺点是在更新客户端的国家/地区时必须同步多个组件中的数据(是的,它可能会发生)
  2. 继续将国家保留在“目录组件”中,并依靠域顶部的服务来收集客户的国家,并在某些业务需要时将其传递到“优惠组件”中案例。

我们决定采用选项 1,但自从我开始阅读 Eric Evans 关于 DDD 的书(我在这个主题上仍然是新手)后,我质疑我们所做的决定。

有人对此有意见吗?

注意:由于应用程序的设计方式,删除在多个组件中编排 CRUD 创建的服务不是一个选项。

最佳答案

使用 DDD,您的目标应该是将每个限界上下文分开。这可能会导致在两个 BC 中对名称相似的类进行建模,这些类可能具有一些共同的属性。系统之间的任何同步/通信以及类似实体的创建都可以使用应用程序级别的机制保持最新。这可能是 Web 服务或类似 ESB(企业服务总线)的东西。如果需要,每个系统都将是完整的并拥有自己的持久性数据源(数据库)。应用程序级别的每个系统都不应该干涉另一个系统的数据库。允许从另一个 BC 或外部系统直接操作数据库,绕过任何可能存在的业务逻辑。

两本主要的 DDD 书籍中给出的示例表明,每个单独的限界上下文中对某些概念(如客户端)的需求是不同的,并且要求客户端在每个 BC 中以不同的方式建模并允许单独发展。

关于domain-driven-design - 可以在两个不同的域中复制/保留相同的信息吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28686518/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com