【发布时间】:2011-01-13 00:56:45
【问题描述】:
我无法理解哪些元素被称为第一层、第二层和第三层以及它们所在的位置。他们可以驻留在同一台机器还是不同的机器上。哪一层驻留在哪台机器上?我们如何将特定应用程序识别为 2 层应用程序或 3 层应用程序。请举例说明
【问题讨论】:
标签: architecture n-tier-architecture
我无法理解哪些元素被称为第一层、第二层和第三层以及它们所在的位置。他们可以驻留在同一台机器还是不同的机器上。哪一层驻留在哪台机器上?我们如何将特定应用程序识别为 2 层应用程序或 3 层应用程序。请举例说明
【问题讨论】:
标签: architecture n-tier-architecture
Wikipedia 解释得更好
从文章 - 顶部是第一层:
【讨论】:
首先,我们必须区分层和层。层是将代码逻辑分解为组件的方式,层是放置组件的物理节点。这个问题更好地解释了它: What's the difference between "Layers" and "Tiers"?
两层架构通常只是表示层和数据存储层。这些可以位于 1 层(1 台机器)或 2 层(2 台机器)上,以通过分配工作负载来获得更好的性能。
三层架构通常在表示层和数据存储层之间放置一些东西,例如业务逻辑层或服务层。同样,您可以将其分为 1、2 或 3 层,具体取决于您有多少硬件资金以及您期望的负载量。
将多台机器放在一个层中将通过提供冗余来帮助提高系统的稳健性。
下面是分层架构的一个很好的例子:
(来源:microsoft.com)
可以在 MSDN 上找到所有这些的良好参考: http://msdn.microsoft.com/en-us/library/ms978678.aspx
【讨论】:
这里有一些关于 2Tier 和 3Tier 区别的帮助,请参考下面。
回答:
1. 2Tier 是客户端服务器架构,3Tier 是客户端、服务器和数据库架构。
2. 3Tier有一个Middle stage来客户端与服务器通信,而2Tier客户端直接与服务器通信。
3. 3Tier 类似于 MVC,但拓扑结构不同
4. 3Tier是线性的意思是请求流是Client>>>Middle Layer(SErver application)>>>Databse server,Response是反向的。
而在 2Tier 它是一个三角视图 >>Controller>>Model
5. 3Tier就像网站,而Web浏览器是客户端应用程序(中间层),而ASP / PHP语言代码是服务器应用程序。
【讨论】:
层只不过是关注点的分离,通常表示层(用户可见的表单或页面)与数据层(类或文件与数据库交互)分离。这种分离是为了提高可维护性、可扩展性、可重用性、灵活性和性能。
可以在http://www.dotnetfunda.com/articles/article71.aspx阅读关于 3 层和 4 层架构的演示代码的很好的解释
【讨论】:
Dan 的链接中提供了一般解释。
对于您提出的具体问题:
它们可以驻留在同一台机器上,甚至在同一个进程中(Java 的 JVM)。这是一种逻辑上的区别(他们做了什么?),而不是物理上的区别(他们在哪里?)。
【讨论】:
在现代的两层架构中,服务器同时保存应用程序和数据。应用程序驻留在服务器上而不是客户端上,可能是因为服务器比 PC 拥有更多的处理能力和磁盘空间。
在三层架构中,数据和应用程序被拆分到单独的服务器上,服务器端分布在数据库服务器和应用程序服务器之间。客户端是前端,只是请求和显示数据。原因是每台服务器都将专用于处理数据或应用程序请求,因此系统更易于管理,资源争用更少。
【讨论】: