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

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

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

但是物理只是关于代码运行的地方。 具体而言,层是部署图层的位置以及层运行的位置。 换句话说,层是层的物理部署。

来源:Rockford Lhotka, 应该所有的应用程序都是N层的吗?

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

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

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

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

前三层分别在自己的项目中,可能是三个项目,甚至更多。 当我们编译项目时,我们得到了各自的层DLL。 所以我们现在有3个DLL。

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

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

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

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

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

一层 = 一台物理机器 ,一台服务器。

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


图层示例:

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

一级:

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

您的代码托pipe在2个服务器上=您的代码托pipe在2个层上。

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


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

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

  1. 用普通的英语, Tier指的是“每个在一个结构上排列的结构的一系列行或层次”,而Layer指的是“一个表面,数量或厚度的材料,通常是几个之一,覆盖表面或身体“。
  2. 层是代码/进程运行的物理单元 。 例如:客户端,应用服务器,数据库服务器;

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

  3. 层级表示您的devise在不同计算机和系统上的performance,业务,服务和数据function的物理分离。

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

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

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

层与层

层和层的优点:

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

  • 将您的图层放置在不同的物理层上可以通过在多个服务器上分配负载来帮助提高性能。 它还可以通过将更敏感的组件和层分离到不同的networking或互联网与内联网来帮助实现安全。

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

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

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

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

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

==>安全

==>pipe理

==>可扩展性

其他需要像开发应用程序之后,我们需要更改dbms或修改业务逻辑等,那么这是必要的。

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

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

简单的例子

就像在一个商会开的银行一样,员工在哪个类别:

  1. 守门员
  2. 一个人的现金
  3. 一个负责引进银行计划的人
  4. 经理

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

如果我们要去贷款的目的,那么首先门卫开门笑了之后,我们去所有的贷款scheme附近的一个人,我们去经理舱去通过贷款。 最后我们去收银台柜台借贷。 这些是银行的层次结构。

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

  1. 守门员
  2. 一个人的现金
  3. 一个负责引进银行计划的人
  4. 经理

层和层完全相同的概念。

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

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

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

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

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

一个图层是具有自己的核心逻辑和边界的软件的逻辑模块。

层是一个或多个层的物理容器,例如跨networking的服务器或同一虚拟机的多个实例,以负载平衡的方式工作。

1.在三层体系结构中,DAL(Databse层),BLL(Bissiness层)和UIL(UI层)可以在同一台机器上工作,而在一个三层架构中客户机在一台机器上,应用服务器托pipe在另一台机器而数据库服务器驻留在另一台机器上。

2.层次体系结构将提高可读性和可重用性,最大限度地减less由于其他层次变化的影响而导致的应用程序变更。 虽然三层体系结构具有3层+可扩展性的所有优点,因为应用将部署在不同的机器上,因此负载将在各层之间共享,并且可扩展性将会增加。