“Layers”和“Tiers”的区别是什么?
阅读Scott Hanselman关于这个问题的帖子:关于“三/多层/分层架构/设计”的提醒:
记住,在《斯科特世界》中;(希望这也是你的世界:))一层;是一个部署单元,而“层”;是代码中责任的逻辑分离。你可能会说你有一个“3层”。系统,但要在一台笔记本电脑上运行。你可能会说你有一个“3层”;系统,但只有ASP。与数据库对话的NET页。精准就是力量,朋友们。
我使用层来描述我的解决方案组件中的架构师或技术堆栈。通常在涉及网络或进程间通信时,我使用层对这些组件进行逻辑分组。
我发现一个定义说,层是逻辑分离,层是物理分离。
逻辑层只是一个方法 组织代码。典型的层 包括演示,业务和 数据——与传统相同 3层模型。但是当我们谈话的时候 关于层次,我们只讨论 代码的逻辑组织。在任何 方式是暗示这些层 可以在不同的电脑上运行 一个不同的进程 计算机甚至在单个进程中 在一台电脑上。我们所做的一切 讨论的是组织会议的方法吗 代码放入由定义的一组层 特定的功能。< / p > 物理层然而,只有about 代码运行的位置。具体地说, 层是层所在的地方 已部署和层运行的位置。在 换句话说,层是物理的
逻辑层只是一个方法 组织代码。典型的层 包括演示,业务和 数据——与传统相同 3层模型。但是当我们谈话的时候 关于层次,我们只讨论 代码的逻辑组织。在任何 方式是暗示这些层 可以在不同的电脑上运行 一个不同的进程 计算机甚至在单个进程中 在一台电脑上。我们所做的一切 讨论的是组织会议的方法吗 代码放入由定义的一组层 特定的功能。< / p >
物理层然而,只有about 代码运行的位置。具体地说, 层是层所在的地方 已部署和层运行的位置。在 换句话说,层是物理的
来源:Rockford Lhotka, 所有应用程序都应该是n层的吗?< / >
层指的是代码的逻辑分离。逻辑层帮助您更好地组织代码。例如,应用程序可以具有以下层。
上述三个层驻留在它们自己的项目中,可能是3个项目,甚至更多。当我们编译这些项目时,我们得到了相应的层DLL。现在我们有3个dll了。
根据我们部署应用程序的方式,我们可能有1到3层。因为我们现在有3个DLL,如果我们将所有DLL部署在同一台机器上,那么我们只有1个物理层,但有3个逻辑层。
如果我们选择将每个DLL部署在单独的机器上,那么我们就有3层和3层。
层是逻辑上的分离,层是物理上的分离。我们也可以说层是层的物理部署。
= = >安全
= = >可管理性
= = >可伸缩性
其他需求,如开发应用程序后,我们需要改变DBMS或修改业务逻辑等,那么这是必要的。
问:为什么我们要使用分层架构?
,因为每一层的物理实现都提供了更好的效率,没有层架构我们就无法实现层架构。分离机实现分离 层和单独的层是实现一个或多个层这就是我们使用它的原因 它用于容错目的。 ==>容易维护。
简单的例子
就像银行开在一个房间里,员工在里面分类:
它们都是系统的相关组件。
tier怎么样? 一家银行的分行开在一个城镇,接着又开在另一个城镇,接着又开在另一个城镇 但是每个分支的基本要求是什么
层和层的概念完全一样。
在通俗英语中,Tier指的是“在一个结构的一系列行或层中,每一个都放在另一个之上”。而Layer指的是“覆盖在表面或物体上的一张、数量或厚度,通常是几种材料中的一种”。
Tier
Layer
层是一个物理单位,代码/进程运行在那里。例如:客户端、应用服务器、数据库服务器;
层是一个逻辑单元,如何组织的代码。例如:表示(视图)、控制器、模型、存储库、数据访问。
层是组成应用程序或服务的软件组件的逻辑分组。它们有助于区分组件执行的不同类型的任务,从而更容易创建支持组件可重用性的设计。每个逻辑层包含许多分组为子层的离散组件类型,每个子层执行特定类型的任务。
两层模式表示客户机和服务器。
在此场景中,客户机和服务器可能存在于同一台机器上,也可能位于两台不同的机器上。下图演示了一个常见的Web应用程序场景,其中客户机与位于客户机层的Web服务器交互。该层包含表示层逻辑和任何所需的业务层逻辑。Web应用程序与承载数据库层的独立机器通信,数据库层包含数据层逻辑。
分层的优点:
1层应用程序可以是3层应用程序。
层是概念实体,用于从逻辑角度分离软件系统的功能;当你实现系统时,你使用不同的方法组织这些层;在这种情况下,我们不称它们为层,而是称它们为层。
为什么总想用复杂的词?
A 层 = 代码的一部分,如果你的应用程序是一个蛋糕,这是一片。
A 层 = 物理机器,服务器。
一个层承载一个或多个层。
层的例子:
层:
你的代码托管在服务器上=你的代码托管在一个层上。
你的代码托管在2个服务器上=你的代码托管在2层上。
例如,一台机器承载Web站点本身(表示层),另一台机器更安全地承载所有更安全的代码(真正的业务代码-业务层、数据库访问层等)。
实现分层架构有很多好处。这很棘手,正确实现分层应用程序需要时间。如果你有一些,看看这篇来自微软的文章:http://msdn.microsoft.com/en-gb/library/ee658109.aspx
层 在应用程序和层之间的通信是显式和松散耦合的逻辑分离。[__abc1, __abc2, __abc3]
Tiers 是单个计算机(进程)中__ABC0[托管在Individual servers上]的物理分离。
Individual servers
如图所示:
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
从博客
我喜欢下面来自微软应用程序体系结构指南的描述
层描述了应用程序中功能和组件的逻辑分组;而层描述了功能和组件在独立服务器、计算机、网络或远程位置上的物理分布。尽管层和层使用相同的名称集(表示、业务、服务和数据),但请记住,只有层意味着物理分离。
Tiers是关于部署的。 这样说吧:我们有一个应用程序,它有一个用Angular创建的前端,它有一个像MongoDB一样的后端,还有一个在前端和后端之间交互的中间层。因此,当前端应用程序、数据库应用程序和中间层都单独部署时,我们称其为3层应用程序
好处:如果我们将来需要扩展后端,我们只需要独立地扩展后端,而不需要扩展前端。
从技术上讲,Tier可以是代码运行所需的一种最小环境。
例如,假设一个3层应用程序可以运行
1个物理机,3个没有操作系统的虚拟机。
(这是一个3层(硬件)应用程序)
1台物理机,3台虚拟机,3个不同/相同的操作系统
(这是一个3 (OS)层应用程序)
1个物理机,1个虚拟机,1个操作系统,3个应用服务器
(这是一个3-(AppServer)层应用程序)
1个物理机,1个虚拟机,1个操作系统,1个AppServer, 3个DBMS
(这是一个3层(DBMS)应用程序)
1个物理机,1个虚拟机,1个操作系统,1个应用服务器和1个DBMS,但3个Excel工作簿。
Excel工作簿是运行VBA代码所需的最低环境。
这3个工作簿可以放在一台物理计算机上,也可以放在多个物理计算机上。
我注意到,在实践中,人们在应用描述上下文中说“层”时,指的是“操作系统层”。
也就是说,如果一个应用运行在3个不同的操作系统上,那么它就是一个3层应用。
所以从学究角度来说,描述应用程序的正确方法是
“1至3层能力,运行在2层”应用程序。
:)
层只是应用程序中职责功能分离的代码类型(例如,表示,数据,安全等)。