应用程序在 n 层架构中可以有哪些额外的层?

What extra layers can there in n-layer architecture for an application?

我在学习软件架构原理。
我明白了什么是三层架构(包含Presentation-Business-Data Access)。
但是任何人都有任何想法或额外的层来做到这一点,例如有人通过额外的层来做到这一点,例如 'Service' 层 'Infrastructure' 层或其他层等
有没有额外的层次来做呢?
我对此感到困惑。
请帮助我...

C# 与其他(命令式)编程语言没有什么不同。您的确切架构通常由所使用的框架决定。如果您使用的是 C#,它 可能 某种 ASP.NET MVC 的风格。 This is a good overview.

通常,在模型和控制器之间会引入一个服务层来封装一些业务逻辑和事务流。这一层是否 "correct" 是一个争论不休的问题,通常取决于您是否订阅 DDD 阵营。实际上,如果您有很多复杂的业务逻辑,将逻辑外化到服务层会提高可测试性,但代价是会降低模型层的真实世界建模能力。出于实用的测试目的,服务层通常最终成为大部分业务逻辑的来源。

存储库或数据访问层与模型层分离,如果您的域持久性达到一定程度的复杂性,它们将非常有用。我通常最终会默认创建它们,因为它还有助于测试将模型与其持久性分离(并允许轻松注入模拟)。

常见的分层架构构成:

  • 核心层
  • 基础设施
  • 演示文稿

进一步细分,这 3 层可以有自己的粒度层。

核心层

  • 领域模型
  • 枚举

基础设施

  • 存储库
  • 数据传输对象模型
  • 服务
  • 工作单元

演示文稿

  • MVC 项目
  • 网络 API

我想回答你的问题,我可以在基础结构层和表示层之间添加一个层,并有一个 Testing 层。请记住,只有在代码中遵循 SOC 和 SOLID 原则时,通过使用文件结构对应用程序架构进行分层才真正有益。