【发布时间】:2010-09-12 08:04:02
【问题描述】:
“层”和“层”有什么区别?
【问题讨论】:
-
我在软件界遇到的几乎每个人都可以互换使用这两个术语,就好像它们完全一样。
标签: architecture
“层”和“层”有什么区别?
【问题讨论】:
标签: architecture
阅读 Scott Hanselman 关于该问题的帖子:A reminder on "Three/Multi Tier/Layer Architecture/Design":
但请记住,在“Scott World”(希望也是您的世界 :))中,“Tier”是一个部署单元,而“Layer”是代码中职责的逻辑分离。您可能会说您有一个“3 层”系统,但要在一台笔记本电脑上运行它。您可能会说您有一个“3 层”系统,但只有与数据库通信的 ASP.NET 页面。朋友们,精准有力量。
【讨论】:
我使用层来描述我的解决方案组件中的架构师或技术堆栈。当涉及网络或进程间通信时,我通常使用层对这些组件进行逻辑分组。
【讨论】:
我找到了一个定义,说层是逻辑分离,层是物理分离。
【讨论】:
逻辑层只是一种 组织你的代码。典型层 包括演示、商务和 数据——与传统相同 3层模型。但是当我们说话的时候 关于层,我们只是在谈论 代码的逻辑组织。在没有 方式是否暗示这些层 可能在不同的计算机上运行或在 不同的进程在一个单一的 计算机甚至在单个进程中 在一台计算机上。我们正在做的一切 正在讨论一种组织方式 代码到由定义的一组层中 具体功能。
物理层然而,只是关于 代码运行的地方。具体来说, 层是层所在的地方 部署和层运行的位置。在 换句话说,层是物理的 层的部署。
来源:Rockford Lhotka,Should all apps be n-tier?
【讨论】:
层是指代码的逻辑分离。逻辑层可帮助您更好地组织代码。例如,一个应用程序可以具有以下层。
以上三层驻留在自己的项目中,可能是 3 个项目,甚至更多。当我们编译项目时,我们会得到相应的层 DLL。所以我们现在有 3 个 DLL。
根据我们部署应用程序的方式,我们可能有 1 到 3 层。由于我们现在有 3 个 DLL,如果我们将所有 DLL 部署在同一台机器上,那么我们只有 1 个物理层,但有 3 个逻辑层。
如果我们选择将每个 DLL 部署在单独的机器上,那么我们就有 3 层和 3 层。
因此,Layers 是一种逻辑分离,而 Tiers 是一种物理分离。我们也可以说层是层的物理部署。
【讨论】:
是的,我亲爱的朋友说得对。
层是应用程序的逻辑分区,而层是系统的物理分区
层分区依赖于层分区。就像应用程序在单机上执行但它遵循 3 层架构一样,因此我们可以说层架构可以存在于层架构中。
简单来说 3 层架构可以在单机上实现,那么我们可以说它是 1 层架构。如果我们在单独的机器上实现每一层,那么它被称为
3层架构。一个层也可能能够运行多个层。
在层架构相关的组件之间可以轻松地相互通信。
就像我们遵循下面给出的架构
客户端可以与“表示层”交互,但出于安全原因,他们将下层的公共组件(如业务逻辑层的公共组件)访问到“业务逻辑层”。
Q * 为什么我们使用层架构?
因为如果我们实现层架构,那么我们会提高应用程序的效率,例如
==>安全
==>可管理性
==>可扩展性
其他需要,比如在开发应用程序后,我们需要更改dbms或修改业务逻辑等。那么都是必要的。
Q * 为什么我们使用分层架构?
因为每一层的物理实现提供了更好的效率,没有层架构我们无法实现层架构。分机实现分机
层和单独的层是实现一个或多个层,这就是我们使用它的原因。
它用于容错。
==>易于维护。
简单例子
就像一间开在密室里的银行,员工属于哪几类:
它们都是系统的相关组件。
如果我们去银行贷款,那么首先看门人会微笑着开门 在那之后,我们去附近介绍所有贷款计划的人 我们去经理舱并通过贷款。 之后,最后我们去收银台取款。 这些是银行的分层架构。
层级呢? 一家银行在一个城镇开设分行,然后在另一个城镇,然后在另一个城镇 但是每个分支的基本要求是什么
layer 和 tier 的概念完全一样。
【讨论】:
在简单的英语中,Tier 指的是“在结构的一系列行或层中的每一个都放置在另一个之上”,而Layer 指的是“一张、数量或厚度的材料,通常几个之一,覆盖表面或身体”。
层是一个物理单元,代码/进程在其中运行。例如:客户端、应用服务器、数据库服务器;
层是一个逻辑单元,如何组织代码。例如:表示(视图)、控制器、模型、存储库、数据访问。
层表示您的设计在不同的计算机和系统之间的演示、业务、服务和数据功能的物理分离。
层是构成应用程序或服务的软件组件的逻辑分组。它们有助于区分组件执行的不同类型的任务,从而更容易创建支持组件可重用性的设计。每个逻辑层都包含许多分立的组件类型,这些组件类型分组为子层,每个子层执行特定类型的任务。
两层模式代表一个客户端和一个服务器。
在这种情况下,客户端和服务器可能存在于同一台机器上,也可能位于两台不同的机器上。下图说明了一个常见的 Web 应用程序场景,其中客户端与位于客户端层的 Web 服务器交互。该层包含表示层逻辑和任何所需的业务层逻辑。 Web 应用程序与托管数据库层的单独机器进行通信,其中包含数据层逻辑。
层和层的优势:
分层可帮助您最大限度地提高代码的可维护性,优化 应用程序以不同方式部署时的工作方式, 并在某些地点之间提供清晰的界限 必须做出技术或设计决策。
将层放置在单独的物理层上有助于提高性能 通过在多个服务器之间分配负载。它也可以帮助 通过隔离更敏感的组件和层来确保安全 在不同的网络或 Internet 上与 Intranet 上。
1 层应用程序可以是 3 层应用程序。
【讨论】:
层是概念实体,用于从逻辑角度分离软件系统的功能;当您实施系统时,您使用不同的方法组织这些层;在这种情况下,我们将它们称为层而不是层。
【讨论】:
为什么总是尝试使用复杂的词?
A layer = 你的代码的一部分,如果你的应用是一块蛋糕,这就是一个切片。
层 = 物理机,服务器。
一个层承载一个或多个层。
图层示例:
层级:
您的代码托管在服务器上 = 您的代码托管在一个层上。
您的代码托管在 2 台服务器上 = 您的代码托管在 2 层。
例如,一台机器托管网站本身(表示层),另一台更安全的机器托管所有安全敏感代码(真正的业务代码 - 业务层、数据库访问层等)。
实施分层架构有很多好处。这很棘手,并且正确实施分层应用程序需要时间。如果你有的话,看看微软的这篇文章:http://msdn.microsoft.com/en-gb/library/ee658109.aspx
【讨论】:
层 是应用程序内related-functional[code] 的逻辑分离,层之间的通信是显式且松散耦合的。 [Presentation logic, Application logic, Data Access logic]
Tiers 是layers [托管在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
n-Tier 优势:
更好的安全性
可扩展性 :随着组织的发展,您可以使用 DB-Clustering 扩展您的 DB-Tier,而无需触及其他层。
可维护性 :网页设计师可以更改视图代码,而无需触及其他层在其他层。
轻松升级或增强[例如:您可以添加额外的应用程序代码、升级存储区域,甚至为移动设备、平板电脑、PC 等独立设备添加多个表示层] p>
图来自blog
【讨论】:
我喜欢Microsoft Application Architecture Guide 2下面的描述
层描述了应用程序中功能和组件的逻辑分组;而层描述了功能和组件在不同服务器、计算机、网络或远程位置上的物理分布。尽管层和层都使用相同的名称集(表示、业务、服务和数据),但请记住,只有层意味着物理分离。
【讨论】:
当您谈论表示、服务、数据、网络层时,您是在谈论层。 当您“单独部署它们”时,您谈论的是层。
Tiers 是关于部署的。 这么说吧:我们有一个应用程序,它有一个在 Angular 中创建的前端,它有一个 MongoDB 的后端和一个在前端和后端之间进行交互的中间层。所以,当这个前端应用程序、数据库应用程序和中间层都单独部署时,我们说它是一个 3 层应用程序。
好处:如果我们以后需要扩展后端,我们只需要独立扩展后端,不需要扩展前端。
【讨论】:
从技术上讲,Tier 可以是代码运行所需的一种最低环境。
例如假设一个 3 层应用程序可以在
上运行1 台物理机和 3 台没有操作系统的虚拟机。
(那是一个 3 层(硬件)层应用程序)
1 台物理机和 3 台虚拟机和 3 个不同/相同的操作系统
(那是一个 3-(操作系统)层应用程序)
1 个物理机,1 个虚拟机,1 个操作系统,3 个 AppServers
(那是一个 3-(AppServer)层应用程序)
1 个物理机,1 个虚拟机,1 个操作系统,1 个 AppServer,3 个 DBMS
(那是一个 3-(DBMS)层应用程序)
1 台物理机,1 个虚拟机,1 个操作系统,1 个 AppServers 和 1 个 DBMS,但 3 个 Excel 工作簿。
(那是一个 3-(AppServer)层应用程序)
Excel 工作簿是运行 VBA 代码所需的最低环境。
这 3 个工作簿可以放在一台或多台物理计算机上。
我注意到,实际上人们在应用描述上下文中说“层”时指的是“操作系统层”。
也就是说,如果一个应用程序在 3 个独立的操作系统上运行,那么它就是一个 3 层应用程序。
所以描述应用程序的一种迂腐正确的方式是
“支持 1 到 3 层,在 2 层上运行”应用程序。
:)
层只是关于应用程序职责功能分离的代码类型(例如演示、数据、安全等)
【讨论】: