【问题标题】:Layered Architecture: Application and Infra Layer分层架构:应用程序和基础设施层
【发布时间】:2019-01-27 22:36:14
【问题描述】:

我开始学习软件架构,我看到了一些让我感到困惑的分层架构实现。

一般来说,这些解决方案有以下几层:

  • 表示层;
  • 应用/服务层;
  • 域层;
  • 基础设施/数据层;

我不确定:

  1. 我并不完全清楚这些层的每一层是如何工作的,它们的关注点是什么;
  2. 我不清楚哪些层与数据层通信。是应用层吗?有人说应用层不应该对数据层有任何参考或知识;

如果有人可以回答我这些问题或向我推荐一些资源以了解更多信息,我将不胜感激。

谢谢,祝你有美好的一天! :)

【问题讨论】:

标签: c# architecture


【解决方案1】:
  • 表示层: 顾名思义,这一层关注的是用户看到或与之交互的任何内容。它包含 UI 逻辑、图形、表单、图像……

  • 域层: 这是处理您的业务逻辑的地方。如果您正在编写博客,该层包含对象和实体,如帖子、用户、评论等。如果您正在编写财务系统,它们将是分类帐、帐户、货币等。系统中最有价值的代码依赖于此,因为它们满足了用户的担忧。

  • 基础设施层: 在经典意义上,每一层都只访问底层,但有时这一层涵盖了多个层的关注点。因此,我怀疑您是否可以将其称为经典意义上的 layer。它包含应用程序范围的抽象和基类,有时还包含横切关注点等。

  • 服务层:处理域逻辑的常用方法是将域层一分为二。服务层放置在底层域模型之上”,Martin Fowler,PoEAA。 正如 Martin Fowler 在他的书中所说(我建议您阅读这本书),这是您的域之上的一层,可以使您的域的使用更容易。这样它的客户就不必知道任何关于域复杂性的事情。它包含外墙。也是处理安全、事务管理等问题的好地方。

  • 数据层: 该层管理存储逻辑。它可能是一个简单的文件或一些大型关系数据库。 在没有或几乎没有业务逻辑的简单项目中,数据层扮演“领域层”的角色,反之亦然。其实这并不重要。重要的是域模型和数据结构之间可能存在一些阻抗不匹配。数据层主要关心的是为应用程序的其他部分(特别是领域层)处理这个困难。

哪一层与数据通信? 最重要的是领域层。但这并不总是正确的。假设你想在数据库中保存一些 UI 的用户偏好。所以表示层也可以与数据层通信。 实际上任何层都可以与数据通信。重要的是您应该使用模式和最佳实践(如 IOC)来充分利用您的项目需求。

祝你好运!

【讨论】:

    猜你喜欢
    • 2011-01-21
    • 1970-01-01
    • 2021-11-22
    • 2017-06-10
    • 1970-01-01
    • 2014-06-20
    • 2013-01-13
    • 1970-01-01
    • 2014-06-22
    相关资源
    最近更新 更多