柘荣资讯网

微软:什么是N层体系结构?

传统上,开发应用程序是分层的,并且经常使用MVC。这里的N层体系结构更关注服务之间的层次结构,而不是单个应用程序内部。与微服务不同,微服务之间的关系相等,并且N层体系结构中的各个层相互关联。这种架构在实践中非常广泛。在微服务的设计中,某些微服务具有这样的特性,并且只能在特定的层上提供服务。

微软淘汰了这种架构,我认为这是可取的,让我们为程序之间的调用模式提供更丰富的理论系统支持。

欢迎跟随我。

N层体系结构将应用程序分为逻辑层和物理层。

层是分离职责和管理依赖关系的方法。每层都有特定的责任。较高的层可以在较低的层中使用服务,反之亦然。

层在物理上是分开的,并在不同的计算机上运行。一层可以直接调用另一层,也可以使用异步消息传递(消息队列)。尽管每个层都可以托管在其自己的层中,但这不是必需的。多个层可以托管在同一层上。物理上分开的层可以提高可伸缩性和弹性,但是由于额外的网络流量而增加了延迟。

传统的三层应用程序具有表示层,中间层和数据库层。中间层是可选的。更复杂的应用程序可以具有三层以上。上图显示了一个具有两个中间层并封装了不同功能区域的应用程序。

N层应用程序可以具有封闭层体系结构或开放层体系结构:

在封闭层体系结构中,一层只能调用紧邻的下一层。在开放层体系结构中,层可以调用其下的任何层。

封闭层体系结构限制了层之间的依赖性。但是,如果一层仅将请求传递到下一层,则可能会产生不必要的流量。

N层体系结构通常实现为服务体系结构(IaaS)应用程序,每个层都在单独的VM集中运行。但是,N层应用程序不必仅仅是IaaS。通常,将托管服务用于体系结构的某些部分是有利的,尤其是缓存,消息传递和数据存储。

考虑将N层架构用于:

一个简单的Web应用程序。只需最少的重构,即可将本机应用程序迁移到Azure。本地和云应用程序的统一开发。

N层体系结构在传统的本机应用程序中很常见,因此很适合将现有工作负载迁移到Azure。

在云和本地之间,云平台是可移植的。对于大多数开发人员而言,学习曲线较少。自然地从传统的应用程序模型演变而来。开放到异构环境(Windows/Linux)可以很容易地获得仅在数据库上执行CRUD操作的中间层,从而增加了额外的延迟,而没有做任何有用的工作。单一设计可防止功能的独立部署。与仅使用托管服务的应用程序管理相比,管理IaaS应用程序的工作更多。在大型系统中管理网络安全性很困难。使用自动缩放来处理负载的变化。使用异步消息传递来分离层。缓存半静态数据。为要使用的解决方案配置高可用性,例如数据库层SQL Server Always On可用性组。在前端和Internet之间放置一个Web应用程序防火墙(WAF)。将每一层放置在其自己的子网中,并将子网用作安全边界。通过仅允许来自中间层的请求来限制对数据层的访问。

从:文档。 microsoft.com/zh-cn/azure/architecture/guide/architecture-styles/n-tier