Domain driven design Eric Evans书籍-货物运输示例-存储库用途

Domain driven design Eric Evans书籍-货物运输示例-存储库用途,domain-driven-design,Domain Driven Design,我正在读埃文斯的书《领域驱动设计》,我有点难以理解第7章中关于货物运输和仓库的例子 在“货物集合的另一种设计”中,他用一个查询取代了交货历史记录的收集,以减少循环复杂性并防止事务锁定 现在我很困惑,引入存储库的全部目的不是将基础结构层与域分离吗?如果Deivery History要进行查询,那么它是否需要对适当的存储库进行引用,或者它本身必须实现一些存储库职责?实体和存储库的分离是如何工作的?作者Vernon对此进行了更深入的探讨。特别是,在中,您实际上可以将存储库实现视为内部适配器。然后,存储

我正在读埃文斯的书《领域驱动设计》,我有点难以理解第7章中关于货物运输和仓库的例子

在“货物集合的另一种设计”中,他用一个查询取代了交货历史记录的收集,以减少循环复杂性并防止事务锁定

现在我很困惑,引入存储库的全部目的不是将基础结构层与域分离吗?如果Deivery History要进行查询,那么它是否需要对适当的存储库进行引用,或者它本身必须实现一些存储库职责?实体和存储库的分离是如何工作的?

作者Vernon对此进行了更深入的探讨。特别是,在中,您实际上可以将存储库实现视为内部适配器。然后,存储库仅仅是底层数据存储的接口,因此作为一个抽象,它完全是域本身的一部分。这意味着任何实体都可以引用存储库抽象,并且通过核心域之外的实现,分层体系结构得以保留

当然,有很多方法可以实现这一点,我认为在某些方面,Evans的原著没有规定具体内容,而是侧重于关键模式,而不是所有的实现细节。

作者Vernon更深入地探讨了一些实际考虑因素。特别是,在中,您实际上可以将存储库实现视为内部适配器。然后,存储库仅仅是底层数据存储的接口,因此作为一个抽象,它完全是域本身的一部分。这意味着任何实体都可以引用存储库抽象,并且通过核心域之外的实现,分层体系结构得以保留

当然,有很多方法可以实现这一点,我认为在某些方面,Evans的原著并没有规定具体内容,而是侧重于关键模式,而不是所有的实现细节