【发布时间】:2011-11-08 10:15:49
【问题描述】:
在传统意义上,N 层意味着将应用程序分成“层”,并将每个“层”放在不同的服务器上。这样做至少有 3 个原因:
-
维护:
a) 代码维护:更容易进行错误修复和功能添加。
b) 硬件维护:关闭一台服务器不会中断其他层的服务。
性能:一台服务器通常不够快,无法同时处理 Web 请求、业务逻辑计算和数据库/文件访问。
-
可扩展性:特别是水平可扩展性
a) 容错:每层能够拥有超过 1 台物理服务器意味着当 1 台服务器停机时,应用程序仍然可以作为一个整体运行。
b) 负载平衡:拥有一个层的多个实例有助于服务大量请求。
如今,硬件和网络的速度足以在一台服务器上每秒处理数千个请求。此外,现在 IT 的流行词是“整合”。因此,即使应用程序被分成多个层,它们最终也可能会托管在单个服务器上的虚拟机上。
我认为现在人们谈论 N 层架构时,他们谈论的是应用程序内的关注点分离。它更像是一种逻辑分离而不是物理分离。我认为只要我们实现了良好的关注点分离和松耦合,应用程序就不必是 N 层的。似乎许多程序员认为 N 层架构是每个 Web 应用程序都必须遵守的黄金标准。
那么,现在对您而言,N 层架构是什么?
【问题讨论】:
标签: web-applications architecture n-tier-architecture separation-of-concerns