APP下载

一种基于嵌入式系统的通讯中间件设计

2021-01-29刘逸涵李兴智宋丫航空工业西安航空计算技术研究所

数码世界 2020年12期
关键词:中间件控件底层

刘逸涵 李兴智 宋丫 航空工业西安航空计算技术研究所

中间件是一类连接软件组件和应用的计算机软件。以便于运行在一台或多台机器上的多个软件通过网络进行交互。该技术所提供的互操作性,使得一致分布式体系架构的演进,该架构通常用于支持并简化那些复杂的分布式应用程序。

中间件在操作系统、网络和数据库之上,应用软件的下层,总的作用是为处于自己上层的应用软件提供运行与开发的环境,帮助用户灵活、高效地开发和集成复杂的应用软件。在众多关于中间件的定义中,比较普遍被接受的是IDC表述的:中间件是一种独立的系统软件或服务程序,分布式应用软件借助这种软件在不同的技术之间共享资源,中间件位于客户机服务器的操作系统之上,管理计算资源和网络通信。

中间件能够屏蔽操作系统和网络协议的差异,为应用程序提供多种通讯机制,并提供相应的平台以满足不同领域的需要。因此,中间件为应用程序提供了一个相对稳定的高层应用环境。然而,中间件服务也并非适用于所有情况,多数流行的中间件服务使用专有的API和专有的协议,使得应用建立于单一厂家的产品,来自不同厂家的实现很难互操作。有些中间件服务只提供一些平台的实现,从而限制了应用在异构系统之间的移植。

1 通信中间件的设计思想

通信中间件是位于应用平台和硬件通信平台(通信介质/协议)之间解决嵌入式系统网络互连的中间适配层。该层向下屏蔽掉硬件网络通信接口平台(RS232/485、USB、以太网、Modem等)的差异,即基于不同介质、不同电气特性和不同协议的网络、设备之上,能够对各种标准的数据传输接口进行透明传输,向上为用户层提供一个统一的标准接口,应用层的开发基于该接口进行。通信中间件的核心思想就是定义一组接口通信的标准,以及为这一标准提供基础设施,其它高层的软件均遵照这种标准来构造应用程序,使得符合通信中间件规范的接口通信有着很强的互操作性。

首先,当系统通信接口平台改变时,只需改变中间适配层的几个参数,只要保持应用层对通信中间件层的接口定义不变,就可以直接将应用程序移植过去运行。所有代码只需编写一次就可在任何系统上运行,大大缩短了系统研制的周期,提高了开发效率,同时还保证了系统的高伸缩性、易升级性和稳定性。其次,通信中间件屏蔽了底层通信平台的差异,提供了标准的封装接口。当系统的底层通信接口改变时,不用修改应用程序,只需在通信中间件的驱动层增加几个相应的通信接口控件驱动即可实现对新接口的适配,从而就能保证通信系统在线运行情况下,接入各种新设备,以不变的程序应对万变的协议,从而达到系统之间的互通、互连、互操作的目的,使得系统维护使用真正做到“傻瓜智能”。

2 总体设计

整个通信的硬件平台采用基于ARM微处理器的嵌入式通信硬件平台,底层通信接口包括RS232串行接口、USB、以太网接口、Modem及扩展接口等。

通用通信软件适配层(即中间件层)定义和设计支持各种通信接口的通用通信协议。该层向下与各种通信接口相适配,向上提供与通信接口无关的统一接口。应用平台是利用ACOM通信中间件通过各种通信接口以及通信协议实现命令、数据和消息的传递。

3 分层设计

我们利用分层体系结构思想对通信中间件ACOM进行设计,在设计中,将其分为三层结构:API层、socket层、driver层。这种分层式设计思想可以将每一层协议的实现细节对相邻协议层加以屏蔽,提供服务访问接口进行层间数据传递,各层数据独立封装。发送和接收端的各层协议存在逻辑上的点对点连接。

Driver层(设备驱动层):

ACOM定义了一系列的设备驱动函数来建立与物理层的接口及与socket层的接口。通过建立设备驱动数据结构来控制设备的通信,在数据结构中定义相应的函数指针用以调用相应的设备通信函数。

Socket层(设备抽象层):

该层定义关于通信控件设备的一些信息属性,如:通信控件设备驱动信息属性、数据包信息属性、通信设备socket信息属性、信息属性等,及数据处理函数,包括数据的编译码、数据的打包及读写数据缓存操作和系统目标析构函数。

API层(用户程序接口层):

ACOM软件的应用程序接口(简称API)向用户提供ACOM的初始化、ACOM控件接口操作、及ACOM用户API三大功能。ACOM的初始化函数向用户提供ACOM系统的初始化及释放功能;控件接口操作函数向用户提供对ACOM设备控件初始化操作,当初始化完成后,底层的操作对用户是透明的;ACOM API向用户提供对消息的基本操作功能。从通信中间件的设计可以看出,用户在使用数据对象时只能访问由通信软件提供的一个标准用户程序接口,其他所有有关对象的信息则保存在驱动层中。对用户而言,这些对象信息已被隐藏封装起来,屏蔽了底层操作。而对于底层驱动的设计是指当底层通信接口改变时,不用修改应用程序,只需在driver层增加几个相应的通信接口控件驱动即可实现对新接口的适配,通过ACOM软件的通用性达到其设计目的。

4 通信中间件的数据流程

以设计实现两台设备网络通讯为例讲述一下利用通信中间件通信时的数据流程。

用户A:用户激活接口控件,Acom消息循环收到系统消息,此消息中包含欲连接的对方的地址及一些其它信息。Acom根据命令初始化Acom_driver,驱动该控件的缓冲区及函数指针按照相应设备的规定作相应初始化。在Acom_driver调用Acom_open_socket函数创建socket,socket层读取命令,按照Acom协议的规定调用Acom_code函数对请求消息进行编码及Acom_pack函数进行打包,将数据包放入底层driver层的发送缓冲区,调用发送函数。

用户B:driver层收到A发来的数据(连接请求),Acom消息循环读取driver层接收缓冲区内容。当发现是请求连接的消息后,根据数据包中所带的源地址创建socket以进行通信。socket层将确认信号进行编码打包发送至driver层的发送缓冲区。driver直接再将数据发送至A方的driver。

用户A:driver层收到确认消息后进行解码,socket层读取转发至Acom消息循环。上层判定为确认信息则根据用户需要发送相应的命令至socket层,socket层根据命令调用相应的函数,如短消息通信或文件传输。

5 结束语

ACOM通信中间件系统的设计基本实现了整个系统的框架结构与基本的通信接口通讯功能。系统采用分层结构设计的思想,引入了设备抽象层的概念,使系统可以很方便地进行应用程序的移植和调试工作,并可以跨平台实现系统移植。用户无需访问底层程序,只需要调用系统提供的标准用户程序接口就可以实现对通讯协议的访问和使用。所有代码都只需编写一次就可在任何系统上运行,大大缩短了系统研制的周期,提高了开发效率,同时保证了系统的易升级性。

猜你喜欢

中间件控件底层
基于C++Builder 的电子邮件接收程序设计*
航天企业提升采购能力的底层逻辑
使用“填表单”微信小程序 统计信息很方便
基于.net的用户定义验证控件的应用分析
我国自主可控中间件发展研究
以实力证明 用事实说话
云计算环境下中间件的负载均衡机制研究
回到现实底层与悲悯情怀
中国底层电影研究探略
略论“底层”