在软件工程中,多层体系结构(multitier architecture)(通常称为n层体系结构)或多层(multilayered architecture)体系结构是一种客户机-服务器体系结构,其中表示、应用程序处理和数据管理功能是物理分离的。多层体系结构最广泛的应用是三层体系结构。
N层应用程序体系结构提供了一个模型,通过该模型,开发人员可以创建灵活且可重用的应用程序。通过将应用程序分为不同的层,开发人员获得了修改或添加特定层的选项,而不是重写整个应用程序。三层体系结构通常由表示层、域逻辑层和数据存储层组成。
虽然层和层的概念通常可以互换使用,但有一个相当普遍的观点是确实存在差异。这种观点认为,层是构成软件解决方案的元素的逻辑结构机制,而层是系统基础结构的物理结构机制。[1][2]例如,三层解决方案可以很容易地部署在单层上,例如个人工作站。[3]
层
“层”架构模式在各种出版物中都有描述
公共层
在具有面向对象设计的信息系统的逻辑多层体系结构中,以下四种是最常见的:
- 表示层(亦称UI层、视图层、多层架构中的表示层)
- 应用层(即服务层[5][6]或控制层[7])
- 业务层(也称为业务逻辑层(BLL),域层)
- 数据访问层(也称为持久层、日志、网络和支持特定业务层所需的其他服务)
书籍《领域驱动的设计》描述了上述四个层的一些常见用途,尽管它的主要焦点是领域层
如果应用程序体系结构在业务层和表示层之间没有明确的区别(即表示层被认为是业务层的一部分),那么就实现了传统的客户机-服务器(两层)模型。[需要引用]
更常见的约定是,应用层(或服务层)被视为业务层的子层,通常封装呈现支持的业务功能的API定义。实际上,可以进一步细分应用程序/业务层,以强调具有不同职责的其他子层。例如,如果使用model-view-presenter模式,presenter子层可以用作用户界面层和业务/应用层之间的附加层(由model子层表示)。[需要引用]
有些还标识了一个称为业务基础设施层 (business infrastructure layer )(BI)的单独层,位于业务层和基础设施层之间。它有时也称为“低级业务层”或“业务服务层”。此层非常通用,可以在多个应用程序层中使用(例如CurrencyConverter)。[9]
基础设施层可以划分为不同的级别(高级或低级技术服务)。[9]开发人员通常关注基础设施层的持久性(数据访问)功能,因此只讨论持久性层或数据访问层(而不是基础设施层或技术服务层)。换句话说,其他类型的技术服务并不总是被明确地看作是任何特定层的一部分
一层在另一层之上,因为这取决于它。每一层都可以没有上面的层而存在,并且需要下面的层起作用。另一个常见的观点是,层并不总是严格依赖于下面的相邻层。例如,在一个松散的分层系统(与严格的分层系统相反)中,一个层也可以依赖于它下面的所有层。[4]
三层体系结构
三层应用程序概述。
三层体系结构是一种客户机-服务器软件架构模式,其中用户界面(表示)、功能流程逻辑(业务规则)、计算机数据存储和数据访问作为独立模块进行开发和维护,最常见的是在不同的平台上。[10]它是由John J.Donovan在Open Environment Corporation(OEC)开发的,OEC是他在马萨诸塞州剑桥创建的一家工具公司。
除了具有定义良好的接口的模块化软件的通常优点外,三层体系结构还允许三层中的任何一层独立地升级或替换,以响应需求或技术的变化。例如,表示层中操作系统的更改只会影响用户界面代码。
通常,用户界面运行在台式PC机或工作站上,并使用标准图形用户界面、功能过程逻辑(可能由运行在工作站或应用服务器上的一个或多个单独模块组成)和数据库服务器或包含计算机数据存储逻辑的大型机上的RDBMS。中间层可以是多层的(在这种情况下,整个体系结构称为“n层体系结构”)。
表示层
这是应用程序的最顶层。表示层显示与诸如浏览商品、购买和购物车内容等服务相关的信息。它与其他层通信,通过这些层将结果输出到浏览器/客户端层和网络中的所有其他层。简单地说,它是一个用户可以直接访问的层(如网页或操作系统的GUI)。
应用层(业务逻辑、逻辑层或中间层)
逻辑层是从表示层中提取出来的,作为它自己的层,它通过执行详细的处理来控制应用程序的功能。
数据层
数据层包括数据持久性机制(数据库服务器、文件共享等)和封装持久性机制并公开数据的数据访问层。数据访问层应向应用层提供一个API,该API公开管理存储数据的方法,而不公开或创建对数据存储机制的依赖关系。避免对存储机制的依赖,允许在应用层客户端不受更改影响甚至不知道更改的情况下进行更新或更改。与任何层的分离一样,实现都要付出代价,而性能往往要付出代价,以换取更好的可伸缩性和可维护性。
Web开发使用
在web开发领域,通常使用三层来指代网站,通常是电子商务网站,它们使用三层来构建:
- 前端web服务器:提供静态内容和可能缓存的动态内容。在基于web的应用程序中,前端是由浏览器呈现的内容。内容可以是静态的,也可以是动态生成的。
- 应用服务器:中等动态内容处理和生成级别的(例如Symfony、Spring、ASP.NET、Django、Rails、Node.js)。
- 后端数据库或数据存储,包括数据集和数据库管理系统软件,用于管理和提供对数据的访问。
其他注意事项
层之间的数据传输是体系结构的一部分。所涉及的协议可以包括SNMP、CORBA、Java RMI、.NET Remoting、Windows通信基础、sockets、UDP、web服务或其他标准或专有协议中的一个或多个。通常,中间件用于连接不同的层。单独的层通常(但不一定)在单独的物理服务器上运行,并且每个层本身可能在集群上运行。
可追溯性
通过n层系统的数据流的端到端跟踪是一项具有挑战性的任务,随着系统复杂性的增加,这项任务变得更加重要。应用程序响应度量定义了用于度量性能和关联层之间事务的概念和api。通常,术语“层”用于描述系统组件在单独的服务器、计算机或网络(处理节点)上的物理分布。三层体系结构将有三个处理节点。术语“层”是指组件的逻辑分组,其物理上可能位于或可能不位于一个处理节点上。
原文:https://en.wikipedia.org/wiki/Multitier_architecture
本文:
讨论:请加入知识星球或者微信圈子【首席架构师圈】
- 登录 发表评论
- 325 次浏览
最新内容
- 3 days 4 hours ago
- 3 days 6 hours ago
- 3 days 6 hours ago
- 5 days 22 hours ago
- 6 days 5 hours ago
- 6 days 6 hours ago
- 6 days 6 hours ago
- 6 days 6 hours ago
- 1 week 3 days ago
- 1 week 3 days ago