清洁建筑与洋葱建筑

use*_*870 22 architecture onion-architecture clean-architecture

我一直在阅读洋葱建筑,今天我发现了鲍勃叔叔的清洁建筑.

对于我的生活,我看不出它们之间有任何差异,它们看起来完全相同(除了命名惯例).

这两种建筑风格有什么不同吗?如果是的话,你能解释一下吗?

干杯

Geo*_*rth 20

"清洁建筑"一词只是文章的名称.洋葱架构是文章中解释的概念的特定应用.

  • 在联合架构中,模型位于中心,然后在其之上构建存储库,然后基于存储库的服务,然后是服务层之上的演示器、API 和测试器。但在干净的架构中,我们有核心实体、用例(我不确定),然后是控制器、网关和演示器,最重要的是 IO 设备(数据库、文件系统) ,Web,设备,(不确定“UI”。也许它是UI生成器)),通过听鲍勃叔叔的说法,他们应该作为插件附加,基于应用程序构建,而不是基于它们构建应用程序。 (6认同)

xur*_*dev 16

有清洁,六边形和洋葱等架构,目标相同,实施方式也存在一些差异.

  1. 独立于框架.该体系结构不依赖于某些特征库软件库的存在.这允许您将此类框架用作工具,而不必将您的系统塞入其有限的约束中.
  2. 可测试的.可以在没有UI,数据库,Web服务器或任何其他外部元素的情况下测试业务规则.独立于UI.UI可以轻松更改,而无需更改系统的其余部分.例如,可以使用控制台UI替换Web UI,而无需更改业务规则.
  3. 独立于数据库.您可以换掉Oracle或SQL Server,用于Mongo,BigTable,CouchDB或其他东西.您的业​​务规则未绑定到数据库.
  4. 独立于任何外部机构.事实上,您的业务规则根本不了解外部世界.

在所有架构中,目标是允许最稳定的东西不依赖于不太稳定的东西会更频繁地改变.

更重要,更稳定的层是域.

这对于这些体系结构来说更重要,那么如果对于洋葱,从用户界面输入到基础结构,域等的坐标对象是应用程序服务,或者如果在清洁体系结构中是交互器则是小细节.


use*_*878 5

它们确实看起来很相似,并且用于实现相同的目标,主要是可测试性和关注点分离,但您应该注意到 Uncle Bob 的 Clean Architecture 更以用例为中心。