分层体系结构:应用程序和基础层

时间:2018-08-21 17:17:19

标签: c# architecture

我开始学习软件体系结构,并且看到一些分层的体系结构实现使我感到困惑。

一般而言,这些解决方案具有以下几层:

  • 表示层;
  • 应用/服务层;
  • 域层;
  • 红外/数据层;

我不确定:

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

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

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

1 个答案:

答案 0 :(得分:1)

  • 演示层: 顾名思义,该层的关注点是用户看到或与之交互的任何内容。它包含UI逻辑,图形,表单,图像等...

  • 域层: 这是处理您的业务逻辑的地方。如果您正在编写Weblog,则此层包含对象和实体,如“帖子”,“用户”,“评论”等。如果您正在编写财务系统,则它们将是“帐本”,“帐户”,“资金”等。系统中最有价值的代码依赖于此,因为他们满足了用户的关注。

  • 基础结构层: 从经典意义上讲,每个层仅访问基础层,但有时该层涵盖了多层的关注。因此,我怀疑您是否可以将其经典地称为 layer 。它包含应用程序范围的抽象和基类,有时还涉及交叉问题等。

  • 服务层: PoEAA的Martin Fowler表示:“ 处理域逻辑的一种常见方法是将域层分为两层。将服务层放置在基础域模型上”。 就像马丁·福勒(Martin Fowler)在他的书中说的那样(我建议您阅读本书),这是您网域之上的一层,可以使您对网域的使用更加容易。这样一来,客户就不必了解域复杂性。它包含外立面。也是处理诸如安全性,事务管理之类的一些问题的好地方。

  • 数据层: 该层管理存储逻辑。它可以是一个简单的文件或一些较大的关系数据库。 在没有业务逻辑或业务逻辑很少的简单项目中,数据层扮演“域层”角色,反之亦然。其实这并不重要。重要的是,域模型与数据结构之间可能存在一些阻抗失配。数据层的主要关注点是为应用程序的其他部分(特别是域层)解决此难题。

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

祝你好运!

相关问题