“Layers”和“Tiers”的区别是什么?


当前回答

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

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

其他回答

In plain english, the Tier refers to "each in a series of rows or levels of a structure placed one above the other" whereas the Layer refers to "a sheet, quantity, or thickness of material, typically one of several, covering a surface or body". Tier is a physical unit, where the code / process runs. E.g.: client, application server, database server; Layer is a logical unit, how to organize the code. E.g.: presentation (view), controller, models, repository, data access. Tiers represent the physical separation of the presentation, business, services, and data functionality of your design across separate computers and systems. Layers are the logical groupings of the software components that make up the application or service. They help to differentiate between the different kinds of tasks performed by the components, making it easier to create a design that supports reusability of components. Each logical layer contains a number of discrete component types grouped into sublayers, with each sublayer performing a specific type of task.

两层模式表示客户机和服务器。

在此场景中,客户机和服务器可能存在于同一台机器上,也可能位于两台不同的机器上。下图演示了一个常见的Web应用程序场景,其中客户机与位于客户机层的Web服务器交互。该层包含表示层逻辑和任何所需的业务层逻辑。Web应用程序与承载数据库层的独立机器通信,数据库层包含数据层逻辑。

分层的优点:

Layering helps you to maximize maintainability of the code, optimize the way that the application works when deployed in different ways, and provide a clear delineation between locations where certain technology or design decisions must be made. Placing your layers on separate physical tiers can help performance by distributing the load across multiple servers. It can also help with security by segregating more sensitive components and layers onto different networks or on the Internet versus an intranet.

1层应用程序可以是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等单独的设备添加多个显示层]

来自博客的图表

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

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

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

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