跨边界上下文的DDD中的API与事件

时间:2018-12-20 12:27:59

标签: rest domain-driven-design messaging bounded-contexts

在DDD中跨边界上下文进行集成时,以下哪项被认为是更好的做法?

1)当实体在源BC中发生更改时发布事件,在使用BC中侦听这些事件,将数据整形为所需的实体,并将其存储在使用BC中。

2)当另一个BC需要该信息时,向拥有实体的BC进行API调用。

还是还有其他方法被认为比上述方法更好?

2 个答案:

答案 0 :(得分:1)

如果您对自治感兴趣,那么您就不想拥有需要其他服务才能使用的服务。

所以您可能应该考虑另一种方法-当您的 primary 用例不可用时,当远程数据提供者不可用时,消费者如何工作,然后考虑是否要添加任何增强功能数据提供者处于活动状态时。

这通常意味着每个服务都将缓存其所需数据的副本。

让消费者提取他们需要的数据通常比尝试将数据推送给他们更简单-请参阅Greg Young在Polyglot Data上的演讲。

答案 1 :(得分:0)

我认为问题不应该是“ API vs事件”,而应该是“ sync vs async”,并且不一定是最佳实践或最差实践。这取决于您对如何集成BC的要求。这取决于您的域。

您可以使用API​​而不是事件来实现异步集成,每隔一段时间对远程API进行一次调用,轮询请求。