领域实体的意义是有上下文的,比如同样是Apple,在水果店和苹果手机专卖店中表达出的含义就完全不一样。限界上下文(Bounded Context)的作用是限定模型的应用范围,在同一个上下文中,要保证模型在逻辑上统一,而不用考虑它是不是适用于边界之外的情况。
那么不同上下文直接的业务实体要如何实现交互呢?就像关系数据库和对象之间需要ORM一样,不同上下文之间的实体也需要映射。在DDD中,这种机制叫作上下文映射(Context Mapping),我们可以使用防腐层(Anti-Corruption)来完成映射的工作。
比如,rpc调用中,虽然privider侧和client侧二者有很多属性都是一样的,但我们还是有必要引入防腐层来做上下文映射,主要以下两个原因。
- 虽然属性大部分一样,但二者的作用和行在各自上下文中是不一样的。
- 解耦影响,加入了防腐层之后,privider的变化就不会影响到client了