知识卡片

洋葱架构与六边形架构:由外向内依赖,核心逻辑与外部彻底隔离

普通读书笔记卡

内容

洋葱架构(2008年提出)用同心圆表示应用不同部分,从里到外依次是领域模型、领域服务、应用服务、最外层易变内容(用户界面、基础资源),核心原则是外圆代码只能依赖内圆,内圆对外圆的存在一无所知,越往里代码级别越高、越是核心能力;最外层提供主动适配(外部用户/网页/批处理对内层的访问)和被动适配(核心逻辑对数据库/缓存/消息中间件等基础资源的访问)两类适配能力。六边形架构(2005年提出,又名端口适配器架构)核心理念是应用只通过”端口”与外部交互:核心业务逻辑(应用程序+领域模型)与外部资源完全隔离,仅通过适配器交互,一个端口可能对应多个外部系统、由不同适配器负责协议转换,这正是微服务架构下API网关盛行的思想源头。两者依赖方向一致(由外向内),共同点是都用一条”核心业务逻辑”与”外部应用/基础资源”之间的分界线,把易变的外部世界和稳定的核心逻辑彻底隔离开来。

参考来源

- 位置:《中台架构与实现:基于DDD和微服务》第11章《几种微服务架构模型对比分析》"11.1 洋葱架构"、"11.2 六边形架构"(源文件:_epub-src/OEBPS/Text/chapter3-7-1.xhtml、chapter3-7-2.xhtml) - 结论依据:原文说明"洋葱架构最主要的原则就是依赖原则……外圆代码依赖只能指向内圆,内圆不需要知道外圆的任何情况……六边形架构的核心理念是:应用是通过端口与外部进行交互的……核心业务逻辑(应用程序和领域模型)与外部资源……完全隔离,仅通过适配器进行交互",直接支撑本卡片结论。 - 原始内容:洋葱架构最主要的原则就是依赖原则,它定义了各层的依赖关系,越往里依赖程度越低,代码级别越高,越是核心能力。外圆代码依赖只能指向内圆,内圆不需要知道外圆的任何情况。