“Layers”和“Tiers”的区别是什么?
当前回答
层指的是代码的逻辑分离。逻辑层帮助您更好地组织代码。例如,应用程序可以具有以下层。
表示层或UI层 业务层或业务逻辑层 数据访问层或数据层
上述三个层驻留在它们自己的项目中,可能是3个项目,甚至更多。当我们编译这些项目时,我们得到了相应的层DLL。现在我们有3个dll了。
根据我们部署应用程序的方式,我们可能有1到3层。因为我们现在有3个DLL,如果我们将所有DLL部署在同一台机器上,那么我们只有1个物理层,但有3个逻辑层。
如果我们选择将每个DLL部署在单独的机器上,那么我们就有3层和3层。
层是逻辑上的分离,层是物理上的分离。我们也可以说层是层的物理部署。
其他回答
层是概念实体,用于从逻辑角度分离软件系统的功能;当你实现系统时,你使用不同的方法组织这些层;在这种情况下,我们不称它们为层,而是称它们为层。
层是应用程序内相关功能[代码]的逻辑分离,层之间的通信是显式和松散耦合的。[表示逻辑,应用逻辑,数据访问逻辑]
层是在单个计算机(进程)中[托管在单个服务器上]的层的物理分离。
如图所示:
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设计人员可以更改视图代码,而无需触及其他层上的其他层。 轻松升级或增强[例如:您可以添加额外的应用程序代码,升级存储区域,甚至为移动,平板电脑,pc等单独的设备添加多个显示层]
来自博客的图表
为什么总想用复杂的词?
一层=你的代码的一部分,如果你的应用程序是一个蛋糕,这是一片。
一层=一台物理机器,一台服务器。
一个层承载一个或多个层。
层的例子:
表示层=通常是所有与用户界面相关的代码 数据访问层=与数据库访问相关的所有代码
层:
你的代码托管在服务器上=你的代码托管在一个层上。
你的代码托管在2个服务器上=你的代码托管在2层上。
例如,一台机器承载Web站点本身(表示层),另一台机器更安全地承载所有更安全的代码(真正的业务代码-业务层、数据库访问层等)。
实现分层架构有很多好处。这很棘手,正确实现分层应用程序需要时间。如果你有一些,看看微软的这篇文章:http://msdn.microsoft.com/en-gb/library/ee658109.aspx
从技术上讲,Tier可以是代码运行所需的一种最小环境。
例如,假设一个3层应用程序可以运行
3 physical machines with no OS . 1 physical machine with 3 virtual machines with no OS. (That was a 3-(hardware)tier app) 1 physical machine with 3 virtual machines with 3 different/same OSes (That was a 3-(OS)tier app) 1 physical machine with 1 virtual machine with 1 OS but 3 AppServers (That was a 3-(AppServer)tier app) 1 physical machine with 1 virtual machine with 1 OS with 1 AppServer but 3 DBMS (That was a 3-(DBMS)tier app) 1 physical machine with 1 virtual machine with 1 OS with 1 AppServers and 1 DBMS but 3 Excel workbooks. (That was a 3-(AppServer)tier app)
Excel工作簿是运行VBA代码所需的最低环境。
这3个工作簿可以放在一台物理计算机上,也可以放在多个物理计算机上。
我注意到,在实践中,人们在应用描述上下文中说“层”时,指的是“操作系统层”。
也就是说,如果一个应用运行在3个不同的操作系统上,那么它就是一个3层应用。
所以从学究角度来说,描述应用程序的正确方法是
“1至3层能力,运行在2层”应用程序。
:)
层只是应用程序中职责功能分离的代码类型(例如,表示,数据,安全等)。
阅读Scott Hanselman关于这个问题的帖子:关于“三/多层/层架构/设计”的提醒:
请记住,在“Scott的世界”(希望也是你的世界:)中,“Tier”是一个部署单元,而“Layer”是代码中责任的逻辑分离。你可能会说你有一个“三层”系统,但在一台笔记本电脑上运行它。你可能会说你有一个“三层”系统,但只有ASP。与数据库对话的NET页。精准就是力量,朋友们。