我的应用程序中有两个共享相同客户端概念的域。其中一个域是"目录组件",它负责拥有与客户相关的所有详细信息(即:国家/地区,电话号码等)。另一个域是"提供组件",它负责在系统中提供与提供建模相关的所有细节。
客户端存在于两个域中,并且该国家最初仅用于"目录组件"。新要求意味着在"优惠组件"中使用客户的国家/地区。
在我们的CRUD过程中,我们有一个业务逻辑,可以在所有适当的组件中编排客户端的创建(在本例中为目录和商品)。
我们面临两个选择:
我们决定选择1,但自从我开始阅读Eric Evans关于DDD的书(我仍然是这个主题的新手),我质疑我们做出的决定。
对此有意见的人吗?
注意:由于应用程序的设计方式,删除在多个组件中编排CRUD创建的服务不是一种选择。
答案 0 :(得分:2)
使用DDD,您应该将每个有界上下文分开。这可能导致对类似命名的类建模,并且在两个BC中可能存在一些共同属性。系统之间的任何同步/通信和类似实体的创建都可以使用应用程序级别的机制保持最新。这可以是Web服务或类似ESB(企业服务总线)的东西。如果需要,每个系统都是完整的并拥有自己的持久性数据源(数据库)。应用程序级别的每个系统都不应插入另一个系统的数据库。允许从另一个BC或外部系统直接进行数据库操作,绕过可能存在的任何业务逻辑。
两本主要DDD书中给出的例子表明,对于像客户这样的概念,每个单独的有界上下文中的需求会有所不同,并且要求客户在每个BC中以不同方式建模并允许单独进化。