“Layers”和“Tiers”的区别是什么?


当前回答

当你谈论表示、服务、数据、网络层时,你是在谈论层。 当你“分别部署它们”时,你谈论的是层。

Tiers是关于部署的。 这样说吧:我们有一个应用程序,它有一个用Angular创建的前端,它有一个像MongoDB一样的后端,还有一个在前端和后端之间交互的中间层。因此,当前端应用程序、数据库应用程序和中间层都单独部署时,我们称其为3层应用程序。

好处:如果我们将来需要扩展后端,我们只需要独立地扩展后端,而不需要扩展前端。

其他回答

Logical layers are merely a way of organizing your code. Typical layers include Presentation, Business and Data – the same as the traditional 3-tier model. But when we’re talking about layers, we’re only talking about logical organization of code. In no way is it implied that these layers might run on different computers or in different processes on a single computer or even in a single process on a single computer. All we are doing is discussing a way of organizing a code into a set of layers defined by specific function. Physical tiers however, are only about where the code runs. Specifically, tiers are places where layers are deployed and where layers run. In other words, tiers are the physical deployment of layers.

来源:Rockford Lhotka,所有应用程序都应该是n层吗?

层是概念实体,用于从逻辑角度分离软件系统的功能;当你实现系统时,你使用不同的方法组织这些层;在这种情况下,我们不称它们为层,而是称它们为层。

从技术上讲,Tier可以是代码运行所需的一种最小环境。

例如,假设一个3层应用程序可以运行

3 physical machines with no OS . 1 physical machine with 3 virtual machines with no OS. (That was a 3-(hardware)tier app) 1 physical machine with 3 virtual machines with 3 different/same OSes (That was a 3-(OS)tier app) 1 physical machine with 1 virtual machine with 1 OS but 3 AppServers (That was a 3-(AppServer)tier app) 1 physical machine with 1 virtual machine with 1 OS with 1 AppServer but 3 DBMS (That was a 3-(DBMS)tier app) 1 physical machine with 1 virtual machine with 1 OS with 1 AppServers and 1 DBMS but 3 Excel workbooks. (That was a 3-(AppServer)tier app)

Excel工作簿是运行VBA代码所需的最低环境。

这3个工作簿可以放在一台物理计算机上,也可以放在多个物理计算机上。

我注意到,在实践中,人们在应用描述上下文中说“层”时,指的是“操作系统层”。

也就是说,如果一个应用运行在3个不同的操作系统上,那么它就是一个3层应用。

所以从学究角度来说,描述应用程序的正确方法是

“1至3层能力,运行在2层”应用程序。

:)


层只是应用程序中职责功能分离的代码类型(例如,表示,数据,安全等)。

Yes my dear friends said correctly. Layer is a logical partition of application whereas tier is physical partition of system tier partition is depends on layer partition. Just like an application execute on single machine but it follows 3 layered architecture, so we can say that layer architecture could be exist in a tier architecture. In simple term 3 layer architecture can implement in single machine then we can say that its is 1 tier architecture. If we implement each layer on separate machine then its called 3 tier architecture. A layer may also able to run several tier. In layer architecture related component to communicate to each other easily. Just like we follow given below architecture

表示层 业务逻辑层 数据访问层

客户端可以与“表示层”进行交互,但出于安全考虑,客户端可以访问“业务逻辑层”下一层的公共组件(如业务逻辑层的公共组件)。 问:为什么我们使用层结构? 因为如果我们实现了层结构,我们就能提高应用程序的效率

= = >安全

= = >可管理性

= = >可伸缩性

其他需求,如开发应用程序后,我们需要改变DBMS或修改业务逻辑等,那么这是必要的。

问:为什么我们要使用分层架构?

因为每一层的物理实现都提供了更好的效率,没有层架构我们就无法实现层架构。分离机实现分离 层和分离层是实现一个或多个层这就是我们使用它的原因。 它用于容错目的。 ==>易于维护。

简单的例子

就像银行开在一个房间里,员工在里面分类:

门房 现金的人 负责介绍银行方案的人 经理

它们都是系统的相关组件。

如果我们去银行贷款,首先是一个门卫微笑着开门 之后我们就去就近介绍所有贷款方案的人 我们去经理小屋,通过贷款。 在那之后,最后我们去收银台贷款。 这些是银行的层结构。

层级呢? 一家银行的分行开在一个城镇,接着又开在另一个城镇,接着又开在另一个城镇 但是每个分支的基本要求是什么呢

门房 现金的人 负责介绍银行方案的人 经理

层和层的概念完全一样。

层是应用程序内相关功能[代码]的逻辑分离,层之间的通信是显式和松散耦合的。[表示逻辑,应用逻辑,数据访问逻辑]

层是在单个计算机(进程)中[托管在单个服务器上]的层的物理分离。

如图所示:

1-Tier & 3-Layers « App Logic  with out DB access store data in a files.
2-Tier & 3-Layers « App Logic & DataStorage-box.
2-Tier & 2-Layers « Browser View[php] & DataStorage[procedures]
2-Tier & 1-Layers « Browser View[php] & DataStorage, query sending is common.
3-Tier & n-Layer  « Browser View[php], App Logic[jsp], DataStorage

n层优势: 更好的安全性 可伸缩性:随着组织的发展,您可以使用DB-Clustering扩展您的DB-Tier,而不涉及其他层。 可维护性:Web设计人员可以更改视图代码,而无需触及其他层上的其他层。 轻松升级或增强[例如:您可以添加额外的应用程序代码,升级存储区域,甚至为移动,平板电脑,pc等单独的设备添加多个显示层]

来自博客的图表