acm-header
登录

ACM通信

实践

中间件101


烟雾从电脑顶部喷出,插图

信贷:JL股票

回到顶部

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

这个术语是在20世纪80年代初被引入的。它包含复杂的软件解决方案,这些解决方案通过软件和应用程序组件等新特性对遗留系统(通常是大型机)进行现代化。最初,它只用于扩展分隔网络层和应用层的层。随后,它的用途扩展为作为操作系统和网络层之上、应用层之下的层。这意味着中间件现在可以促进应用程序组件和分布式网络之间的通用通信。

通过中间件,程序员可以选择实现分散的解决方案,而不是必须交互和分析不同的组件。18

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

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

  • 事务性的。处理多个同步/异步事务,作为来自分布式系统(如银行事务或信用卡支付)的关联请求集群。
  • 面向消息的。消息队列而且消息传递架构,支持同步/异步通信。第一种操作基于队列用于处理信息的原则,而第二种操作通常基于发布/订阅模式,其中中间代理有助于通信。
  • 程序的。远程而且当地的用于连接、传递和检索异步通信(如调用操作)的软件响应的体系结构。具体来说,第一种体系结构调用网络中另一台计算机的预定服务,而第二种体系结构只与本地软件组件交互。
  • 面向对象的。然而,与过程式中间件类似,这种类型的中间件包含面向对象的编程设计原则。分析上,它的软件组件包含对象引用、异常和通过分布式对象请求继承的属性。它通常是同步使用的,因为它需要从服务器对象接收响应来处理客户端操作。重要的是,这种类型的中间件还可以通过使用(多)线程和一般的并发编程来支持异步通信。

学者们进一步隔离了依赖于其服务的应用程序模块的中间件,如数据库和Web服务器。有几种类型的中间件,可分为以下几个关键类别:反射、代理、数据库、嵌入式、门户和设备(或机器人)。415

首先,反光中间件组成的组件是专门为“方便地操作其他组件和应用程序”而设计的代理中间件有多个组件,它们操作复杂的领域特定语言和法律。

第二,数据库中间件主要关注DB-to-DB或db -to-应用程序通信——本地通信或通过调用级接口(cli)嵌入式中间件充当嵌入式集成应用程序和操作系统通信的中介。

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

第一种分类范围更广,强调架构操作原则,而第二种分类是应用程序驱动的。由于这个原因,第一个隔离更适合根据架构集成准确定义中间件,而不是它的应用程序属性。所有类型的中间件都在图1

f1.jpg
图1。类型的中间件。

回到顶部

中间件的使用

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

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

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

回到顶部

中间件的功能

在互联网的广泛使用和高速连接的适应之前,大多数应用程序都是作为单层、独立的软件解决方案开发的。这个软件是“单片的”,构建来服务于特定的目的和活动,因此不用于连接和与其他应用程序和软件组件交互。单层软件需要一个复杂的中间件解决方案,既可以与不同的模块(如客户机/服务器)共享信息,也可以交付来自主机/资源管理软件的请求。

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

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

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

回到顶部

物联网中间件

物联网(IoT)一词描述的是一个由互联设备组成的大型网络,通过多个智能感知设备融合来收集实时数据。15为了实现这一点,电子设备(移动/平板/计算机)将数据发送到云或边缘计算基础设施中的外部服务。最近的研究集中在开发一种物联网网络,它不仅可以与周围环境互动,而且可以在不需要用户干预的情况下自主行动。在此范围内,物联网研究普适/泛在计算作为未来的计算应用。10计算机不再与单个设备或设备网络相关联。普适计算定义为“源自数字世界的全部情景服务,通过物理世界感知。”8

此外,开发物联网应用的架构原则包括安全审查、能源消耗和监控、可靠性、可解释性和通信。19如前所述,中间件为所有这些功能提供了一个抽象层。根据其软件许可,它可以被归类为企业维护、开源或特定于设备(用于微型计算机/驱动器,如树莓派或Arduino)。

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

f2.jpg
图2。物联网中间件层。

  • 硬件层(也称为边缘层)包括所有感觉设备,以及它们运行的传感器网络。这一层负责收集和处理可用数据。
  • 操作系统层(即接入网关层)执行必要的数据转换操作,以便相应地提取和加载信息。
  • 网络层(即Internet层)通过确保连续、安全、不中断的通信流,重点是将数据发送到下一层。
  • 中间件层处理消息通信协议和服务。具体来说,除了为应用程序提供访问协议外,该层还检查系统的操作和数据传输故障。
  • 最后,应用层单独负责向最终用户提供服务(通常通过API),它支持将服务广播到各种应用程序端点(例如,不同的开发人员和部门)。

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


在开发应用程序时,需要考虑的三个必要元素是可伸缩性、维护和自动化。


类似地,IBM、亚马逊网络服务(AWS)、微软Azure、谷歌和Oracle都开发了企业中间件。1在重点介绍的项目基础上,有几个中间件框架专注于自动化特定任务或核心业务活动流程。

回到顶部

未来:云容器和微服务

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

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

回到顶部

结论

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


就像Java的座右铭“编写一次,随处运行”一样,容器是具有惟一代码、库、运行时和依赖关系的独立软件环境。


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

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

回到顶部

参考文献

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

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

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

4.Bishop, t.a., Ramesh, K.K.,中间件调查。在学报18th实习生。计算机及其应用, 2003, 254 - 258;https://www.researchgate.net/publication/221205414_A_Survey_of_Middleware

5.Ciufudean, C., Buzduga, C.数字工程教育应用。反式。工程教育的进展(2020), 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.物联网中间件的性能评估。网络与计算机应用, c (2018), 53-65;https://dl.acm.org/doi/abs/10.1016/j.jnca.2018.02.013

7.Farahzadi, A., Pooyan, S., Rezazadeh, J., Farahbakhsh, R.物联网中间件技术:一项调查。数字Commun。和网络4, 3 (2018), 176-188;https://www.sciencedirect.com/science/article/pii/S2352864817301268

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

9.哈兰,p,快失败了,快!acmqueue 191 (2021);https://dl.acm.org/doi/10.1145/3454122.3458812

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

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

12.张军,马敏,王鹏,孙晓东,物联网中间件:需求、使能技术和解决方案的研究。《系统体系结构学报C (2021);https://dl.acm.org/doi/abs/10.1016/j.sysarc.2021.102098

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

14.Medeiros, R., Fernandes, S., Queiroz, p.g.g Middleware for the Internet of Things:一个系统的文献综述。J.通用计算机科学, 1 (2022), 54-79;https://lib.jucs.org/article/71693/

15.Pinus, H. Middleware:过去和现在的对比。研讨会论文,2004;https://bit.ly/3wdIttw

16.Salazar, g.d.s., Venegas, C., Baca, M., Rodríguez, I., Marrone, L.,专注于工业4.0的物联网开放中间件提案。在IEEE论文集2nd哥伦比亚机器人与自动化会议, 2018年1 - 6;https://ieeexplore.ieee.org/document/8588117

17.Salem, a.b.m., Mikhalkina, e.v., Nikitaeva, A.Y.智慧教育知识工程范式探索:技术、工具、好处和挑战。反式。工程教育的进展1 - 9 (2020);http://www.doi.org/10.37394/232010.2020.17.1

18.Schantz, r.e., Schmidt, D.C.中间件公司。软件工程百科全书。J.J. Marciniak, Ed. Wiley and Sons, 2002;https://onlinelibrary.wiley.com/doi/10.1002/0471028959.sof205

19.Singh, k.j., Kapoor, D.S.创建你自己的物联网:物联网平台的调查。《消费电子杂志, 2 (2017), 57-68;https://ieeexplore.ieee.org/document/7879392

回到顶部

作者

亚历山大Gazis是德谟克利特色雷斯大学电子与计算机工程系的研究员和博士候选人。他是the Technical Chamber of Greece的成员,并在Eurobank s.a.担任软件工程师,专注于核心银行系统和主机开发。

Eleftheria Katsiri她是位于Xanthi的德克利特色雷斯大学电子与计算机工程系的终身助理教授,在那里她教授操作系统、结构化编程、人机交互以及分布式和并行系统。自2014年起,她一直担任雅典娜研究与创新中心的兼职研究员。


版权所有©2022由所有者/作者持有。授权给ACM的出版权。
请求发布的权限permissions@acm.org

数字图书馆是由计算机协会出版的。版权所有©2022 ACM股份有限公司


没有发现记录

Baidu
map