Ale*_*ora 3 domain-driven-design
我正在尝试在一个小项目中应用领域驱动的设计,我想分离其余用户逻辑的身份验证,一开始我正在使用id(userID)的值对象,但在同一位置使用了userID用户的级别(程序包),但是我意识到当我将用于身份验证和用户的有限上下文分开时,他们为userID共享一个公共值对象,所以我的问题是我必须放置公共或共享值对象的假定位置?如果我创建了一个称为Commons的软件包,那是正确的吗?
建议不要在有限的上下文之间共享模型,但是,您可以共享ID甚至是简单的Value对象(如Money)。
通常的规则是,您可以共享任何不变的东西,或者很少更改的东西,并且ID很少改变结构(这里不变性是指源代码和值不变性)。
称为“通用”的包通常是指您在项目中使用的可重用概念,因此您不必在每个项目中都对它们进行编码。通常在那里放置实体、值对象等的基本抽象对象和接口。
但这不是你关于 userId 的情况。你所说的是将 userId 放入“共享内核”模型中。这是一个选项,但通常不建议这样做。
从我的观点:
auth BC 有 id、login、password、role 等概念。
用户 BC 具有姓名、地址、年龄等概念,但它还必须具有从 auth BC 获得的 id。
据我所知,你有两个选择:
(1)认证BC明确地共享“id”概念,即它具有共享的内核。所以“id”概念也属于用户BC模型。
(2)认证BC是通用BC。因此,您必须将用户 BC 与身份验证 BC 集成才能从中获取 id。