什么是N层架构?

199

最近我看到了很多招聘 IT 开发者的工作职位,其中有一句话写得差不多是这样的:“必须具备 N 层架构经验”或者“必须能够开发 N 层应用程序”。

这让我想问,什么是 N 层架构?如何获得相关经验?


2
有趣的是,这篇帖子也在问什么是N-Tier架构,但答案完全不同。https://dev59.com/bVrUa4cB1Zd3GeqPn9sb。似乎软件和硬件都有N-Tier架构。 - Noremac
14个回答

1
一个N层应用程序是指涉及到超过三个组件的应用程序。 这些组件包括:
  • 缓存
  • 消息队列,用于异步行为
  • 负载均衡器
  • 搜索服务器,用于搜索大量数据
  • 处理大量数据的组件
  • 运行异构技术的组件,通常称为Web服务等。
所有社交应用程序,如Instagram、Facebook,大规模行业服务,如Uber、Airbnb,在线大型多人游戏,如Pokemon Go,以及具有花哨功能的应用程序都是N层应用程序。

0

马丁·福勒清晰地表明:

分层是软件设计师用来拆分复杂软件系统的最常见技术之一。您可以在机器架构中看到它,其中层从编程语言降至具有操作系统调用的设备驱动程序和CPU指令集, 并降至芯片内部的逻辑门。网络中FTP建立在TCP之上,TCP建立在IP之上,而IP建立在以太网之上。

当以层次结构思考系统时,您可以想象软件中的主要子系统以某种形式排列成一层蛋糕,其中每个层都基于下层。在此方案中,更高层使用由较低层定义的各种服务, 但较低层不知道更高层。此外,每个层通常将其下层隐藏在上面的层中,因此层4使用层3的服务,后者使用层2的服务,但层4不知道层2。(并非所有分层体系结构都像这样不透明, 但大多数都是-或者更准确地说,大多数都是不透明的。)

将系统分解为层具有许多重要的好处。

• 您可以了解单个层作为一个整体而不知道其他层的细节。您可以了解如何在TCP之上构建FTP服务,而不必了解以太网的细节。

• 您可以通过替代实现同一基本服务的图层来进行替换。FTP服务可以在以太网、PPP或电缆公司使用的任何情况下不更改地运行。

• 最小化图层之间的依赖关系。如果电缆公司更改其物理传输系统,只要他们让IP正常工作,我们就不必更改我们的FTP服务。

• 图层是标准化的好地方。TCP和IP是标准,因为它们定义了它们的图层应如何操作。

• 一旦您构建了一个图层,您就可以将其用于许多更高级别的服务。因此,FTP、telnet、SSH和HTTP都使用TCP/IP。否则,所有这些更高级别的协议都必须编写自己的低级协议。由Kyle Geoffrey Passarelli的图书馆提供

分层是一种重要的技术,但也存在缺点。

• 图层封装一些东西(但并非全部)很好。结果有时会出现级联更改。在分层企业应用程序中,这个典型的例子是添加需要在UI上显示的字段,必须在数据库中,因此必须添加到每个中间层。

• 额外的层可能会损害性能。在每个层次上,通常需要将事物从一种表示形式转换为另一种表示形式。然而,封装底层函数通常可以带来效率提升,这超过了任何代价。控制事务的层可以进行优化,然后使所有操作变得更快。 但分层架构最困难的部分是决定应该有哪些层以及每个层的责任应该是什么。


0

N层架构是一种多层或多层次的客户端-服务器架构,将表示、处理和数据功能分为逻辑上和物理上不同的层。应用程序中超过三层很少见,因为它们提供的好处很少,可能会使应用程序变得更慢、更难管理和更昂贵。

N层架构的优点

  1. 可维护性高,因为在每个层中维护、调试和部署组件要容易得多。
  2. N层架构支持重用。
  3. 灵活性得到增强,因为可以根据需求扩展每个层。
  4. 实施N层架构时,可大幅增强可扩展性。
  5. N层架构中的安全性得到提高,因为使用不同的方法在每个层中确保安全性。

有关更多详细信息,请查看以下内容-


-1

层是具有相似功能并满足相同需求的计算机组。层存在于安全性和可扩展性方面。典型的现代Web应用程序是三层结构(也称为“瘦客户端”):

第一层(客户端层)。代码在您的浏览器中运行,以及系统所有用户的浏览器中运行(数百万台计算机)。最少或没有业务或应用逻辑,只有GUI逻辑。

第二层(应用程序层)。表示在服务器上运行的应用程序和业务逻辑的后端代码(数千台计算机)。所有重要工作都在这里完成。

第三层(持久化层)。关系数据库节点以主/从方式连接(数十台计算机)。

N层意味着可能会有其他计算机组,例如缓存、代理或其他中介。

三层架构并不总是如此。二十年前,2层设计(客户端层+持久化层,又称为“厚客户端”)是普遍存在的。

重要提示:“层”和“层次”的概念经常混淆。层是始终物理分离的设备组(通过网络或进程边界),而“层次”是纯粹的软件术语。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接