清洁架构与洋葱架构
Posted
技术标签:
【中文标题】清洁架构与洋葱架构【英文标题】:Clean Architecture vs Onion Architecture 【发布时间】:2014-06-22 04:36:31 【问题描述】:我一直在阅读Onion Architecture,今天我发现了鲍勃叔叔的Clean Architecture。
在我的一生中,我看不出它们之间有任何区别,它们看起来相同(命名约定除外)。
这两种建筑风格有什么不同吗?如果是的话,请给我解释一下好吗?
干杯
【问题讨论】:
【参考方案1】:术语“清洁架构”只是文章的名称。洋葱架构是文章中解释的概念的具体应用。
【讨论】:
在联合架构中,模型位于中心,然后在其上构建存储库,然后基于存储库进行服务,然后在服务层之上提供演示者、API 和测试器。但是在干净的架构上,我们以实体为核心,最重要的是用例(我不确定),然后是控制器、网关和演示器,最重要的是 IO 设备(数据库、文件系统,Web,Devices,(不确定“UI”。可能是UI生成器)),通过听鲍勃叔叔的话,它们应该作为插件附加,基于应用程序构建,而不是基于它们构建的应用程序。【参考方案2】:它们看起来确实相似,并且用于实现相同的目标,主要是可测试性和关注点分离,但您应该注意到,鲍勃叔叔的清洁架构更以用例为中心。
【讨论】:
【参考方案3】:诸如干净、六边形和洋葱之类的架构具有相同的目标,但在实现上存在一些差异。
-
独立于框架。该架构不依赖于某些功能丰富的软件库的存在。这使您可以将此类框架用作工具,而不必将系统塞进其有限的约束中。
可测试。可以在没有 UI、数据库、Web 服务器或任何其他外部元素的情况下测试业务规则。
独立于用户界面。 UI 可以轻松更改,而无需更改系统的其余部分。例如,可以用控制台 UI 替换 Web UI,而无需更改业务规则。
独立于数据库。您可以将 Oracle 或 SQL Server 换成 Mongo、BigTable、CouchDB 或其他东西。您的业务规则未绑定到数据库。
独立于任何外部机构。事实上,您的业务规则根本不了解外部世界。
在所有架构中,目标是允许最稳定的东西不依赖于不太稳定的东西会更频繁地变化。
更重要和更稳定的层是域。
这在这些架构中更为重要,那么如果对于洋葱来说,用于协调从用户界面输入到基础设施、域等的对象是一个应用程序服务,或者如果在干净的架构中是一个交互器,那么这些都是小细节。
【讨论】:
以上是关于清洁架构与洋葱架构的主要内容,如果未能解决你的问题,请参考以下文章