www.ydisp.cn/oss/202207/14/28737c3546fb7216c7e3340c3266b4e0a70152.jpg"style="visibility:visible;宽度:877px;height:585px;"data-type="inline">该术语是在80年代初期引入的。它包含复杂的软件解决方案,这些解决方案通过软件和应用程序组件等新功能使遗留系统(通常是大型机)现代化。最初,它被使用只是为了扩展分离的网络层和应用层,其用途后来被扩展为操作系统和网络层之上,应用层之下的层,这意味着中间件现在可以方便应用程序组件和分布式网络之间的日常通信。通信。通过中间件,程序员可以选择实现松散耦合的解决方案,而不必交互和分析不同的组件。在最近的文献3,12,14,16中,根据研究领域,使用了各种定义。一方面,软件和DevOps工程师将中间件描述为通过不同系统组件将软件“粘合”在一起的层;网络工程师另一方面,工程师会说中间件是网络连接的容错和错误检查集成。换句话说,他们会将中间件定义为通信管理软件。同时,数据工程师将中间件视为一种负责协调、触发和编排操作以处理和发布来自各种来源的数据、利用大数据和IoT(物联网)的技术。由于没有统一的中间件定义,最好采用特定领域的方法。中间件主要是对事务进行分类。处理多个同步/异步事务,作为来自分布式系统的关联请求(如银行交易或信用卡支付)面向消息的粘合层。消息队列和消息传递架构,支持同步/异步通信。首先操作在使用队列处理信息的原则,而第二种通常以发布/订阅模式运行,由中间代理Communication.Program.Remote和本地架构提供便利,用于连接、交付和检索异步通信(例如调用操作)的软件响应。特别是,第一个架构调用网络上另一台计算机上的预定服务,而第二个架构仅与本地软件组件交互。面向对象。类似于流程中间件,这类中间件结合了面向对象的编程设计原则。从分析上看,其软件组件包括对象引用、异常、对象请求的分布式属性继承。它通常被同步使用,因为它需要从服务器对象接收响应以处理客户端操作。重要的是,这种类型的中间件也可以通过使用(多)线程和通常的并发编程异步通信来支持。学术界根据它所服务的应用模块进一步隔离中间件,例如数据库、Web服务器等。有几种类型的中间件,分为以下主要类别:反射、代理、数据库、嵌入式、门户和设备(或机器人)).首先,反射中间件构成了专门设计用于“与其他组件和应用程序轻松操作”的组件,而代理中间件具有多个组件,可以在复杂的特定领域语言和服务上运行。其次,数据库中间件专注于DB到DB或DB到应用程序的通信——本地或通过CLI(调用级接口)——而嵌入式中间件充当嵌入式集成应用程序和操作系统通信的中介。第三,门户中间件在复合单体应用程序中创建上下文管理工具,而设备(或机器人)中间件简化了特定设备操作系统或机器人硬件和固件的集成。第一个分类更广泛,强调架构操作原则,而第二个是应用程序驱动的。出于这个原因,第一个隔离更适合准确定义每个架构集成的中间件,而不是它的应用程序属性。图中显示了所有类型的中间件。中间件的使用在开发应用程序时,要考虑的三个基本要素是可伸缩性、可维护性和自动化。首先,开发人员避免水平扩展,即简单地添加资源来扩展主系统的功能。他们努力实现工作负载分区——在网络上优化分配作业调度。至于维护,关注点分离原则对于开发人员来说非常重要,既要使每个实体可重用(模块化)又要将其属性捆绑(封装)。(模块化的典型示例包括Linux内核,因为代码库可以更改添加/删除,以及乐高积木,其中可以多次使用不同的元素来构建系统。)此外,开发人员专注于自动化操作以减少错误并提供24/7可用的应用程序。中间件可以充当可扩展性、可维护性和自动化的促进者。具体来说,它添加了一个层,将复杂的系统简化为小的集成,允许它们与分布式资源网络相关联。这意味着中间件在软件开发过程中提供了敏捷性,同时减少了整体软件周期时间;它还为开发人员提供了更容易的未来扩展点。此外,中间件可以通过结合“快速失败,快速成功”的原则来支持快速原型制作。它允许开发人员立即应用、采用和评估业务变更。中间件还可以降低项目成本,促进创业创新。中间件的力量在广泛使用Internet和适应高速连接之前,大多数应用程序都是作为单层、独立的软件解决方案开发的。该软件是“单一”的,旨在服务于特定目的和活动,因此并非旨在与其他应用程序和软件组件连接和交互。单层软件需要一个复杂的中间件解决方案来与不同的模块(例如客户端/服务器)共享信息,或传递来自主机/资源管理软件的请求。在互联网彻底改变了开发人员的操作方式之后,越来越多的交易是由连接到大型分布式计算机网络(也称为物联网)的多个计算设备驱动的。分布式计算引入了SOA(面向服务的体系结构),而不是单一的应用程序。具体来说,SOA由多层软件解决方案组成,这些解决方案将实体和服务分开,将每个组件分解为微服务。这是通过降低系统的复杂性并进一步增加其模块化来实现的。在这种情况下,中间件将每个实体视为唯一且自治的。因此,未来的修改是针对特定服务(模块)而不是整个系统的组件。中间件是一种将单个应用程序开发为一组小型服务的方法,每个服务都在自己的进程中运行并通过轻量级机制(通常是HTTPRestfulAPI)进行通信。中间件与API(应用程序协议接口)紧密相关,充当程序员使用的不同API的层或包。这意味着中间件可以简化复杂的应用程序,让开发人员不仅可以专注于组件通信,还可以专注于业务逻辑和系统交互。这是物联网时代的一个重要方面,因为API是连接设备和无误发送信息的主要网关。IoT中间件IoT一词描述了一个大型互连设备网络,这些设备收集由多个智能传感设备融合的实时数据。为实现这一目标,电子设备(手机/平板电脑/计算机)将数据发送到托管在云或边缘计算基础设施中的外部服务。最近的研究重点是开发一种物联网网络,它不仅可以与周围环境互动,还可以在没有用户干预的情况下自主行动。在这种情况下,物联网将普适/无处不在的计算视为计算应用程序的未来。计算机不再与单个设备或设备网络相关联。无处不在的计算被定义为“从数字世界衍生出来的、通过物理世界感知的完整上下文服务”。此外,开发物联网应用程序的架构原则包括对安全性、能耗和监控、可靠性、可解释性和通信的考虑。”审查。如前所述,中间件为所有这些功能提供了一个抽象层。根据其软件许可证,它可以分为企业维护、开源或设备特定(适用于微型计算机/执行器,例如RaspberryPi或Arduino)。下图描述了物联网中间件通常如何根据以下方式处理其操作关注点分离:硬件层(也称为边缘层)包括所有传感设备,以及它们在其中运行的传感器网络。该层负责收集和处理可用数据。操作系统层(即访问网关层)执行必要的数据转换操作以相应地提取和加载信息。网络层或Internet层侧重于通过确保连续、安全和不间断的通信流将数据发送到下一层。中间件层处理消息传递协议和服务。具体来说,该层除了为应用程序提供访问协议外,还检查系统的操作和数据传输故障。最后,应用层通过向各种应用程序端点(例如,不同的开发人员和部门)广播服务,全权负责为最终用户提供服务(通常通过API)。对一些最有前途的物联网中间件开源项目的回顾强调了以下几点:OpenIoT用于云中的传感器系统;FIWARE用于在设备之间转换通信协议;LinkSmart(前身为Hydra),用于数据存储和机器学习的快速部署和高可扩展性;DeviceHive用于通信、控制和管理的物联网自动化层抽象;以及用于智能应用的工业物联网框架的ThingSpeak。同样,IBM、AWS(亚马逊网络服务)、微软Azure、谷歌和甲骨文也开发了企业中间件。基于突出显示的项目,一些中间件框架专注于自动化特定任务或核心业务活动流程。未来:云容器和微服务当开发人员使用虚拟化(将资源分层到基础架构中)、管理程序(操作系统的解释器)、来宾操作系统(具有自己的内核)和应用程序时,中间件促进了单一多用途环境中的分散部署。随着容器的指数级增长,这一点变得很明显——软件环境可以从同一台服务器(主机)快速轻松地部署到隔离环境(也称为沙箱)中多次。正如Java的座右铭“一次就像编写,随处运行”,容器是一个隔离的软件环境,具有独特的代码、库、运行时和依赖项。中间件层也从虚拟化转向容器化,以优化通信和抽象通信协议以开发软件管道。从开发人员的角度来看,转向云计算解决方案意味着需要更少的编码,因为云基础设施中的大部分工作都是在“幕后”执行的。换句话说,分布式编程和企业开发的几个方面是以前由本地中间层处理现在可以远程处理。更具体地说,要解决的常见问题包括扩展、弹性可观察性、资源管理以及持续集成和交付。这意味着企业将限制专注于中间件开发人员的数量关于架构和应用程序开发而不是部署。结论n中间件可用于软件周期的多个阶段——从架构和开发到部署。企业数字化转型(从单体应用到微服务实施)的永恒需求表明,中间件将继续存在。无论是将复杂的软件组件分离成更小的服务、在计算机之间传输数据,还是创建用于无缝通信的通用网关,您都可以依靠中间件来实现不同设备、应用程序和软件层之间的通信。沟通。此外,还需要对新的开发人员进行中间件方面的培训,并通过现代教育技术和学习系统强调其重要性。随着敏捷运动的发展,科技行业采用了快速瀑布模型来为每个结构需求创建层堆栈,包括集成、通信、数据和安全性。鉴于此范围,研究云或数据服务的潜在扩展不再重要。现在必须将重点放在端点连接和敏捷开发上。这意味着中间件不应该只是一个面向对象的解决方案来执行简单的请求-响应命令。中间件通过结合微服务架构,可以通过多个网关集成推拉事件和数据流,从而开发出一个整体的去中心化生态系统。
