240

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

4

13 回答 13

283

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

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

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

于 2008-09-23T11:44:42.880 回答
50

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

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

于 2008-09-23T11:34:40.907 回答
45

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

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

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

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

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

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

于 2011-06-03T10:06:03.620 回答
43

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

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

=物理机、服务器。

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


图层示例:

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

等级:

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

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

例如,一台机器托管网站本身(表示层),另一台更安全的机器托管所有对安全敏感的代码(真正的业务代码 - 业务层、数据库访问层等)。


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

于 2015-05-06T10:11:00.347 回答
17

我找到了一个定义,说层是逻辑分离,层是物理分离。

于 2008-09-23T11:42:09.000 回答
13
  1. 用简单的英语来说,theTier指的是“在结构的一系列行或层次中,每一个都位于另一个之上”,而 theLayer指的是“一块、数量或厚度的材料,通常是几种材料中的一种,覆盖一个表面或主体”。

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

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

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

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

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

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

层与层

层和层的优点:

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

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

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

于 2013-12-19T05:32:06.903 回答
11

是应用程序内部的逻辑分离,related-functional[code]层之间的通信是显式且松散耦合的。[ Presentation logic, Application logic, Data Access logic]

是单个计算机(进程)中[托管在]上的物理分离。layersIndividual 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优势:
更好的安全
可扩展性 :随着组织的发展,您可以使用 DB-Clustering 扩展您的 DB-Tier,而无需触及其他层。
可维护性 :网页设计师可以更改视图代码,而无需触及其他层上的其他层。
轻松升级或增强[例如:您可以添加额外的应用程序代码、升级存储区域,甚至为单独的设备(如移动设备、平板电脑、PC)添加多个表示层]

在此处输入图像描述来自博客 的图表

于 2016-03-13T13:26:38.710 回答
8

我喜欢Microsoft Application Architecture Guide 2中的以下描述

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

于 2017-07-05T06:10:24.877 回答
7

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

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

客户端可以与“表示层”交互,但出于安全原因,他们将下层的公共组件(如业务逻辑层的公共组件)访问到“业务逻辑层”。
Q * 为什么我们使用层架构?因为如果我们实现层架构,那么我们会提高我们的应用程序效率,比如

==>安全

==>可管理性

==>可扩展性

其他需要,例如在开发应用程序后,我们需要更改 dbms 或修改业务逻辑等。那么这一切都是必要的。

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

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

简单的例子

就像在密室中开设的银行一样,员工分为以下几类:

  1. 看门人
  2. 一个要钱的人
  3. 负责引入银行计划的人
  4. 经理

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

如果我们去银行贷款,那么首先一个看门人微笑着开门,然后我们走到一个介绍所有贷款方案的人附近,然后我们去经理舱并通过贷款。之后,最后我们去收银台取款。这些是银行的层架构。

层级呢?银行分行开在一个镇,然后在另一个镇,然后在另一个,但是每个分行的基本要求是什么

  1. 看门人
  2. 一个要钱的人
  3. 负责引入银行计划的人
  4. 经理

层和层的概念完全相同。

于 2013-03-11T10:50:12.887 回答
5

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

于 2008-09-23T11:37:43.147 回答
2

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

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

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

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

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

    (那是一个 3-(操作系统)层应用程序)

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

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

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

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

  6. 1 台物理机和 1 个虚拟机,1 个操作系统,1 个 AppServers 和 1 个 DBMS,但 3 个 Excel 工作簿。

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

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

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

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

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

因此,描述应用程序的一种迂腐正确的方式是

“支持 1 到 3 层,在 2 层上运行”应用程序。

:)


层只是与应用程序的职责功能分离相关的代码类型(例如 Presentation、Data、Security 等)

于 2019-03-07T11:23:08.187 回答
1

当您谈论表示、服务、数据、网络层时,您正在谈论层。当您“单独部署它们”时,您谈论的是层。

层级是关于部署的。这么说吧:我们有一个应用程序,它有一个在 Angular 中创建的前端,它有一个 MongoDB 的后端和一个在前端和后端之间进行交互的中间层。所以,当这个前端应用程序、数据库应用程序和中间层都单独部署时,我们说它是一个三层应用程序。

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

于 2018-08-08T10:00:08.333 回答
0

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

于 2014-02-12T15:00:39.367 回答