什么是三层架构?
三层架构将应用程序分为三个逻辑和物理计算层,是传统客户机/服务器应用程序的主要软件架构。
黑色和蓝色背景
什么是三层架构?

三层架构是一种十分完善的软件应用程序架构,它将应用程序组织成三个逻辑和物理计算层:表示层(或用户界面)、应用层(负责处理数据)和数据层(负责存储和管理与应用程序相关的数据)。 

三层架构的主要优势在于,由于每层都在自己的基础架构上运行,因此每层都可以由独立开发团队同时开发,并且可根据需要进行更新或扩展,而不会影响其他层。

数十年来,三层架构都是客户机/服务器应用程序的主要架构。 目前,大多数三层应用程序的目标是实现现代化、使用云原生技术(例如容器微服务)以及迁移到云端。

三层架构详细介绍

表示层

表示层是应用程序的用户界面和通信层,最终用户在此与应用程序进行交互。 其主要目的是向用户显示信息并从用户收集信息。 此顶级层的运行方式多样,例如,可以在 Web 浏览器上运行、作为桌面应用程序运行,或者作为图形用户界面 (GUI) 运行。 Web 表示层通常使用 HTML、CSS 和 JavaScript 开发。 可根据平台以各种不同语言编写桌面应用程序。

应用层

应用层,也称为逻辑层或中间层,是应用程序的核心。 在这一层,通过业务逻辑(即一组特定的业务规则)来处理表示层中收集的信息,有时还包括数据层中的其他信息。 应用层还可以添加、删除或修改数据层中的数据。 

应用层通常使用 Python、Java、Perl、PHP 或 Ruby 开发,并使用 API 调用与数据层通信。 

数据层

数据层有时称为数据库层、数据访问层或后端,用于存储和管理应用程序所处理的信息。 这可以是关系 数据库管理系统,例如 PostgreSQL、MySQL、MariaDB、Oracle、DB2、Informix 或 Microsoft SQL Server,也可以是 NoSQL 数据库服务器,如 Cassandra、CouchDB 或 MongoDB。    

在三层应用程序中,所有通信均通过应用层进行。 表示层和数据层无法直接相互通信。

层 (tier) 与层 (layer)

在讨论三层架构时,“layer”(层)与“tier”(层)通常被错误地互换使用,比如“表示层 (presentation layer)”或“业务逻辑层 (business logic layer)”。 

    

这两者并不相同。 “层 (layer)”是指软件的功能分区,而“层 (tier)”则是指在基础架构上运行的独立于其他分区的软件功能分区。 例如,手机中的“联系人”应用是一个层 (layer) 应用程序,但又是一个单层 (tier) 应用程序 ,因为三个层 (layer) 都在您的手机上运行。

   

这一区别很重要,因为层 (layer) 无法提供与层 (tier) 相同的收益。

三层架构的优势

同样,三层架构的主要优势在于其逻辑功能和物理功能的分离。 每一层都可以在最能满足其功能需求的单独操作系统和服务器平台上运行,例如 Web 服务器、应用程序服务器或数据库服务器。 每一层均在至少一个专用服务器硬件或虚拟服务器上运行,因此可以对每一层的服务进行定制和优化,而不会影响其他层。 

其他优势(与单层或双层架构相比)包括:

 
  • 加快了开发速度:因为每个层可以由不同团队同时开发,所以组织可以更快地将应用程序推向市场,而程序员也可以对每个层使用最新、最好的语言和工具。

  • 提高了可扩展性:任何层都可以根据需要独立于其他层进行扩展。

  • 改进了可靠性:一个层中的中断不太可能影响其他层的可用性或性能。

  • 提升了安全性:由于表示层和数据层无法直接通信,因此设计良好的应用层可以充当某种内部防火墙,阻止 SQL 注入和其他恶意攻击。
Web 开发中的三层应用程序

在 Web 开发中,层具有不同的名称,但执行类似的功能:

 
  • Web 服务器是表示层,提供用户界面。 这通常是一个网页或网站,例如,供用户将产品添加到购物车、添加支付详细信息或创建帐户的电子商务站点。 内容可以是静态的,也可以是动态的,通常使用 HTML、CSS 和 Javascript 进行开发。

  • 应用程序服务器对应于中间层,用于存放处理用户输入所用的业务逻辑。  仍以电子商务为例,这是用于查询库存数据库,以返回产品可用性或向客户概要文件添加详细信息的层。 此层通常使用 Python、Ruby 或 PHP 来开发,运行诸如 Django、Rails、Symphony 或 ASP.NET 之类的框架。

  • 数据库服务器是 Web 应用程序的数据层或后端层。 它依托数据库管理软件运行,如 MySQL、Oracle、DB2 或 PostgreSQL 等。
其他多层架构

虽然三层架构很容易成为采用最广泛的多层应用程序架构,但是工作或研究中还可能会遇到其他架构。

双层架构 

两层架构是原始的客户机/服务器架构,由表示层和数据层组成;业务逻辑位于表示层和/或数据层上。 在两层架构中,表示层(以及最终用户)可以直接访问数据层,并且业务逻辑通常会受到限制。 简单的联系人管理应用程序便是一个双层应用程序的例子,用户可以在其中输入和检索联系人数据。 

N 层架构

N 层架构也称为多层架构,是指任何具有多个层的应用程序架构。   但是,三层以上的应用程序很少,因为多出的层不会带来多少益处,但却会让应用程序运行更慢、更难管理且运行成本更高。 因此, N 层架构和多层架构通常指的是三层架构。

相关解决方案
IBM Cloud Paks®

通过在 Red Hat OpenShift 软件上运行的 IBM Cloud Pak® 解决方案更快迁移到云端 - 这些是经过 IBM 认证的集成、开放、容器化的解决方案。

探索 IBM Cloud Paks®
IBM Cloud® for VMware Solutions

利用 IBM Cloud® 无缝实现 VMware 工作负载和应用的现代化。

探索 IBM Cloud® for VMware Solutions
IBM Cloud Pak® for Applications

实现现代化、构建新应用、降低成本并实现 ROI 最大化。

探索 IBM Cloud Pak® for Applications
资源 什么是应用现代化?

了解什么是应用现代化、常见的收益和挑战以及如何着手。

什么是关系数据库?

了解关系数据库的工作方式及其与其他数据存储选择的比较情况。

什么是云原生?

探索云原生应用以及它们如何推动企业内的创新和实施速度。

采取下一步行动

IBM Cloud® 提供了一些产品和服务,可帮助您在云之旅中实现传统三层应用程序的现代化。不管是在策略、流程或功能方面需要帮助,还是希望全方位关注,都可以深入了解 IBM 如何帮助实现应用现代化。开始使用可以在任何云中运行的容器化中间件 - 所有功能都捆绑在 IBM Cloud Paks® 中。

了解有关 IBM Cloud Paks® 的更多信息