RF/无线
射频识别(Radio Frequency Identification, RFID)中间件是在物理RFID阅读器和上层应用软件之间的一层软件,RFID中间件屏蔽了各种不同的阅读器传输标准,使上层应用软件得到统一、不变的数据和控制接口;另外,它还能对原始数据进行整合和过滤,产生用户定制的数据报表。在大规模应用RFID技术时,将产生海量数据,应用RFID中间件将使数据处理和传输变得相对简单。中间件的承上启下作用使RFID系统设计更为灵活,维护更为简单,不论是后端应用程序的变化,还是前端阅读器变化,都不会影响另外一端,省去维护多对多连接的复杂性问题。
RFID中间件是RFID技术应用领域和应用规模发展的产物,当今市场上已有一些产品,如:SUN、Microsoft和BEA的RFID中间件产品,然而,这些产品大都是运行在PC机或服务器端,由于网络带宽有限,海量的数据要通过网络传输,大量无效的数据都要集中在服务器端,服务器必须对海量的数据进行筛选、过滤并按照确定的业务规则使数据转化成用户需要的、有意义的数据,这种复杂的处理必会增加服务器的压力,影响系统的性能。在发生网络故障时,也容易造成数据的丢失等。
随着技术的进步,移动设备(如PDA等)的内存存储能力、CPU的处理能力不断增强,这也使得设计一种面向移动设备的RFID中间件成为可能。针对这种技术发展趋势,本文提出了一种面向移动设备的可灵活部署的RFID中间件SeaMobileMiddleware(SMM)。SMM能有效利用移动设备的内存、CPU等空闲资源,在数据发往服务器之前做一系列的预处理,优化原始数据,降低网络和服务器压力,并在网络故障时自动存储数据,保证数据的一致性。
1 RFID中间件SMM系统架构
系统架构对系统整体性能有很大影响,针对移动设备特点,给出了一种面向移动设备的可灵活配置RFID中间件SMM系统架构,如图1所示。
SMM的系统整体架构包括三大模块,其中:最下层为Device模块,负责把物理的真实设备抽象为系统的Device对象;中间层为Task Manager模块,是SMM的核心模块,负责处理用户和上层应用系统的一切命令,把标准的XML命令转化系统的Task对象并执行,以用来控制Device对象;最上层是用户接口(User Interface,UI)模块,是基于标准的Java swing开发的图形界面,使用户可以在本地方便地控制Device对象。同时,SMM也提供标准Web service接口,方便其他远程系统控制和管理移动设备。
通过为移动设备提供本地UI和远程管理接口,SMM可以使用户自定义流程,通过过滤和筛选将原始标签数据转化成用户想要的有意义数据。Task Manger提供的基于XML的标准接口也为SMM提供了很好的扩展性和兼容性。
1.1 Device模块
由于目前的Tag、Reader等种类繁多,标准各不相同,RFID中间件的核心功能一个就是屏蔽阅读器传输标准的差异,为上层提供统一的接口。SMM通过抽象,把不同种类RFID阅读器、PDA等移动设备作为不同类型Device对象进行处理,并为每种Device配置Rule、Dispatcher和Driver三种属性。不同Tag发出的原始数据通过Driver适配变为统一的数据格式,通过Rule将统一的数据格式转化成上层系统需要的数据,然后通过Dispatcher把数据发送到所需的上层应用程序中。
1)Driver:考虑到实际应用中的Tag、Reader的多样性,Driver对不同类型Reader数据进行适配处理,对数据进行统一和格式化。SMM架构中内置了缺省的Driver,负责处理当前大部分流行的Reader.同时,针对特殊需求,用户可以开发特定Driver完成特殊Reader及Tag的数据标准化。
2)Rule:Rule可以自定义特定业务逻辑和数据过滤规则,从而把数据转化成上层应用程序需要的有意义的数据。
比如:通过Rule配置提取同一个厂商生产的Tag的数据。
3)Dispatcher:Dispatcher定义数据分发路径,为数据提供路由功能。可以自定义Dispatcher,从而把数据发送到用户需要的上层应用程序中。另外,系统提供了离线Dispatcher,用于设备离线时的数据处理。当设备处于离线状态时,系统会把数据保存在嵌入式移动数据库“Olite”上,当系统连线时,离线Dispatcher自动将保存在“Olite”数据库的历史事件发送到上层应用程序中,从而实现数据自动同步。
基于抽象思想,Device模块把各种不同RFID阅读器等抽象成不同对象。通过配置Rule、Dispatcher和Drive属性等管理真实设备,将来源不同的Tag数据格式化为统一标准的数据,并按用户定义的规则过滤数据,转发到对应的上层系统中。
1.2 Task Manager模块
RFID中间件的另一核心功能是对外提供标准接口,便于上层应用程序调用和二次开发[10].SMM中Task Manager模块通过管理所有命令和任务执行提供标准输入输出。
Task Manager模块具有如下功能:1)接受各种XML命令,解析XML命令找到对应的任务对象并执行后把结果封装成标准的XML返回给调用者;2)提供高效的任务队列来处理各种各样的XML命令;3)提供动态的日志队列使用户能够实时监控设备的相关信息。
基于Task Manager模块,SMM提供图形界面和Web Service两种类型的请求来控制和管理移动设备,以使用户获取所需的数据。如果是SMM内部请求,则提供标准的Java API;如果是外部请求,则提供基于XML的标准Web接口。图3给出了Task Manager的实现流程。在模块中,上层应用程序通过HTTP协议把标准XML命令发送到SMM,SMM通过内嵌的轻型HTTP Server Jetty处理各种HTTP请求。Jetty接受到标准的XML请求后,把各种XML命令给Task Manager模块,Task Manager解析XML格式的命令后,通过Java反射得到对应的Task对象。如果Task对象是同步的,则调用Task执行方法,返回相应结果并转化成标准XML给Jetty服务器;如果Task对象是异步的,则放到任务队列里面去,返回为空。
任务队列通过线程按照先进先出的方法来执行任务。为展示Task执行过程,本文给出设备启动过程展现上层应用程序控制设备的过程。
上层应用通过HTTP(POST)方法把标准的XML命令发送到Jetty服务器上,格式如下:
Task Manager根据“action”的内容,通过Java提供的反射机制得到相应任务Start Device Task实例,并把相应的设备名称作为参数交给Start Device Task实例。由于Start Device Task是异步的,所以Start Device Task会放到任务队列中执行并且返回空。当任务队列执行到Start Device Task任务时,Task Manager日志队列会实时写日志改变dev21和dev22的状态,并返回到SMM的UI。
责任编辑:ct
全部0条评论
快来发表一下你的评论吧 !