在传统的意义上,N层意味着将应用程序分成“层”,并将每个“层”放在不同的服务器上。这样做至少有三个原因:
1. 维护: a) 代码维护:更容易进行错误修复和功能添加。 b) 硬件维护:关闭一个服务器不会影响其他层提供服务。
2. 性能:通常一个服务器无法同时处理Web请求、业务逻辑计算和数据库/文件访问。
3. 可扩展性:具体是水平可扩展性 a) 容错能力:每个层可以有多个物理服务器,这意味着当一个服务器关闭时,应用程序仍然可以作为整体运行。 b) 负载均衡:拥有多个层的实例可以帮助处理大量请求。
如今,硬件和网络足以在单个服务器上每秒服务数千个请求。此外,IT领域的流行词是“整合”。即使应用程序被分成了层,它们可能最终也将托管在单个服务器上的虚拟机上。
我认为,如今当人们谈论N层架构时,他们谈论的是应用程序内部的关注点分离。这更多是一种逻辑分离而不是物理分离。我认为只要我们实现良好的关注点分离和松耦合,应用程序就不必是N层架构。只是似乎许多程序员认为N层架构是每个Web应用程序必须遵守的黄金标准。
那么,对于您来说,N层架构是什么?
1. 维护: a) 代码维护:更容易进行错误修复和功能添加。 b) 硬件维护:关闭一个服务器不会影响其他层提供服务。
2. 性能:通常一个服务器无法同时处理Web请求、业务逻辑计算和数据库/文件访问。
3. 可扩展性:具体是水平可扩展性 a) 容错能力:每个层可以有多个物理服务器,这意味着当一个服务器关闭时,应用程序仍然可以作为整体运行。 b) 负载均衡:拥有多个层的实例可以帮助处理大量请求。
如今,硬件和网络足以在单个服务器上每秒服务数千个请求。此外,IT领域的流行词是“整合”。即使应用程序被分成了层,它们可能最终也将托管在单个服务器上的虚拟机上。
我认为,如今当人们谈论N层架构时,他们谈论的是应用程序内部的关注点分离。这更多是一种逻辑分离而不是物理分离。我认为只要我们实现良好的关注点分离和松耦合,应用程序就不必是N层架构。只是似乎许多程序员认为N层架构是每个Web应用程序必须遵守的黄金标准。
那么,对于您来说,N层架构是什么?