Download PDF version of this article PDF

中间件 101

现在和未来需要了解的内容

Alexandros Gazis 和 Eleftheria Katsiri

在计算机科学中,系统通常分为两类:软件和硬件。然而,两者之间还有一个额外的层,称为中间件,它是操作系统和最终用户之间的软件“管道”、操作、进程或应用程序。本文旨在定义中间件并反思其必要性,以及解决关于何时何地应用中间件的争议。它还探讨了中间件在新兴技术(如云计算和物联网 (IoT))中的应用,以及未来中间件的发展。

该术语是在 1980 年代初期引入的。它涵盖了复杂的软件解决方案,这些解决方案通过软件和应用程序组件等新功能来现代化遗留系统(通常是大型机)。最初,它仅用于扩展分隔网络层和应用程序层的层。随后,其用途扩展为充当操作系统层和网络层之上以及应用程序层之下的层。这意味着中间件现在可以促进应用程序组件和分布式网络之间的通用通信。

通过中间件,程序员可以选择实现去中心化解决方案,而无需与不同的组件交互和分析。18

在最近的文献3,12,14,16中,根据研究领域,使用了多种定义。一方面,软件工程师和 DevOps 工程师都会将中间件描述为将不同系统组件的软件“粘合”在一起的层;另一方面,网络工程师会声明中间件是网络连接的容错和错误检查集成。换句话说,他们会将中间件定义为通信管理软件。与此同时,数据工程师会将中间件视为负责协调、触发和编排操作的技术,以处理和发布来自各种来源的数据,从而利用大数据和物联网(IoT)。鉴于中间件没有统一的定义,最好采用特定领域的方法。

中间件的主要类别如下:11

• 事务型。处理多个同步/异步事务,充当分布式系统(如银行交易或信用卡支付)的相关请求集群。

• 面向消息消息队列消息传递架构,支持同步/异步通信。前者基于队列用于处理信息的原则运行,而后者通常基于发布/订阅模式运行,其中中间代理促进通信。

• 过程型远程本地架构,用于连接、传递和检索异步通信(如调用操作)的软件响应。具体而言,第一种架构调用网络中另一台计算机的预定服务,而第二种架构仅与本地软件组件交互。

• 面向对象。与过程型中间件类似,但这种类型的中间件融合了面向对象编程的设计原则。从分析角度来看,它的软件组件包括对象引用、异常和通过分布式对象请求的属性继承。它通常以同步方式使用,因为它需要接收来自服务器对象的响应以处理客户端操作。重要的是,这种类型的中间件还可以通过使用(多)线程和一般并发编程来支持异步通信。

学者们根据中间件所服务的应用模块(如数据库、Web 服务器等)进一步细分了中间件。中间件有多种类型,可归为以下主要类别:反射型、代理型、数据库型、嵌入式、门户型和设备型(或机器人)。4,15

首先,反射型中间件构成专门设计为“易于与其他组件和应用程序一起运行”的组件,而代理型中间件具有多个组件,这些组件在复杂的特定领域语言和规则上运行。

其次,数据库中间件专注于 DB 到 DB 或 DB 到应用程序的通信(本地或通过 CLI(调用级别接口)),而嵌入式中间件充当嵌入式集成应用程序和操作系统通信的中介。

第三,门户中间件在复合单屏应用程序中创建上下文管理工具,而设备(或机器人)中间件简化了特定设备操作系统或机器人硬件和固件的集成。

第一种分类更广泛,强调架构操作原则,而第二种分类是应用程序驱动的。因此,第一种划分更适合根据架构集成而不是其应用程序属性来准确定义中间件。所有类型的中间件都显示在图 1 中。

Middleware 101

 

中间件的使用

在开发应用程序时,需要考虑的三个必要要素是可伸缩性、维护和自动化。首先,开发人员避免横向扩展,横向扩展只是添加资源来扩展主系统的功能。他们力求工作负载分区——优化整个网络上的作业调度分配。至于维护,关注点分离原则对于开发人员来说非常重要,既要使每个实体可重用(模块化),又要捆绑其属性(封装)。(典型的模块化示例包括 Linux 内核,因为可以更改[添加/删除]代码库,以及乐高玩具套装,其中不同的元素可以多次用于构建系统。)此外,开发人员专注于自动化操作以减少错误并使应用程序 24/7 全天候可用或按需提供(即按需配置)。

中间件可以充当实现可伸缩性、维护和自动化的促进者。具体而言,它添加了一个层,将复杂系统简化为小型集成,从而允许它们与分布式资源网络关联。2 这意味着中间件在软件开发期间提供了敏捷性,同时缩短了完整软件周期的时间;它还为开发人员提供了更轻松的未来扩展。

此外,中间件可以通过整合“快速失败,更快成功”的原则来支持快速原型设计。它允许开发人员立即应用、采用和评估业务变更。中间件还可以降低项目成本,并普遍促进创业和创新。9

 

中间件的功能

在互联网广泛使用和高速连接普及之前,大多数应用程序都是作为单层、独立的软件解决方案开发的。这种软件是“单体”的,旨在服务于特定的目的和活动,因此并非旨在与其他应用程序和软件组件连接和交互。单层软件需要复杂的中间件解决方案,才能与不同的模块(如客户端/服务器)共享信息,或传递来自主机/资源管理软件的请求。

在互联网彻底改变了开发人员的运营方式之后,由连接到大型分布式计算机网络(也称为物联网)的多个计算设备驱动的事务数量不断增加。分布式计算引入了 SOA(面向服务的架构)来代替单体应用程序。具体而言,SOA 由多层软件解决方案组成,这些解决方案实现了实体和服务的分离,从而将每个组件分解为微服务。这通过降低系统的复杂性并进一步提高其模块化来实现。在这种情况下,中间件将每个实体都视为独特且自主的。因此,未来的修改将针对特定服务(模块),而不是针对整个系统的组件。

这种中间件“是一种将单个应用程序开发为一组小型服务的方法,每个服务都在其自己的进程中运行,并使用轻量级机制(通常是 HTTP 资源 API)进行通信。”13

中间件与 API(应用程序协议接口)紧密相连,充当程序员使用的不同 API 的层或软件包。这意味着中间件可以简化复杂的应用程序,从而使开发人员不仅关注组件的通信,而且关注业务逻辑和系统的交互。这在物联网时代是一个重要的方面,因为 API 是连接设备和发送信息而不会出错的主要网关。

 

物联网中间件

术语物联网描述了互连设备的大型网络,这些设备收集由多个智能传感设备融合的实时数据。15 为了实现这一目标,电子设备(移动设备/平板电脑/计算机)将数据发送到云或边缘计算基础设施中托管的外部服务。最近的研究侧重于开发物联网网络,该网络不仅可以与其周围环境交互,而且可以自主运行,而无需用户的干预。在此范围内,物联网研究将普适/泛在计算作为计算应用程序的未来。10 “计算机”不再与单个设备或设备网络相关联。普适计算被定义为“源自数字世界并通过物理世界感知的各种情境服务”。8

此外,开发物联网应用程序的架构原则包括审查安全性、能耗和监控、可靠性、可解释性和通信。19 如前所述,中间件为所有这些功能提供了一个抽象层。根据其软件许可,它可以分为公司维护、开源或设备特定(适用于 Raspberry Pi 或 Arduino 等微型计算机/执行器)。

图 2 描述了物联网中间件通常如何基于以下关注点分离来处理其操作

• 硬件层(也称为边缘层)包括所有传感设备以及它们运行所在的传感器网络。此层负责收集和处理可用数据。

• 操作系统层(即访问网关层)执行必要的数据转换操作,以便相应地提取和加载信息。

• 网络层(即互联网层)专注于通过确保连续、安全且不间断的通信流将数据发送到下一层。

• 中间件层处理消息通信协议和服务。具体而言,除了为应用程序提供访问协议外,此层还会检查系统是否存在操作和数据传输故障。

• 最后,应用程序层专门负责通过启用向各种应用程序端点(例如,不同的开发人员和部门)广播服务,从而向最终用户提供服务(通常通过 API)。

Middleware 101

 

对一些关于物联网中间件6的最有前途的开源项目的回顾强调了以下几点:用于云中传感器系统的 OpenIoT;用于转换设备之间通信协议的 FIWARE;LinkSmart(以前称为 Hydra),用于数据存储和机器学习的快速部署和高可扩展性;DeviceHive,用于物联网自动化层关于通信、控制和管理的抽象;以及 ThingSpeak,用于关于智能应用程序的工业物联网框架。

同样,IBM、AWS(亚马逊网络服务)、微软 Azure、谷歌和 Oracle 也开发了企业中间件。1 基于突出显示的项目,一些中间件框架专注于自动化特定任务或核心业务活动流程。

 

未来:云容器和微服务

当开发人员使用虚拟化(将资源分层到基础设施中)、虚拟机监控程序(操作系统的解释器)、客户操作系统(具有自己的内核)和应用程序时,中间件促进了在单个多用途环境中的分散部署。在容器(软件环境)呈指数级增长之后,这一点变得显而易见,容器可以通过同一服务器(主机)在隔离环境(也称为沙箱)中快速轻松地多次部署。就像 Java 的座右铭“一次编写,随处运行”一样,容器是一个独立的软件环境,具有独特的代码、库、运行时和依赖项。中间件层也出于优化通信和抽象通信协议以开发软件管道的相同目的,从虚拟化转向容器化。

从开发人员的角度来看,7 转向云计算解决方案意味着所需的编码更少,因为云基础设施中的大部分工作都在“幕后”执行。换句话说,以前由本地中间层处理的分布式编程和企业开发的几个方面现在可以远程处理。更具体地说,要解决的常见问题包括扩展、弹性可观察性、资源管理以及持续集成和交付。这意味着企业将限制中间件开发人员的数量。他们将专注于架构和应用程序开发,而不是部署。

 

结论

中间件可以在软件周期的多个阶段使用——从其架构和开发到其部署。企业数字化转型(从单体实现到微服务实现)的永久需求表明,中间件将继续存在。无论是将复杂的软件组件分离为更小的服务、在计算机之间传输数据,还是为无缝通信创建通用网关,您都可以依靠中间件来实现不同设备、应用程序和软件层之间的通信。此外,有必要对新开发人员进行中间件教育,并通过现代教育技术和学习系统来强调其重要性。5,17

随着敏捷运动的日益兴起,科技行业已采用快速瀑布模型,为每个结构需求创建层堆栈,包括集成、通信、数据和安全。鉴于此范围,研究云或数据服务的潜在扩展已不再重要。现在的重点必须放在端点连接和敏捷开发上。

这意味着中间件不应仅仅充当面向对象的解决方案来执行简单的请求-响应命令。中间件可以通过结合微服务架构,通过多个网关整合拉取-推送事件和流,以开发整体的去中心化生态系统。

 

参考文献

1. Agarwal, P., Alam, M. 2020。研究用于智能应用程序开发的物联网中间件平台。智慧城市——机遇与挑战 58, 231–244。施普林格;https://link.springer.com/chapter/10.1007/978-981-15-2545-2_21

2. Al-Jaroodi, J., Nader, M. 2012。中间件仍然无处不在!!!并发与计算:实践与经验 24(16), 1919–1926;https://dl.acm.org/doi/abs/10.1002/cpe.2817

3. Becker, C., Julien, C., Lalanda, P., Zambonelli, F. 2019。普适计算中间件:当前趋势和新兴挑战。CCF 普适计算与交互汇刊 1(1), 10–23。施普林格;https://link.springer.com/article/10.1007/s42486-019-00005-2

4. Bishop, T.A., Ramesh, K. K. 2003。中间件调查。载于第 18 届国际计算机及其应用会议论文集,254–258;https://www.researchgate.net/publication/221205414_A_Survey_of_Middleware

5. Ciufudean, C., Buzduga, C. 2020。数字工程教育应用。工程教育进展汇刊 17, 10–14;http://www.doi.org/10.37394/232010.2020.17.2

6. da Cruz, M.A.A., Rodrigues, J.J.P.C., Sangaiah, A.K., Muhtadi, J.A., Korotaev, V. 2018。物联网中间件的性能评估。网络和计算机应用杂志 109(C), 53–65;https://dl.acm.org/doi/abs/10.1016/j.jnca.2018.02.013

7. Farahzadi, A., Pooyan, S., Rezazadeh, J., Farahbakhsh, R. 2018。面向事物云的中间件技术:调查。数字通信和网络 4(3), 176–188;https://www.sciencedirect.com/science/article/pii/S2352864817301268

8. Ferscha, A. 2009。普适计算。载于哈根贝格研究,B. Buchberger 等编辑,379–431。施普林格;https://link.springer.com/chapter/10.1007/978-3-642-02127-5_9

9. Helland, P. 2021。快速失败正在快速失败!acmqueue 19(1);https://dl.acm.org/doi/10.1145/3454122.3458812

10. Hong, J. 2017。普适计算的隐私格局。IEEE 普适计算 16(3), 40–48;https://ieeexplore.ieee.org/document/7994573

11. IBM 云教育。2021。什么是中间件;https://www.ibm.com/cloud/learn/middleware

12. Zhang, J., Ma, M., Wang, P., Sun, X.D. 2021。物联网中间件:关于需求、支持技术和解决方案的调查。系统架构杂志:欧盟微型杂志 117(C);https://dl.acm.org/doi/abs/10.1016/j.sysarc.2021.102098

13. Lewis, J., Fowler, M. 2014。微服务:这个新架构术语的定义;https://martinfowler.com.cn/articles/microservices.html

14. Medeiros, R., Fernandes, S., Queiroz, P.G.G. 2022。物联网中间件:系统文献综述。通用计算机科学杂志 28(1), 54–79;https://lib.jucs.org/article/71693/

15. Pinus, H. 2004。中间件:过去与现在的比较。研讨会论文 https://www.researchgate.net/publication/265203339_Middleware_Past_and_Present_a_Comparison

16. Salazar, G.D.S., Venegas, C., Baca, M., Rodríguez, I., Marrone, L. 2018。面向工业 4.0 的物联网开放中间件提案。IEEE 第二届哥伦比亚机器人与自动化会议 (CCRA),1–6;
https://ieeexplore.ieee.org/document/8588117.

17. Salem, A.B.M., Mikhalkina, E.V., Nikitaeva, A. Y. 2020。智能教育知识工程范式的探索:技术、工具、优势和挑战。工程教育进展汇刊,1–9;http://www.doi.org/10.37394/232010.2020.17.1

18. Schantz, R.E., Schmidt, D.C. 2002。中间件。载于软件工程百科全书,J. J. Marciniak 编辑。威利父子出版社;https://onlinelibrary.wiley.com/doi/10.1002/0471028959.sof205

19. Singh, K.J., Kapoor, D.S. 2017。创建您自己的物联网:物联网平台调查。IEEE 消费电子杂志 6(2), 57–68;https://ieeexplore.ieee.org/document/7879392

 

Alexandros Gazis 是希腊色雷斯德谟克利特大学电气与计算机工程系的博士候选人和研究员。他是希腊技术商会会员,并在 Eurobank S.A. 担任软件工程师,专门从事核心银行系统和大型机开发。他发表了关于人工智能、大数据、普适计算、Web 数据分析、遥感和神经网络的文章。他的研究重点是通过无线传感器网络、云计算和普适计算中间件开发物联网。

Eleftheria Katsiri 是希腊色雷斯德谟克利特大学电气与计算机工程系的助理教授(终身教职),她在该系教授操作系统、结构化编程、HCI(人机交互)以及分布式和并行系统。自 2014 年以来,她一直是雅典娜研究与创新中心的兼职研究员。她的研究兴趣领域包括:普适计算中情境感知的高级编程工具、物联网和无线传感器网络以及具有实时要求的分布式和并行系统。

版权所有 © 2022,所有者/作者所有。出版权已许可给 。

acmqueue

最初发表于 Queue 卷。20,第 1 期
数字图书馆 中评论本文





更多相关文章

Catherine Hayes, David Malone - 质疑评估非加密哈希函数的标准
虽然加密和非加密哈希函数无处不在,但在它们的设计方式上似乎存在差距。出于各种安全要求,存在许多加密哈希的标准,但在非加密方面,存在一定的民间传说,尽管哈希函数历史悠久,但尚未得到充分探索。虽然针对真实世界数据集的均匀分布非常有意义,但在面对具有特定模式的数据集时,它可能是一个挑战。


Nicole Forsgren, Eirini Kalliamvakou, Abi Noda, Michaela Greiler, Brian Houck, Margaret-Anne Storey - DevEx 实践
DevEx(开发者体验)在许多软件组织中越来越受到关注,因为领导者寻求在财政紧缩和人工智能等变革性技术的背景下优化软件交付。直观地看,技术领导者普遍认为良好的开发者体验可以提高软件交付效率和开发者幸福感。然而,在许多组织中,改进 DevEx 的拟议计划和投资难以获得支持,因为业务利益相关者质疑改进的价值主张。


João Varajão, António Trigo, Miguel Almeida - 低代码开发效率
本文旨在通过介绍使用基于代码、低代码和极限低代码技术进行的实验室实验结果来研究生产力差异,从而为该主题提供新的见解。低代码技术已明确显示出更高的生产力水平,为低代码在短期/中期内主导软件开发主流提供了强有力的论据。本文报告了程序和协议、结果、局限性和未来研究的机会。


Ivar Jacobson, Alistair Cockburn - 用例至关重要
虽然软件行业是一个快节奏且令人兴奋的世界,新的工具、技术和技巧不断被开发出来以服务于商业和社会,但它也很健忘。在急于快速前进的过程中,它会受到时尚潮流的影响,并且可能会忘记或忽略针对其面临的一些永恒问题的经过验证的解决方案。用例于 1986 年首次引入,并在后来得到普及,正是这些经过验证的解决方案之一。





© 保留所有权利。

© . All rights reserved.