具有依赖倒置的分层架构和六边形架构之间有什么区别?

What are the differences between Layered architecture with dependencies inversion and Hexagonal architecture?

我读了一些关于软件架构的书。

我注意到我使用了具有依赖倒置的分层架构。我有控制器层 类 依赖于服务层接口,服务层实现依赖于存储层接口。 None 层取决于具体 类。

现在,我也遇到了六边形架构,端口和适配器的想法感觉非常类似于具有依赖倒置的分层架构。

这两种架构风格有什么区别?

我发现六边形架构比传统的(即 vertically-stacked)分层架构更清楚以下内容:

  • Hexagon 的“内部”是最重要的部分,至少对于那些要求构建应用程序的人来说是这样,因为它具有核心域(适用于建模Domain-Driven设计)。

  • Hexagon 的“内部”提供了一个强大的边界,不依赖于硬件、基础设施或 I/O。这使得编写快速单元测试变得容易。

  • 六边形外侧的适配器彼此分开,确保对一个的更改不会影响其他。它还可以轻松地“拔下”不再需要的适配器,或 plug-in 新适配器,而无需在六边形内部进行更改。

六边形架构一种分层架构,但我发现在上面添加了清晰的边界以使其易于使用。