2009-01-18 176 views
16

我只是碰到下面的句子来了:差异之间的三个

随着行业已经从三个 层次模式搬到n层模型,对象关系型阻抗失配已成为更普遍。

但我无法找到三层和n层之间区别的简明解释。我知道三层是什么,我假设n层只增加一层或多层。我只是不确定这些额外的层次是什么。如果任何人有一个简短的解释或简单的一个很好的链接,这将不胜感激。

回答

9

该报价看起来是从这codeproject页面。它也似乎做了很好的解释n层来包含诸如Web服务,JavaScript,工作流等等的东西。所有这些3层模型都不一定包含。

0

没有看到上下文中的句子,我认为它指的是服务和中间件的爆炸式增长。

1

这是从哪里来的?他们指的是什么行业?我不得不想象这与SOA有关,因为这是唯一对此类声明有意义的事情。

大多数听过这种说法的人都认为,在面向服务的领域,每种服务都是某种程度上的自己的层次。我不同意,因为大多数时候,这些不同的服务无论如何可以在逻辑上分成共同的三层(表示,逻辑和数据)。但是,它的一切都非常主观。

3

嘿我甚至不能得到3层的定义。有时候,他们会在客户端上打折JavaScript,有时客户端和客户端Web浏览器上的JavaScript被视为另一层。因此,如果您假定数据库=第3层,Web服务器=第2层,客户端Web浏览器=第1层,则与数据库交谈的ASP页可以是3层。而其他时间Web服务器=第1层,中间件=第2层,数据库=第三层。这真的取决于谁在写定义/书。

一般而言,n层似乎指的是更多地分裂中间件层。但除此之外,我没有看到一致的定义。

7

n层意味着n是任何数字 - 当n = 3时,它与n层相同。

3层的通常定义是演示文稿,逻辑&数据(以任何次序),是的,SOA可以混淆新手因为有时它位于数据层,有时逻辑层,有时两个逻辑&数据层。

整个主题是......主观的。如果你需要一些层,那么称它为n层 - 如果你知道n = 7,那么称它为7层或n层。

25

在开发中,我们将层级理解为“责任级别”抽象。

这种责任级别将概念分组在一起,以提供对现实的连贯的语义视图,或者至少类似于现实。

在这种意义上,所谓的3层模型或n层模型只是这些概念的不同实现。

一个层级的一个很好的例子就是遵循这样一个审慎模式,在这个模型中,责任被仔细地解决给适当的人。例如,一个共同的企业有商业,市场,系统,开发和测试部门(例如),代表业务层。那样的话,责任是明确的,开发提供了产品,测试测试,营销推广和商业推销,所有这些都是系统保持基础架构运行的过程(仅仅是一个例子)。

这个比喻是第一次接近3层模型,其中三层标识。通常这层是数据库抽象层,这是负责通信和抽象了数据库,业务规则层,其中认为描述业务流程和用户界面层其抽象用户的交互规则与系统。

这样,我们就为每个层的责任分配角色,这样,如果用户需要与系统交互,他将与一个层进行通信,而不是混淆洞系统。

N层通过使用更多层来解决特定需求,代表了前一概念的演变。通常用户界面层和数据库抽象层保持不变,因为他们的角色非常清晰,而业务规则层进一步细化。

为此,我们始终考虑到问题的特点以及我们现在和将来提供的功能。例如,如果某个应用程序需要与智能客户端一起工作,或者需要与智能客户端一起工作,那么业务层通常会分为代理层和后端层,第一层应该将应用程序路由到他们应该去的地方。

最后,重要的是在不同层次抽象责任的概念,并从同一地方的语义视图集中所有相关的操作。

请注意,此外,n层架构允许在开发人员之间分配这些“责任”。这样,给定的团队可以对数据库抽象层负责,而其他团队则在代理层上工作,而另一个团队则在图形抽象层上工作。当一个团队的成员需要访问数据库时,他查阅DAL文档并使用提供的其中一个工具,或要求DAL团队提供他需要的功能,以便他不直接寻址数据库,但通过那些更好地了解数据库本身的设计和错综复杂的人们。

+0

一个小小的更正:可以通过多个“图层”实现责任级别。但是,当这些层被部署在不同的进程中(在不同的物理机器中)时,它被称为一个层。因此,一个层次的重要要求是它应该可以部署并作为一个单独的过程进行部署。 – 2013-07-03 23:10:08

11

如果我们把层看成蛋糕层,每层都会有它自己的成分,并做它自己的事情。每个应用程序的层只与其上层或下层交互。

3层意味着蛋糕有3层。通常它的底部是数据,然后是应用程序逻辑层(PHP/ruby​​/etc),然后是顶部的表示层(html)

具有n层体系结构意味着您要为其设计多层图层。您拥有的图层数量取决于您决定如何制作它。

对于大型或Web应用程序来说,它似乎更有意义。

我通常会得到一个5层应用程序。每一层只能与其上面或下面的层进行交互。这可以在整个应用程序中提供出色的可扩展性和标准化。

客户层

Web浏览器


表示层

渲染HTML - ColdFusion的/闪光灯/红宝石/ PHP等。


业务逻辑层

运行的过程和计算需要 - ColdFusion的/闪光灯/红宝石/ PHP等。


数据集成层

(从我的开发语言查询,存储过程等)


数据层

(数据库 - MySQL等)