《电子技术应用》
您所在的位置:首页 > 通信与网络 > 业界动态 > 基于SOA的RFID中间件的研究与实现

基于SOA的RFID中间件的研究与实现

2008-07-17
作者:邓海生1, 李军怀2

    摘 要: 介绍了目前相对成熟的RFID中间件解决方案,包括基于Savant的RFID中间件、IBM RFID中间件和BEA WEBLOGIC RFID中间件,指出了它们的特点和不足。提出了一种基于面向服务架构(SOA)的RFID中间件架构,详细介绍了基础架构" title="基础架构">基础架构层的Edge Server、消息系统和数据接口" title="数据接口">数据接口的具体实现。并针对下一步研究工作做了简单说明。
    关键词: RFID中间件  SOA  Edge Server  消息系统  数据接口

   

    射频识别RFID(Radio-Frequency Identification)[1]技术,从总体上而言,其技术已经逐步发展成为一个独立的跨学科的专业领域,它将大量来自不同专业领域的技术综合到一起:如高频技术、电磁兼容性、半导体技术、数据保护和密码学、电信、制造技术等。目前RFID技术已被广泛应用于工业自动化、商业自动化、交通运输控制管理等众多领域。

    基本的RFID系统通常由三部分组成:RFID 标签(tag)、RFID阅读器(reader)及应用支撑软件。其中介于阅读器与企业应用之间的RFID中间件(Middleware)是系统支撑软件中的一个重要组成部分。
    RFID中间件是一种面向消息的中间件MOM(Message-Oriented Middleware),信息(Information)以消息(Message)的形式从一个程序传送到另一个或多个程序,并且信息以异步(Asynchronous)的方式传送,传送者不必等待回应。RFID中间件作为RFID系统的神经中枢,其主要任务是对阅读器送来的与标签相关的事件、数据,进行过滤、汇集和计算,减少从阅读器送往企业应用的巨量原始数据、增加抽象出的有意义的信息量。
1 RFID中间件研究现状
    参考文献[2]针对应用电子产品编码的议题,确定了EPC NetWork 技术构架,包括数据库操作软件(Savant)、实体标记语言(PML)、物名服务(ONS)。其中,Savant软件技术,相当于该新式网络的神经系统,是连接标签识读器和企业应用程序" title="应用程序">应用程序的纽带,在将数据送往企业应用程序之前,它要对标签数据进行过滤、汇总和计数、压缩数据容量。但参考文献[2]构架缺乏对RFID中间件的支持:功能描述不清,没有统一的事件过滤(filter)规范,不支持高层事件的定义。
    参考文献[3]描述了Sun公司的RFID 中间件,其架构遵循参考文献[2]所提出的EPC网络基本构架,是完全端到端的解决方案。该方案将RFID架构分为表示层、业务流程层、服务层和集成层,每一层都有一组明确的功能,而且定义了明确的接口与其他层次进行交互。该架构的优点是以业界领先的BEA WebLogic Platform为基础,能够经济有效地满足RFID支柱技术的一系列核心要求,同时具有适应不断变化的业务需要的技术灵活性;其缺点是该中间件的功能单薄:即过滤规则简单, 缺少复杂事件的定义和处理能力。
    IBM RFID解决方案提出了一种轻型RFID 中间件架构,其中心思想是通过一条信息总线(RFID Bus)来代替复杂的层次结构。这种RFID中间件架构主要包括:边缘控制器(Edge controller)、前提服务器(Premises Server)两部分。Edge controller 与Premises Server 之间采用发布主题/订阅主题的方式通信。这种解决方案的缺点是:RFID 中间件的设计大多是基于自己目前所研发的核心产品或技术的应用,有太大的依赖性和较小的扩展性。
    虽然目前国外已经有不少的大学和研究团体在做RFID中间件方面的设计和研究,但是,RFID 中间件的研究仍很不成熟。如上所述基于Savant的RFID中间件,Sun公司和IBM公司的RFID中间件解决方案都还存在着或多或少的不足和限制。在国内有关RFID中间件的研究也只能说是刚刚起步,例如,台湾资策会研究所提出的基于SOA的RFID中间件架构只是给出了系统架构,基础架构的分层也还比较粗糙。
2 基于SOA的RFID中间件架构
    台湾资策会研究所构建的基于SOA的RFID中间件架构,其基础架构层分为Edge Server和数据操作软件两层。笔者将其基础架构层细分为Edge Server、消息系统和数据接口三层,并通过Web Services技术包装了每一层相应的功能,且进行了具体实现。本文重点介绍该RFID中间件架构中的基础架构层的三个功能层。这三个层次有着明确的功能划分和层间的交互接口。基于SOA的RFID中间件架构如图1所示。

                          
2.1 Edge Server
    Edge Server位于架构的最底层,直接与读写器" title="读写器">读写器交互。其主要功能包括:(1)对射频卡上数据进行采集。(2)对于来自不同类型的Reader的数据进行适配处理,得到统一的、格式化的数据,并进行数据校验。(3)将校验无误的数据按照用户定义的协议进行封包,并将消息包发送到消息系统。
2.2 消息系统[4-5]
    消息系统是RFID基础架构的核心层。在RFID系统中,一方面是各种应用程序以不同的方式频繁地从RFID系统中取得数据;另一方面却是有限的网络带宽,其中的矛盾使得设计一套消息传递系统成为自然而然的事情。Edge Server产生事件,并将事件传递到消息系统中,由消息系统决定如何将事件数据传递到相关的应用系统。在这种模式下,读写器不必关心哪个应用系统需要什么数据;同时,应用程序也不需要维护与各个读写器之间的网络通道,仅需要将需求发送到消息系统中即可。由此,设计出的消息系统应具有如下功能:(1) 数据缓存功能。(2)基于内容的路由功能。(3)数据分类" title="数据分类">数据分类存储功能。
    来自消息系统的消息以临时xml文件的形式和磁盘文件方式保存,供数据接口使用。这样,一方面可通过操作临时xml文件,实现数据入库前数据过滤功能;另一方面又实现了RFID数据的批量入库,而不是对于每条来自Edge Server的RFID数据都进行一次数据库的连接和断开操作,减小了因数据库连接和断开而浪费的宝贵资源。
2.3 数据接口
    来自消息系统的数据最终是分好类的xml磁盘文件。同一类型的数据以xml文件的形式保存,并提供给相应的一个或多个应用程序使用。而数据接口主要是对这些数据进行过滤、入库操作,并提供访问相应数据库的服务接口。具体操作如下:
    (1)将存放在磁盘上的xml文件进行批量入库操作,也就是说,当xml数据量达到一定数量时,启动数据入库功能模块,将xml数据移植到各种流行数据库中,如Sql Server、Oracle等。
    (2)在数据移植前将重复的数据过滤掉。
    (3)为企业内部和企业外部访问数据库提供Web Services接口。
3 RFID中间件基础架构实现
3.1数据协议定义
3.1.1 标签数据格式
    将电子标签嵌入物体合适的位置上,标签数据就是电子标签微芯片中惟一存储的数据。标签数据惟一标识物体,这个代码是本系统的核心部分,贯穿整个系统。这里,标签数据格式借鉴了参考文献[6]中EPC-64的思想,自定义了一种新的数据格式以满足系统的需求。唯一标识编码格式如图2所示。

                     
    图中:
    卡号:厂商代码,已经固化,不可更改。本系统采用的格式是8位十六进制,具体数据位数可能会因卡片存储格式的不 同而不同。
    数据分类:该编码可以判断出Reader读取到的数据属于哪类数据,为数据分类提供依据。格式是2位十六进制,可以区分256类数据。
    单个物体编号:用于标识一个物体,范围是0~224。
   以上三个部分就组成了可以惟一标识物体的ID号,最多可以标识4×224个物体。这个数值足够满足企业内部产生的RFID数据条目的个数。因此,这种编码格式可以满足系统的需要。
3.1.2 消息系统中的消息格式
    消息系统要处理的数据必须遵循一定的数据格式,即消息格式。本文设计的消息格式采用了复杂的数据类型Class,其中记录了消息的路由信息、标签中的数据、其他现场信息如Reader编号、读取时间、温度等,其示例图如图3所示。图中,IP、EPCCode、CarId、ReaderId、Timestamp和Operator分别表示消息目的IP、标签数据、卡号、读写器编号、读取时间和操作员,其中消息目的IP、读写器编号和操作员等信息是可以依据需求提前写定的,而标签数据、卡号和读取时间等实时现场信息,可以通过构造函数赋值。

                         
    消息封装、发送过程简单描述如下:取出所得到标签数据的“数据分类”部分,依据“数据分类”内容判断该标签数据属于哪种类型,然后按照这种消息类型将标签数据封装成相应的消息包,发送到消息系统。
3.2 Edge Server的实现
    依据Edge Server实现的功能,本文分别针对射频卡读写器模块、读写器接口、数据校验和数据打包四个方面进行研究和开发。读写器模块是根据硬件供应商提供的dll文件,进行编码实现的;读写器接口主要解决了将来自协议格式数据转化为系统所需要的EPC码的问题;数据校验针对传输信号的畸变问题,采用了CRC校验;数据打包采用了MSMQ技术,实现则是先依据获取的卡片编码中“数据分类”内容,判断出该标签数据属于哪种类型,然后按照这种数据类型将标签数据封装成相应的消息包。Edge Server流程如图4所示。

                           
    以CRC校验为例,所产生的校验码的代码段如下:
   public void Crc(byte[] buf,int off ,int len)
      { if (buf == null)
          { throw new ArgumentNullException('buf'); }
            if(off<0||len<0||off+len>buf.Length)
            {throw new ArgumentOutOfRangeException(); }
            for (int i = off; i < len ; i ++)
            { Crc(buf[i]); }
    } 
3.3 消息系统的实现
    消息系统的体系结构随着应用的不同而变化,但大体上分为两种:集中模式和分布式模式,本文采用的是集中式模式。这是由于在本文的消息系统中,消息的传递是点对点的传递,而不需要多播机制。
在消息系统的实现中,主要采用了MSMQ和xml相关技术,完成消息缓存、分类整合、路由转发、临时存放等操作,其实现示意图如图5所示。

                               
    经过上述处理后的数据在数据接口中被过滤并送往相应的应用程序。以消息路由转发为例,其核心代码描述如下:
    PubClass cls = new PubClass(参数1,参数2,…);
                                       //实例化消息
    cls.Ip=IP;                         //取消息cls的路由地址
    MessageQueue queue = new MessageQueue(@'FormatName:DIRECT=TCP:' + cls.Ip + '\Private$\'+QueueName);
                                      //实例化目标地址的消息队列
    System.Messaging.Message message = new System.Messaging.Message(cls);
    message.Priority = MessagePriority.High;    //设置优先级别
    queue.Send(message);                        //发送消息
3.4 数据接口的实现
    数据接口包括数据库移植模块和数据访问接口模块两部分。数据库移植模块实现的功能是对这些数据进行过滤、入库操作,数据访问接口模块则是提供访问相应数据库的服务接口。其中,数据过滤过程是在处理临时存放的xml文件的过程中完成的。方法是:将同一个卡号的多条记录按照读入的时间戳进行比较,若相邻记录的时间戳差值小于用户定义的阀值(例如2ms),则认为重复读取发生,剔出后一条记录。依次类推,剔出掉所有冗余数据。数据入库采用了OleDB数据库访问技术,并结合.NET提供的访问xml的API实现了xml文件到Sql Server 2000、Oracle、Access和Excel等的转换。数据访问接口则是通过ADO.NET数据访问模型,利用Web Services技术将对数据库的访问以服务的形式发布,供企业内部应用程序和企业合作伙伴调用。以数据过滤为例,其核心代码如下:
    for(int i=1;i    {  …
          span=EndTime.Subtract(StartTime);
          spantime=span.Seconds;          //获得相邻记录的时间戳之差
               if(spantime<=0.002)
          {subtime[i]=i;}                       //若相邻时间戳差值小于2ms,
                                                //标记第二条记录为冗余数据
               else {subtime[i]=0;}
          }
          for(int j=1;j          { if(subtime[j].ToString()!='0')
          { ds.Tables[0].Rows[j].Delete();
               j=j-1;
         rowcount=rowcount-1;}
    }
    参考文献[7]中指出:Web Services技术在RFID系统中的主要应用是在系统的支撑软件上,尤其是介于读写器与企业应用之间的中间件。本文通过Web Services技术,实现了对RFID中间件更高层次包装,保证了RFID基础架构中三个功能层之间的相互独立和协同工作。独立性是指:Edge Server层只需要将来自卡片的数据初步处理后发送到消息系统,而不必考虑消息是如何被进一步处理的;消息系统负责消息的缓存、路由、生成临时xml文件等,其工作过程也是独立与数据接口的。层与层之间协同工作是指:在消息系统层中,一旦临时存储的xml文件记录数达到一定值,可以主动启用数据接口层中的数据移植模块。
    本文简单介绍了RFID中间件,并针对RFID中间件研究现状,列举了几个典型的解决方案,指出了这些解决方案的局限和不足。结合台湾资策会研究所构建的基于SOA的RFID中间件架构,提出了本文的中间件架构,并详细说明了RFID中间件基础架构的实现。
    由于笔者构建的RFID中间件采用的核心技术之一是Web Services,这势必会带来中间件软件性能和数据传输安全性方面的问题。另外,MSMQ在处理实时事务时存在局限性,这些都是下一步需要研究的工作。
参考文献
[1]  ZHONG Shao Chun, SONG Qing Feng, CHENG Xiao Chun.A safe mobile agent system for distributed intrusion detection[C]. Xi’an:Proceedings of IEEE the Second International Conference on Machine Learning and Cybernetics,2003:2009-2014.
[2]  CLARK S, TRAUB K, ANARKAT D. Auto-ID savant specification1.0[R]. Auto-ID Center, 2003.
[3]  BEA.BEA Weblogic RFID解决方案1.0[EB/OL].http:// www.bea.com, 2005.
[4]  吴正大,魏俊荣,张继新.RFID中间件设计技术初探.邮电设计技术, 2006,(8):39-42.
[5]  冯涛,刘新天.应用JMS消息中间件实现企业应用集成.天津电力技术, 2006,(2):9-12.
[6]  Auto-ID Center. EPC tag data specification version1.1[EB/OL].http://www.epcglobalinc.org/standards_technology/specifications.html.2005.
[7]  赵毅强,曾隽芳.Web services在RFID系统中的应用综述.计算机应用研究,2006,(12):1-4.

 

本站内容除特别声明的原创文章之外,转载内容只为传递更多信息,并不代表本网站赞同其观点。转载的所有的文章、图片、音/视频文件等资料的版权归版权所有权人所有。本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如涉及作品内容、版权和其它问题,请及时通过电子邮件或电话通知我们,以便迅速采取适当措施,避免给双方造成不必要的经济损失。联系电话:010-82306118;邮箱:aet@chinaaet.com。