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

Don*_*ana 5 .net architecture domain-driven-design n-tier-architecture clean-architecture

免责声明。我并不是在寻找这两个人的讨论或意见。我的目的也不是评估或描述它们。我在一个项目中,我应该建立一条从传统重构到领域驱动重构的路径,并且我希望保持尽可能小的更改仍然可以完成任务。

根据 MS 的干净架构文档,洋葱形图应该与n 层架构不同,后者是层形的。

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

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

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

Voi*_*son 6

\n

据我了解,该过程的实际路径是基于层的,并且完全等同于 n 层版本(仅在绘制方式上有所不同,这应该是无关的)。

\n
\n\n

恩,那就对了。

\n\n
\n

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

\n
\n\n

区别在于哪些代码知道、引用了哪些代码,取决于其他代码。

\n\n

在N-Tier中,业务逻辑需要了解基础设施层的API。所有依赖项都指向下方。

\n\n

在干净架构/洋葱架构等中,基础设施层了解领域层的API。所有的依赖关系都指向内部

\n\n
\n

干净的架构将业务逻辑和应用程序模型置于应用程序的中心。这种依赖关系不是依赖于数据访问或其他基础设施问题,而是相反:基础设施和实现细节依赖于应用程序核心。

\n
\n\n

这种风格通常伴随着组合根的使用,它负责将最终完成工作的组件连接在一起。

\n\n
\n

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

\n
\n\n

通常,业务逻辑被理解为位于洋葱的中间。例如,罗伯特·马丁提出

\n\n

在此输入图像描述

\n\n
\n

您可能会发现您需要的不仅仅是这四个。没有任何规则规定您必须始终只有这四个。然而,依赖性规则始终适用。源代码依赖关系始终指向内部。

\n
\n