六边形架构的缺点
Drawbacks of Hexagonal Architecture
我阅读了一些博客和 Whosebug,在那里我发现六角形(端口和适配器)模式是一种很好的领域驱动架构。有没有SEO、性能等问题...
六边形架构可帮助您解耦域和基础架构层,因此您可以轻松替换基础架构的某些部分,而域层甚至不会注意到。例如,您可以将 UI 从基于 WEB 更改为独立存储,或者将持久性存储从 MySQL 更改为 Redis,并且您无需更改域层中的任何内容。
六边形架构并不能保护您免受性能问题的影响,您必须自己处理。
由于 Hexagonal 使用了 Adapter 和 Façade 模式,您可以考虑这些模式的缺点:
两种模式都使用间接(解耦),因此性能可能会因为中间 类 而受到影响。当然,在服务开始和结束之间会进行一次额外调用。有额外的代码行,额外的类,因此额外的复杂性和理解设计的额外努力。
适配器传统上是多态的(在 OO 中),因此多态调用可能更难理解和调试。还有(技术上)性能问题(多态调用也是一种隐藏的间接寻址)。
立面有膨胀的风险。如果您的系统有很多功能,那么几个较小的外观比一个 "god" 外观更好。然而,当您重构 Facades 以使它们更具内聚性时,调用 façade 的代码也需要更改。如果您的应用程序的功能没有太多发展,那么这可能不是一个大风险。
我阅读了一些博客和 Whosebug,在那里我发现六角形(端口和适配器)模式是一种很好的领域驱动架构。有没有SEO、性能等问题...
六边形架构可帮助您解耦域和基础架构层,因此您可以轻松替换基础架构的某些部分,而域层甚至不会注意到。例如,您可以将 UI 从基于 WEB 更改为独立存储,或者将持久性存储从 MySQL 更改为 Redis,并且您无需更改域层中的任何内容。
六边形架构并不能保护您免受性能问题的影响,您必须自己处理。
由于 Hexagonal 使用了 Adapter 和 Façade 模式,您可以考虑这些模式的缺点:
两种模式都使用间接(解耦),因此性能可能会因为中间 类 而受到影响。当然,在服务开始和结束之间会进行一次额外调用。有额外的代码行,额外的类,因此额外的复杂性和理解设计的额外努力。
适配器传统上是多态的(在 OO 中),因此多态调用可能更难理解和调试。还有(技术上)性能问题(多态调用也是一种隐藏的间接寻址)。
立面有膨胀的风险。如果您的系统有很多功能,那么几个较小的外观比一个 "god" 外观更好。然而,当您重构 Facades 以使它们更具内聚性时,调用 façade 的代码也需要更改。如果您的应用程序的功能没有太多发展,那么这可能不是一个大风险。