【问题标题】:What extra layers can there in n-layer architecture for an application?应用程序的 n 层架构中可以有哪些额外的层?
【发布时间】:2018-08-10 09:38:01
【问题描述】:

我在学习软件架构原理。
我明白什么是三层架构(包含演示-业务-数据访问)。
但是任何人都有任何想法或额外的层来做到这一点,例如有人通过额外的层来做到这一点,例如“服务”层“基础设施”层或其他层等。
是否有任何额外的层可以做到这一点?
我对这样做感到困惑。
请帮帮我...

【问题讨论】:

  • 谢谢.....那篇文章在哪里指向我的问题?
  • 例如,我看到了许多分层架构的实现。服务层或基础设施层。甚至存在单独的表示层和真实的UI层。有时存在存储库或域层。哪种类型的 n 层是在现实世界中实现的最佳选择?

标签: c# architecture multi-layer n-layer


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

    常见的分层架构构成:

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

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

    核心层

    • 领域模型
    • 枚举

    基础设施

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

    演示文稿

    • MVC 项目
    • Web API

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

    【讨论】:

      猜你喜欢
      • 2018-08-27
      • 1970-01-01
      • 2012-06-22
      • 2015-08-22
      • 1970-01-01
      • 1970-01-01
      • 2020-12-24
      • 2012-03-13
      • 2014-12-10
      相关资源
      最近更新 更多