清洁架构 vs 洋葱架构

67

我一直在阅读关于洋葱架构,今天我发现了 Uncle Bob 的干净架构

我真的看不出它们之间有任何区别,它们看起来完全相同(除了命名约定)。

这两种架构风格有什么不同吗? 如果有的话,请您说明一下。

谢谢

3个回答

53

“Clean Architecture”这个术语只是文章的名称。洋葱架构是本文中解释的概念的特定应用。


6
在联合架构中,模型位于中心位置,然后是建立在其之上的仓库,然后是基于仓库的服务,再然后是展示器、API和测试工具位于服务层之上。但在干净架构中,实体位于核心位置,之上是用例(我不确定),然后是控制器、网关和展示器,最上面是IO设备(数据库、文件系统、Web、设备(我不确定"UI"可能是界面生成器))。根据听取 Uncle Bob 的讲解,它们应该作为插件附加到应用程序上,而不是应用程序基于它们构建。 - Hassan Faghihi
1
干净架构不仅仅是这篇文章的名字,它是一本完整的书,罗伯特·马丁在其中定义了一套原则和特定的架构。干净架构由四个主要层组成:企业业务规则(实体)、应用程序业务规则、接口适配器、框架和驱动程序。洋葱架构也由四个层组成,但它们之间的依赖关系和结构是不同的。在洋葱架构中,第三层与用户界面无关,而在干净架构中,第三层负责视图、展示器和视图模型。 - undefined

42

有一些架构,例如clean、六边形和洋葱架构,它们具有相同的目标,并且在实现上有一些不同。

  1. 独立于框架。该架构不依赖于某些功能库的存在。这使您可以将这些框架用作工具,而不必将系统塞入其有限的约束中。
  2. 可测试性。业务规则可以在没有UI、数据库、Web服务器或任何其他外部因素的情况下进行测试。
  3. 独立于用户界面. UI 可以轻松更改,而不必更改系统的其他部分。例如,Web UI 可以被替换为控制台 UI 而不更改业务规则。
  4. 独立于数据库。您可以将 Oracle 或 SQL Server 替换为 Mongo、BigTable、CouchDB 或其他内容。您的业务规则不受数据库的约束。
  5. 独立于任何外部机构。实际上,您的业务规则根本不知道任何关于外部世界的事情。

在所有架构中,目标是允许最稳定的东西不依赖于变化更频繁的不稳定的东西。

最重要和最稳定的层是领域层。

这比这些架构中更为重要,因此如果对于洋葱架构,从用户界面输入到基础设施、领域等的协调对象是应用程序服务,或者在clean architecture中是一个交互器,这只是小细节。


这个评论非常好,但是它描述的是相似之处,而不是回答问题“这两种建筑风格有什么区别?”这与要求的相反。 - undefined

5

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接