我有一个概念性问题,并且相信Stack Overflow可能是一个很好的地方。通常在我的阅读和学习中,我会听到“层”的对话 - 以及松散定义的层,在这看来。太多了,在描述这些层时使用了很多软件术语(因此,对于入门级人或者gal(像我一样),他们每个人都很难掌握)。
到目前为止,我已经听说三(3)层互相交互并使程序“运行”:
这是我的问题(可能无法回答):这些“类型”中有多少存在,而且 - 简要地说 - 它们是什么?
我还鼓励通过人们可以咨询的超链接发布资源,特别是因为这些图层确实如此松散地定义。
答案 0 :(得分:1)
在这种特殊情况下,这些层基本上是Model View Controller系统架构的概括。简而言之,它们是:
BLL :'胆量'如果你愿意的话。这是适用于您自己的内部数据类型的逻辑,顾名思义,它就是“业务逻辑”。这使您的应用程序实际工作。它应尽可能独立于用户如何与业务逻辑交互的任何特定实现。例如,如果你正在构建一个Tic Tac Toe游戏,那么BLL将成为规则引擎,可以跟踪人们的行动,确定谁赢了等等。
所有:'界面'在 BLL 和将数据输入 BLL 的所有内容之间。对于 BLL 的特定应用,这将更加具体。例如,如果您的Tic Tac Toe引擎能够保存游戏结果, ALL 可能会提供存储结果的数据库引擎的接口。对于 BLL 与您选择使用的 PL (基于文本,GUI等)的接口也是负责任的。
PL :这是'前端'用户与之交互的应用程序。这可以从像 Qt 这样的复杂框架构建,或者像文本界面那样简单。无论哪种方式,它在实现方面通常完全独立于它试图公开的应用程序。要继续Tic Tac Toe类比,您可以通过 ALL 构建一个相对通用的 3x3网格,其中包含形状和消息输出,以便最终显示Tic Tac Toe游戏。现在在实践中他们很少会解耦,但重点是你应该尝试将任何实际的逻辑保留在 PL 之外,以便你可以改变只要界面保持不变,就无需触摸 PL 代码即可实施 BLL 或 ALL 。
这些层是松散定义的,因为它们只是用于使可视化复杂系统设计更容易推理的概括,并自然地指导开发朝向功能的适当划分,以实现最大程度的代码重用和组件可交换性,以及允许更容易地执行正式的验证和验证以及其他QA任务。有许多方法可以将软件设计分成“层”,但这三种方法通常在软件英语课程材料中正式描述。因此,实际上并没有任何特定的层数和#3;你可以谈谈。特定设计的细分方式实际上取决于特定的域名和流行语'在当时的行业。然而,你几乎总能找到类似于这三层的东西,有时会分成几个较小的块。
答案 1 :(得分:0)