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

时间:2008-09-23 11:32:13

标签: architecture

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

13 个答案:

答案 0 :(得分:234)

  

逻辑图层仅仅是一种方式   组织你的代码。典型的图层   包括演讲,商业和   数据 - 与传统相同   3层模型。但是当我们说话的时候   关于层,我们只谈论   代码的逻辑组织。没有   方式是暗示这些层   可能在不同的计算机上运行或在   单一的不同过程   计算机甚至是一个过程   在一台计算机上。我们所做的一切   正在讨论一种组织方式   代码定义为一组图层   具体功能。

     然而,

物理只是关于   代码运行的地方。特别,   层是层的所在   部署和层运行的位置。在   换句话说,等级是物理的   部署层。

来源:Rockford Lhotka,Should all apps be n-tier?

答案 1 :(得分:41)

阅读Scott Hanselman关于此问题的帖子:http://www.hanselman.com/blog/AReminderOnThreeMultiTierLayerArchitectureDesignBroughtToYouByMyLateNightFrustrations.aspx

  

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

答案 2 :(得分:29)

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

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

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

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

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

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

答案 3 :(得分:22)

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

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

等级 = 物理机,即服务器。

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

图层示例:

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

层:

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

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

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

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

答案 4 :(得分:12)

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

答案 5 :(得分:8)

  1. 简单来说,Tier指的是“每个结构的一系列行或级别中的每一个都放在另一个之上”,而Layer指的是“表,数量或厚度”材料,通常是几个中的一个,覆盖表面或主体“。
  2. Tier是物理单元,代码/进程在其中运行。例如:客户端,应用服务器,数据库服务器;

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

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

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

  4. 双层模式代表客户端和服务器。

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

    Layers vs Tiers

    图层和层级的优点:

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

    • 将图层放置在不同的物理层上可以帮助提高性能 通过在多个服务器之间分配负载。它也可以帮助 通过隔离更敏感的组件和层来实现安全性

    • 。在不同的网络或互联网上与内联网。

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

答案 6 :(得分:4)

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

答案 7 :(得分:4)

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

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

    那样提高应用程序效率

    ==>安全

    ==>可管理性

    ==>可扩展性

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

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

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

    简单示例

    就像在一个房间里开的银行一样,员工在哪个类别:

    1. 守门员
    2. 一个现金的人
    3. 负责介绍银行计划的人
    4. 管理器
    5. 它们都是系统的相关组成部分。

      如果我们去银行贷款,那么首先门卫会微笑地打开门 之后我们去附近介绍所有贷款计划的人 我们去经理舱并通过贷款。 在那之后我们最终去收银台的柜台贷款。 这些是银行的层架构。

      等级怎么样? 一个银行的分支在一个城镇开放,之后在另一个城镇开放,之后在另一个城镇开放 但每个分支的基本要求是什么

      1. 守门员
      2. 一个现金的人
      3. 负责介绍银行计划的人
      4. 管理器
      5. 层和层的概念完全相同。

答案 8 :(得分:4)

我喜欢Microsoft Application Architecture Guide 2

中的以下说明
  

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

答案 9 :(得分:3)

图层 是应用程序中related-functionality[code]的逻辑分隔,图层之间的通信是明确的,松散耦合。 [表示逻辑,应用程序逻辑,数据访问逻辑]

Tiers 是个人计算机(进程)中layers [托管在各个服务器上]的物理分离。

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

n - Tier优势:
更好的安全性
可扩展性 :随着您的组织的发展,您可以通过DB-Clustering扩展您的DB-Tier,而无需触及其他层。
可维护性 :网页设计师可以更改视图代码,而无需触及其他层上的其他图层。
轻松升级或增强 [例如:您可以添加其他应用程序代码,升级存储区域,甚至可以为移动,平板电脑,PC等单独设备添加多个演示层]

答案 10 :(得分:0)

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

答案 11 :(得分:0)

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

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

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

答案 12 :(得分:0)

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

例如假设3层应用可以在

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

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

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

    (那是一个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代码所需的最低环境。

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

我注意到,实际上,人们在应用程序描述上下文中说“ Tier”时的意思是“ OS Tier”。

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

因此,描述应用程序的正确方法是

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

:)


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