首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >六边形架构中的数据库存储库依赖关系

六边形架构中的数据库存储库依赖关系
EN

Stack Overflow用户
提问于 2017-11-20 18:20:06
回答 1查看 488关注 0票数 1

我正在将一个nTier架构迁移到一个六边形架构。我的域现在定义得很好,并且我有用于所有基础设施依赖项的接口。查看数据库存储库,我有几个数据库,并且在基础设施端有一个实现每个存储库的类。我的问题是关于DB依赖的正确方法应该是什么:

1-在域端有一个接口来处理数据访问,然后依赖于基础架构实现,并有一个类作为所有数据库存储库的入口点,就像facade一样,所有存储库实现都将从这里调用。这种方法与我在nTier应用程序中已有的方法相同,外观和repos是当前的数据库层。

2-有接口的每个数据库,我需要在域方。每个接口都将在基础架构端实现,以访问相应的DB。它使层变薄,但这种方法将数据管理逻辑添加到域中。域不应该关心数据在哪里,基础设施应该处理这个问题。如果将某些数据移动到另一个数据库,则需要在域端更改相应的接口(例如,将公开此数据的方法移动到另一个接口)

让我知道,

EN

回答 1

Stack Overflow用户

发布于 2017-12-07 21:28:26

这是个好问题。我在一个应用程序中遇到了同样的困境,我决定选择您公开的第一个选项:

只有一个端口用于访问数据,域并不关心数据的来源,无论数据存储在哪个数据库中。在适配器中,我有一个facade将请求转发到正确的数据库。实际上,在我的例子中,结果数据可能是来自两个数据库的混合数据。

但我认为另一种选择也是有效的,如果我们将数据库视为我们的应用程序必须与之对话的外部系统。我们的应用程序必须知道哪些二级参与者必须与之通信,在这种情况下,每个参与者在域中都有一个端口。

无论如何,我认为第一种选择更“正确”,因为六边形架构中的端口是通信的目的,在这种情况下是“检索数据”的目的。在这次演讲中,阿利斯泰尔·科克伯恩解释了这一点。他说,港口必须根据它们的意图命名,并说明它们的用途。端口用于...ing之类的东西。

谈论“六边形中的阿利斯泰尔”:

https://www.youtube.com/watch?v=th4AgBcrEHA

https://www.youtube.com/watch?v=iALcE8BPs94

https://www.youtube.com/watch?v=DAe0Bmcyt-4

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47389724

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档