什么是中间件 (Middleware)?

中间件 (Middleware) 通过简化应用、应用组件和后端数据源之间的连接,加速分布式应用的开发。
一副插图,其中显示了如何使用中间件并通过简化连接来加速分布式应用程序的开发

发布日期:2024 年 7 月 31 日
撰稿人:Stephanie Susnjara、Ian Smalley

什么是中间件 (Middleware)??

中间件 (Middleware) 是一种软件,可在分布式网络中的应用程序或组件之间实现一种或多种通信或连接,中间件本质上充当了将不同系统绑定在一起的“软件粘合剂”。

中间件的智能化功能可在最初设计为互不联通的平台之间建立连接,从而简化应用程序开发并加速上市。

各种类型的中间件包括:

  • 消息代理或事务处理监控器,侧重于某一种通信。
  • Web 应用程序服务器或移动设备中间件,可提供构建特定类型应用程序所需的全部通信和连接功能。
  • 支持开发人员搭建自己的定制化中间件。
什么是中间件?

中间件 (Middleware) 是一种软件,支持在分布式网络中的应用或应用组件之间建立一种或多种通信或连接。 中间件支持更轻松地将那些设计为不能相互连接的应用连接起来,并支持采用智能方式进行连接,从而简化了应用开发流程,加快了产品上市速度。

中间件有很多种。 一些中间件专注于一种类型的通信,如消息代理或事务处理监控器。   另一些中间件则为构建特殊类型的应用提供所需的全部通信和连接功能,如 Web 应用服务器或移动设备中间件。 还有一些中间件则充当中央集成中心,连接企业中的所有组件,如基于云的集成平台即服务 (iPaaS) 产品或企业服务总线 (EBS)。 (甚至还有一些中间件支持开发者构建自己的定制中间件。)

中间件之所以得此名称,是因为第一个中间件通常在应用前端或客户端与后端资源(例如数据库、大型机应用或专用硬件设备)之间充当中介的作用,客户端可以从这里请求数据。 

但如今的中间件已经超出了这个范畴。 例如,门户中间件同时包括应用前端和后端连接工具;数据库中间件通常包含自己的数据存储库。 正如您将在下面读到的那样,一类新兴的中间件可以利用容器技术帮助开发人员连接到分布在多个云端的资源。

中间件如何工作?

利用中间件,开发人员在搭建应用程序时,如果需要连接到应用程序组件(服务或微服务)、数据源、计算资源或设备时,无需再创建定制集成。

中间件可以通过提供服务随时建立此类连接,这些服务支持不同的应用程序和服务通过常见的消息传递框架进行通信,例如 JavaScript 对象表示法 (JSON)、表述性状态转移 (REST)、可扩展标记语言 (XML)、简单对象访问协议 (SOAP) 或 Web 服务。通常,中间件还提供服务来实现以多种语言(例如 Java、C++、PHP 和 Python)编写的组件之间的相互通信。

中间件组件

标准中间件架构组件包括:

  • 中间件管理控制台:管理控制台为开发人员提供了中间件事件、活动、配置等的概要信息。
  • 客户端界面:前端的客户端界面与后端应用程序、数据库微服务或其他服务进行通信。
  • 中间件内部接口:借助中间件内部接口,中间件实例可以使用特殊的中间件协议彼此通信。
  • 平台接口:平台接口连接后端服务器和不同的操作系统 (OS),确保中间件跨平台运行。
  • 合约管理器:合约管理器用于定义应用程序必须遵循的数据交换规则。
  • 会话管理器:会话管理器可确保中间件和应用程序之间的安全通信,并确保此类通信不会超时。
  • 数据库管理器:数据库管理器可根据具体要求(例如,内部数据或基于云的数据)提供与不同数据库的集成。
  • 运行时监控器:运行时监控器可跟踪所有中间件数据的移动,并为软件开发人员提供活动报告。
面向软件开发人员的中间件用例

除了能轻松实现互操作性,中间件服务还可以通过以下方式为软件开发人员助力。

配置和控制连接与集成

根据客户端或前端应用程序请求信息,中间件可以自定义后端应用程序或服务响应。例如,在零售商的电子商务应用程序中,中间件应用程序逻辑可以根据 HTTP 请求标头中的 IP 地址或位置信息,按最近的商店位置对后端库存数据库中的产品搜索结果进行排序。

保护连接和数据传输

中间件通常使用传输层安全协议 (TSL) 或其他网络安全协议,在前端应用程序与后端数据源之间建立安全连接。它可以提供身份验证功能,向前端应用程序发起请求以获取凭据(用户名和密码)或数字证书。

跨分布式系统动态管理流量

当应用程序流量达到峰值时,企业中间件可以扩展以将客户端请求分发到本地或云中的多个服务器。并发处理功能可防止多个客户端同时尝试访问同一后端数据源时出现问题。

优化现有应用程序

中间件可将传统的单体式应用程序转换为基于微服务架构的云端应用程序,帮助开发人员实现应用程序现代化

减少手动任务

中间件自动化可帮助开发人员简化和自动化复杂 IT 任务的管理,从而提高整体效率。

支持 DevSecOps

中间件通过帮助团队更快构建应用程序,同时降低安全风险,来为 DevSecOps(代表开发、安全和运营)方法提供支持。

中间件类型

中间件 (Middleware) 有许多不同的类型。有些专注于特定类型的连接,有些则专注于特定的应用程序、应用程序组件和设备。有些则将中间件功能结合起来,用于特定的软件开发任务。一些最有名和最常用的中间件软件类型包括:

 

  • 面向消息的中间件 (MOM)
  • 远程过程调用 (RPC) 中间件
  • 数据或数据库中间件
  • 应用程序编程接口 (API) 中间件
  • 对象请求代理 (ORB) 中间件
  • 事务性中间件
  • 异步数据流中间件
  • 设备中间件
  • 门户中间件
  • 机器人中间件
  • 企业应用集成中间件
面向消息的中间件 (MOM)

借助面向消息的中间件 (MOM),使用不同消息传递协议的应用程序组件能够进行通信并交换消息。除了在应用程序之间转换消息之外,MOM 还管理消息的路由,使消息始终按照适当的顺序到达相应的组件。MOM 的示例包括消息队列消息代理

远程过程调用 (RPC) 中间件

借助远程过程调用 (RPC) 中间件,一个应用程序能够触发在同一计算机或不同计算机或网络上运行的另一个应用程序中的过程,就如同这两个应用程序是同一台计算机上同一应用程序的一部分。

数据或数据库中间件

数据或数据库中间件可简化对后端数据库的访问以及与后端数据库的交互。通常,数据库中间件是某种形式的 SQL 数据库服务器。

应用程序编程接口 (API) 中间件

应用程序编程接口 (API) 中间件为开发人员提供了为其应用程序创建、公开和管理 API 所用的工具,以便其他开发人员可以连接到这些应用程序。

一些 API 中间件包含用于实现 API 货币化的工具,使不同组织能够按成本价使用这些 API。API 中间件的示例包括 API 管理平台、API 网关和 API 开发人员门户。

对象请求代理 (ORB) 中间件

对象请求代理 (ORB) 中间件充当来自一个应用程序对象或组件的请求与分布式网络上另一对象或组件履行该请求之间的代理。

ORB 使用公共对象请求代理体系结构 (CORBA) 进行操作,利用该体系结构,一个软件组件能够向另一个软件组件发出请求,而不需要了解另一个组件的托管位置或其用户界面 (UI) 的外观,“代理”会在交换期间处理此类信息。

事务性中间件

事务性中间件提供服务,以支持在分布式网络上执行数据事务。最有名的事务中间件是事务处理监控器 (TPM),它会将事务从一个步骤推进到下一个步骤(运行数据交换以及在需要时添加、更改或删除数据等),直至事务完成。

异步数据流中间件

异步数据流中间件在中间存储中复制数据流,从而实现多个应用程序之间的数据共享。Apache Kafka 是用于实时事件流的最有名的中间件开源平台示例之一。

设备中间件

设备中间件提供了一系列集中式集成和连接功能,用于为特定移动操作系统 (OS) 开发应用程序。

门户中间件

门户中间件提供了工具和资源,用于单一屏幕上集成各种相关应用程序的内容和功能,以创建单个复合应用程序。

机器人中间件

机器人中间件可简化对来自多个制造商和地点的机器人硬件、固件与软件的集成。

中间件类别

中间件有两种基本类别:企业应用程序中间件和平台中间件。

企业应用集成中间件

企业可以利用企业应用程序集成中间件来建立企业集成中心。这提供了一种用于连接整个扩展企业中所有应用程序、应用程序组件、业务流程和后端数据源的标准化方法。

直到大约十年前,最流行的企业应用程序集成中间件还是企业服务总线 (ESB),它充当面向服务的架构 (SOA) 中的集成中心。

如今,借助集成平台即服务 (iPaaS),组织可以跨混合云(本地部署、私有云和公有云环境的组合)连接应用程序、数据、流程和服务。这样,组织便可避免在自己的数据中心内购买、安装、管理和维护集成中间件(及其运行所依赖的硬件)所耗费的工作和成本。主流云服务提供商 (CSP) - Microsoft Azure、Google Cloud、Amazon Web Services (AWS) 或 IBM Cloud - 均提供 iPaaS 解决方案。

平台中间件

平台中间件(或应用程序平台中间件)用于支持应用程序开发。它通过为应用程序或业务逻辑提供运行时托管环境(例如 Java 运行时环境 (Java RE) 和/或容器)来加速应用程序交付。平台中间件可能包括企业应用程序服务器、Web 服务器、内容管理系统 (CMS) 和以上列出的其他中间件类型,或与这些中间件类型加以组合。

iPaaS 和 PaaS 有何区别?

集成平台即服务 (iPaaS) 和平台即服务 (PaaS) 都是基于云的计算解决方案,分别用于不同的目的。iPaaS 侧重于实现应用程序、设备和系统集成,而 PaaS 为组织提供了用于构建、运行和管理应用程序的平台。

PaaS 是 IT 预算有限的小型企业和初创公司的热门选择,因为与创建内部开发平台相比,PaaS 可支持团队经济高效地构建应用程序。对于运行复杂的动态架构的大型组织和企业来说,iPaaS 则是更好的选择。

也就是说,iPaaS 服务通常与云服务协同工作,包括 PaaS 和软件即服务 (SaaS)。例如,组织可以将 iPaaS 与 PaaS(例如 Cloud Foundry、Red Hat OpenShift)或 SaaS (GitHub) 开发解决方案结合使用。

中间件和云原生应用程序

云原生是一种应用程序开发方法,它使用基本的云计算技术在混合云环境中提供一致的开发、部署和管理。

当今的云原生应用由微服务搭建而成,并部署在容器中,其中这些容器使用了 Kubernetes 这一广泛应用的容器编排平台。

微服务是一种松散耦合的应用程序组件,包含自己的堆栈,并且可以相互独立地进行部署和更新。它们通过组合使用 REST API、消息代理和事件流来进行通信。

容器是轻量级执行任务,可将应用程序代码(例如微服务)与在任何云或传统 IT 基础架构上运行该代码所需的操作系统库和依赖项打包在一起。

这些技术及相关技术共同打造了一个一次开发即可随时随地部署的强大平台,用于交付全新的混合云应用程序,并对旧的传统系统进行现代化改造以在云端使用。然而,它们也要求在开发环境中组合更多的软件应用程序、数据源、编程语言、工具和分布式系统,因而开发环境变得更加复杂。

中间件可以解决其中的一些复杂性问题。但是,使用传统中间件运行容器化应用程序本身会增加复杂性,包括增加基础架构开销,而容器本身旨在降低这一开销。因此,云应用程序开发平台包含容器化或模块化中间件,以便仅将需要的连接功能打包在容器中。

中间件的行业用例
游戏

中间件可充当游戏引擎,从而支持游戏开发。该软件层有助于无缝集成视频、音频和其他关键游戏组件。

金融服务

对于金融机构而言,中间件集成了应用程序和客户数据库,以支持数字银行服务,包括实时交易处理。

医疗保健

医疗保健数据的安全访问和共享一直是一大难题。中间件对于医疗保健互操作性至关重要,它支持跨各种医疗保健系统和应用程序(例如远程医疗平台和电子健康记录 (EHR))的无缝数据流。

电子商务

电子商务组织利用中间件将其在线平台与关键的后端服务(例如订单处理)相连接,以改进整体客户体验。

制造业物联网

在制造业中,中间件有助于确保包括企业资源规划 (ERP) 平台在内的业务软件系统与其他应用程序集成,从而提供统一的运营视图。这有助于优化并简化维护、供应链、质量保证等环节的工作。

相关解决方案
IBM API Connect

跨多个云管理您的 API 生态系统,同时促进社交化并优化经济效益。

探索 IBM API Connect
IBM 集成软件和解决方案

借助集成平台软件,实现连接、自动化并释放业务潜力。

深入了解 IBM 整合软件和解决方案
应用程序交付解决方案

深入了解 IBM 应用程序交付解决方案如何帮助构建新的云原生应用程序并对现有应用程序进行现代化改造。

深入了解应用程序交付解决方案
IBM iPaaS 解决方案

借助面向全体用户的集成功能,为所有应用程序和数据提供连接。

探索 IBM iPaaS 解决方案
采取后续步骤

使用 IBM API Connect 在整个生命周期中保护和管理企业 API。它可以帮助您和您的客户持续创建、管理、保护企业 API,促进其社交化并实现经济效益,还可以在 IBM Marketplace 和 AWS 上作为高度可扩展 API 管理平台使用。

探索 API Connect 预约实时演示