n层架构与干净架构之间的主要且明显的区别

时间:2019-06-28 09:11:41

标签: .net architecture domain-driven-design n-tier-architecture

免责声明。我不是在寻找关于这两个的讨论或意见。我也不打算评估或描述它们。我在一个项目中,应该为从传统驱动到域驱动驱动的重构建立一条路径,并且希望在实现任务的同时保持尽可能小的更改。

根据clean architecture的MS文档,洋葱形图应该与分层的n-tier architecture不同。

阅读时一切都有意义,但是随后呈现了一种不同的干净架构视图,它看起来与n层架构非常相似。当然,我确实知道它们之间的区别,但是试图理解它们之间的不同之处和的核心点并不会因此而变得容易。

我不确定的原因的一个更好的例子是this blog。它与.NET不相关,但体系结构应在技术上不可知。据我了解,该过程的实际路径是基于层的,并且完全等效于n层版本(仅在绘制方式上有所不同,应该无关紧要)。

这两种体系结构类型之间的主要区别仅仅是我们如何使用它们,还是在代码方面或项目结构中存在实际区别(当然,除了命名)?

1 个答案:

答案 0 :(得分:1)

  

据我所知,该过程的实际路径是基于层的,并且精确等效于n层版本(仅在绘制方式上有所不同,应该无关紧要)。

是的,没错。

  

这两种体系结构类型之间的主要区别仅仅是我们如何使用它们,还是在代码方面或项目结构中存在实际区别(当然,除了命名)?

区别在于代码知道,引用的代码取决于其他代码。

在N层中,业务逻辑需要知道基础结构层的API。所有依赖项都指向下。

在干净的体系结构/洋葱体系结构等中,基础结构层知道域层的API。所有依赖项都指向向内

  

干净的体系结构将业务逻辑和应用程序模型置于应用程序的中心。这种依赖性不再是业务逻辑依赖于数据访问或其他基础结构问题,而是反过来了:基础结构和实现细节取决于应用程序核心。

这种样式通常伴随着Composition Root的使用,Robert Martin offers负责将最终将完成工作的组件连接在一起。

  

您是说洋葱版本中没有业务逻辑层吗?即它已植入应用程序核心中?

通常,将业务逻辑理解为洋葱的中间部分。例如,enter image description here

array_filter

  

您可能会发现您不仅需要这四个。没有规则说您必须始终只有这四个。但是,依赖规则始终适用。源代码依赖性始终指向内部。