“层”和“层”之间有什么区别?


214

“层”和“层”之间有什么区别?


3
我在软件领域遇到的几乎每个人都可以互换使用这两个术语,就好像它们完全一样。
RBT

Answers:


260

逻辑仅仅是组织代码的一种方式。典型的层包括表示,业务和数据–与传统的3层模型相同。但是,当我们谈论层时,我们只是在谈论代码的逻辑组织。绝不暗示这些层可以在不同的计算机上运行,​​也可以在单个计算机上的不同进程中运行,甚至可以在单个计算机上的单个进程中运行。我们正在做的是讨论一种将代码组织到由特定功能定义的一组层中的方法。

但是,物理仅与代码的运行位置有关。具体来说,层是部署层和运行层的地方。换句话说,层是层的物理部署。

资料来源:罗克福德·洛特卡(Rockford Lhotka),所有应用程序都应该是n层吗?


43

阅读有关该问题的Scott Hanselman的文章:http : //www.hanselman.com/blog/AReminderOnThreeMultiTierLayerArchitectureDesignBroughtToYouByMyLateNightFrustrations.aspx

但是请记住,在“ Scott World”(希望您的世界也是如此)中,“ Tier”是部署的单元,而“ Layer”是代码内职责的逻辑分离。您可能会说您拥有“三层”系统,但是只能在一台笔记本电脑上运行它。您可能会说您有一个“三层”系统,但是只有与数据库对话的ASP.NET页。朋友们,精确就是力量。


36

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

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

至少三个层驻留在自己的项目中,可能是3个项目,甚至更多。编译项目时,我们将获得相应的层DLL。因此,我们现在有3个DLL。

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

如果我们选择将每个DLL部署在单独的计算机上,则我们将分为3层和3层。

因此,层是逻辑隔离,层是物理隔离。我们也可以说,层是层的物理部署。


我从您的回答中了解到,我们可以在三台不同的服务器上部署3层(DLL)。对 ?您能告诉我如何在表示层上引用业务逻辑层吗?
Mazhar Khan 2013年

@MazharKhan您可能想使用服务将业务层功能暴露给表示层
Amit Saxena 2014年

32

为什么总是尝试使用复杂的单词?

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

= 物理机,一台服务器。

一层托管一个或多个层。


图层示例:

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

等级:

您的代码托管在服务器上=您的代码托管在层上。

您的代码托管在2台服务器上=您的代码托管在2层上。

例如,一台托管网站本身的计算机(表示层),另一台托管所有对安全性更高的代码(真实业务代码-业务层,数据库访问层等)的主机,则更加安全。


实现分层体系结构有很多好处。这很棘手,正确实施分层应用程序需要花费时间。如果有的话,请看一下微软的这篇文章:http : //msdn.microsoft.com/en-gb/library/ee658109.aspx


13

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


10
  1. 用简单的英语来说,是Tier指“结构的一系列行或级别中的每一个彼此放置”,而是Layer指“材料的薄片,数量或厚度,通常是覆盖表面或主体的一种或几种”。

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

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

  3. 层表示跨独立的计算机和系统将设计的表示,业务,服务和数据功能进行物理隔离。

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

两层模式代表客户端和服务器。

在这种情况下,客户端和服务器可能存在于同一台计算机上,或者可能位于两台不同的计算机上。下图说明了一个常见的Web应用程序场景,其中客户端与位于客户端层的Web服务器进行交互。该层包含表示层逻辑和任何必需的业务层逻辑。该Web应用程序与承载数据库层的另一台计算机进行通信,该数据库层包含数据层逻辑。

层与层

层和层的优点:

  • 分层可以帮助您最大化代码的可维护性,优化以不同方式部署时应用程序的工作方式,并在必须做出某些技术或设计决策的位置之间提供清晰的界限。

  • 通过将负载分布在多台服务器上,将层放在单独的物理层上可以提高性能。通过将更敏感的组件和层隔离到不同的网络或Internet或Intranet上,它也可以帮助提高安全性。

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


6

是的,我亲爱的朋友们说的没错。层是应用程序的逻辑分区,而层是系统的物理分区。层分区取决于层分区。就像应用程序在单台机器上执行一样,它遵循三层体系结构,因此可以说层体系结构可以存在于分层体系结构中。简单地说,三层体系结构可以在单台机器上实现,那么我们可以说它是1层体系结构。如果我们在单独的机器上实现每个层,则称为3层体系结构。一层可能还可以运行多个层。在层体系结构中相关的组件可以轻松地彼此通信。
就像我们遵循下面给出的架构

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

客户端可以与“表示层”进行交互,但是由于安全原因,它们将下一层的公共组件(如业务逻辑层的公共组件)访问到“业务逻辑层”。
问*为什么使用图层体系结构?因为如果我们实施层体系结构,那么我们可以提高应用程序的效率,例如

==>安全性

==>可管理性

==>可扩展性

其他需求,例如在开发应用程序后,我们需要更改dbms或修改业务逻辑等。这对所有人都是必要的。

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

因为在物理上实现每层都可以提供更高的效率,所以没有层架构,我们就无法实现层架构。使用单独的机器来实现单独的层,而单独的层是实现一层或多层,这就是我们使用它的原因。
它用于容错的目的。==>易于维护。

简单的例子

就像银行在商会中开张一样,雇员的类别如下:

  1. 看门人
  2. 一个现金人
  3. 负责介绍银行计划的人
  4. 经理

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

如果我们要为贷款目的而银行,那么首先要是一个门卫微笑着打开门,然后我们去找一个介绍所有贷款方案的人附近,然后我们去经理机房并通过贷款。之后,最后我们去收银员柜台借贷。这些是银行的层架构。

那层呢?一家银行的支行在一个城镇中开设,然后在另一个城镇中开设,然后在另一个城镇中开设,但是每个分支机构的基本要求是什么

  1. 看门人
  2. 一个现金人
  3. 负责介绍银行计划的人
  4. 经理

层和层的概念完全相同。


亲爱的伟大解释
Dulaj Kulathunga

6

related-functionality[code] 应用程序内部的逻辑分离,层之间的通信是显式的且松散耦合的。[表示逻辑,应用逻辑,数据访问逻辑]

layers一台单独的计算机(进程)中[托管在单独的服务器上]的物理分隔。

在此处输入图片说明

如图所示:

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设计人员可以更改视图代码,而无需接触其他层的其他层。
轻松升级或增强[例如:您可以添加其他应用程序代码,升级存储区域,甚至可以为移动设备,平板电脑,个人电脑等单独的设备添加多个表示层。


6

我喜欢Microsoft应用程序体系结构指南2中的以下描述

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


5

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


1

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

例如,假设3层应用可以在

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

    (那是一个3-(硬件)层的应用程序)

  3. 1台物理机和3个虚拟机以及3个不同/相同的OS

    (那是一个3-(OS)层的应用程序)

  4. 1台物理机和1台虚拟机,1台操作系统但3台AppServer

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

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

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

  6. 1台物理机,1台虚拟机,1台OS,1个AppServer和1个DBMS,但3个Excel工作簿。

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

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

这三个工作簿可以位于单个物理计算机上,也可以位于多个物理计算机上。

我已经注意到,实际上,人们在应用程序描述上下文中说“ Tier”时就表示“ OS Tier”。

也就是说,如果一个应用程序在3个单独的操作系统上运行,则其3层应用程序。

因此,描述应用的一种学究正确的方法是

“具有1至3层能力,可在2层上运行”的应用程序。

:)


就应用程序的职责分离而言,层只是代码的类型(例如,表示,数据,安全性等)


0

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


0

当您谈论表示层,服务,数据,网络层时,您所谈论的是层。当您“分别部署”时,您会谈论层次。

层级是关于部署的。这样做:我们有一个应用程序,该应用程序在Angular中创建了一个前端,它有一个作为MongoDB的后端,以及一个在前端和后端之间进行交互的中间层。因此,当这个前端应用程序,数据库应用程序和中间层都分别部署时,我们说它是3层应用程序。

好处:如果将来需要扩展后端,则只需要独立扩展后端即可,而无需扩展前端。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.