“分层”和“分层”有什么区别?和“Tiers" ?

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

151151 次浏览

阅读Scott Hanselman关于这个问题的帖子:关于“三/多层/分层架构/设计”的提醒:

记住,在《斯科特世界》中;(希望这也是你的世界:))一层;是一个部署单元,而“层”;是代码中责任的逻辑分离。你可能会说你有一个“3层”。系统,但要在一台笔记本电脑上运行。你可能会说你有一个“3层”;系统,但只有ASP。与数据库对话的NET页。精准就是力量,朋友们。

我使用层来描述我的解决方案组件中的架构师或技术堆栈。通常在涉及网络或进程间通信时,我使用层对这些组件进行逻辑分组。

我发现一个定义说,层是逻辑分离,层是物理分离。

逻辑只是一个方法 组织代码。典型的层 包括演示,业务和 数据——与传统相同 3层模型。但是当我们谈话的时候 关于层次,我们只讨论 代码的逻辑组织。在任何 方式是暗示这些层 可以在不同的电脑上运行 一个不同的进程 计算机甚至在单个进程中 在一台电脑上。我们所做的一切 讨论的是组织会议的方法吗 代码放入由定义的一组层 特定的功能。< / p >

物理然而,只有about 代码运行的位置。具体地说, 层是层所在的地方 已部署和层运行的位置。在 换句话说,层是物理的

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

层指的是代码的逻辑分离。逻辑层帮助您更好地组织代码。例如,应用程序可以具有以下层。

  1. 表示层或UI层
  2. 业务层或业务逻辑层
  3. 数据访问层或数据层

上述三个层驻留在它们自己的项目中,可能是3个项目,甚至更多。当我们编译这些项目时,我们得到了相应的层DLL。现在我们有3个dll了。

根据我们部署应用程序的方式,我们可能有1到3层。因为我们现在有3个DLL,如果我们将所有DLL部署在同一台机器上,那么我们只有1个物理层,但有3个逻辑层。

如果我们选择将每个DLL部署在单独的机器上,那么我们就有3层和3层。

层是逻辑上的分离,层是物理上的分离。我们也可以说层是层的物理部署。

是的,我亲爱的朋友说得对。 层是应用程序的逻辑分区,层是系统的物理分区 层划分依赖于层划分。就像一个应用程序在单机上运行一样,它遵循三层架构,所以我们可以说层架构可以存在于一个层架构中。 简单来说,3层架构可以在单机上实现,那么我们可以说它是1层架构。如果我们在不同的机器上实现每一层,那么它被称为 3层架构。一个层也可以运行几个层。 在层结构中,相关组件可以很容易地相互通信 就像我们遵循下面给出的architecture

  1. 表示层
  2. 业务逻辑层
  3. 数据访问层
客户端可以与“表示层”交互,但由于安全原因,客户端访问了“业务逻辑层”下面层的公共组件(如业务逻辑层的公共组件) 问:为什么我们使用层结构? 因为如果我们实现了层结构,我们就可以像

那样提高应用程序的效率

= = >安全

= = >可管理性

= = >可伸缩性

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

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

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

简单的例子

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

  1. 门房
  2. 现金的人
  3. 负责介绍银行方案的人
  4. 经理

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

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

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

  1. 门房
  2. 现金的人
  3. 负责介绍银行方案的人
  4. 经理

层和层的概念完全一样。

  1. 在通俗英语中,Tier指的是“在一个结构的一系列行或层中,每一个都放在另一个之上”。而Layer指的是“覆盖在表面或物体上的一张、数量或厚度,通常是几种材料中的一种”。

  2. 层是一个物理单位,代码/进程运行在那里。例如:客户端、应用服务器、数据库服务器;

    层是一个逻辑单元,如何组织的代码。例如:表示(视图)、控制器、模型、存储库、数据访问。

  3. 层表示设计的表示、业务、服务和数据功能在不同的计算机和系统之间的物理分离。

    层是组成应用程序或服务的软件组件的逻辑分组。它们有助于区分组件执行的不同类型的任务,从而更容易创建支持组件可重用性的设计。每个逻辑层包含许多分组为子层的离散组件类型,每个子层执行特定类型的任务。

两层模式表示客户机和服务器。

在此场景中,客户机和服务器可能存在于同一台机器上,也可能位于两台不同的机器上。下图演示了一个常见的Web应用程序场景,其中客户机与位于客户机层的Web服务器交互。该层包含表示层逻辑和任何所需的业务层逻辑。Web应用程序与承载数据库层的独立机器通信,数据库层包含数据层逻辑。

Layers vs Tiers

分层的优点:

    分层帮助你最大限度地提高代码的可维护性,优化 应用程序以不同方式部署时的工作方式, 并提供一个明确的划定之间的位置,其中一定 必须做出技术或设计决策 将您的层放在单独的物理层上可以提高性能 通过将负载分布到多个服务器。它也有帮助 通过隔离更敏感的组件和层来实现安全性

1层应用程序可以是3层应用程序。

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

为什么总想用复杂的词?

A = 代码的一部分,如果你的应用程序是一个蛋糕,这是一片。

A = 物理机器,服务器。

一个层承载一个或多个层。


层的例子:

  • 表示层=通常是所有与用户界面相关的代码
  • 数据访问层=与数据库访问相关的所有代码

层:

你的代码托管在服务器上=你的代码托管在一个层上。

你的代码托管在2个服务器上=你的代码托管在2层上。

例如,一台机器承载Web站点本身(表示层),另一台机器更安全地承载所有更安全的代码(真正的业务代码-业务层、数据库访问层等)。


实现分层架构有很多好处。这很棘手,正确实现分层应用程序需要时间。如果你有一些,看看这篇来自微软的文章:http://msdn.microsoft.com/en-gb/library/ee658109.aspx

在应用程序和层之间的通信是显式和松散耦合的逻辑分离。[__abc1, __abc2, __abc3]

Tiers 是单个计算机(进程)中__ABC0[托管在Individual servers上]的物理分离。

enter image description here

如图所示:

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
< p > n-Tier优势:
更好的安全性 < br > 可伸缩性 随着组织的发展,您可以使用DB-Clustering扩展您的DB-Tier,而不涉及其他层。 < br > 可维护性 :网页设计师可以改变视图代码,而不需要触及其他层上的其他层。 < br > 轻松升级或Enhance [示例:您可以添加额外的应用程序代码,升级存储区域,甚至为移动,平板电脑,pc等单独的设备添加多个显示层]

enter image description here博客

我喜欢下面来自微软应用程序体系结构指南的描述

层描述了应用程序中功能和组件的逻辑分组;而层描述了功能和组件在独立服务器、计算机、网络或远程位置上的物理分布。尽管层和层使用相同的名称集(表示、业务、服务和数据),但请记住,只有层意味着物理分离。

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

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

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

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

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

  1. 3台没有操作系统的物理机。
  2. 1个物理机,3个没有操作系统的虚拟机。

    (这是一个3层(硬件)应用程序)

  3. 1台物理机,3台虚拟机,3个不同/相同的操作系统

    (这是一个3 (OS)层应用程序)

  4. 1个物理机,1个虚拟机,1个操作系统,3个应用服务器

    (这是一个3-(AppServer)层应用程序)

  5. 1个物理机,1个虚拟机,1个操作系统,1个AppServer, 3个DBMS

    (这是一个3层(DBMS)应用程序)

  6. 1个物理机,1个虚拟机,1个操作系统,1个应用服务器和1个DBMS,但3个Excel工作簿。

    (这是一个3-(AppServer)层应用程序)

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

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

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

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

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

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

:)


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