??? 摘 要: 介紹了目前相對成熟的RFID中間件解決方案,包括基于Savant的RFID中間件、IBM RFID中間件和BEA WEBLOGIC RFID中間件,指出了它們的特點和不足。提出了一種基于面向服務(wù)架構(gòu)(SOA)的RFID中間件架構(gòu),詳細介紹了基礎(chǔ)架構(gòu)" title="基礎(chǔ)架構(gòu)">基礎(chǔ)架構(gòu)層的Edge Server、消息系統(tǒng)和數(shù)據(jù)接口" title="數(shù)據(jù)接口">數(shù)據(jù)接口的具體實現(xiàn)。并針對下一步研究工作做了簡單說明。
??? 關(guān)鍵詞: RFID中間件? SOA? Edge Server? 消息系統(tǒng)? 數(shù)據(jù)接口
???
??? 射頻識別RFID(Radio-Frequency Identification)[1]技術(shù),從總體上而言,其技術(shù)已經(jīng)逐步發(fā)展成為一個獨立的跨學科的專業(yè)領(lǐng)域,它將大量來自不同專業(yè)領(lǐng)域的技術(shù)綜合到一起:如高頻技術(shù)、電磁兼容性、半導(dǎo)體技術(shù)、數(shù)據(jù)保護和密碼學、電信、制造技術(shù)等。目前RFID技術(shù)已被廣泛應(yīng)用于工業(yè)自動化、商業(yè)自動化、交通運輸控制管理等眾多領(lǐng)域。
??? 基本的RFID系統(tǒng)通常由三部分組成:RFID 標簽(tag)、RFID閱讀器(reader)及應(yīng)用支撐軟件。其中介于閱讀器與企業(yè)應(yīng)用之間的RFID中間件(Middleware)是系統(tǒng)支撐軟件中的一個重要組成部分。
??? RFID中間件是一種面向消息的中間件MOM(Message-Oriented Middleware),信息(Information)以消息(Message)的形式從一個程序傳送到另一個或多個程序,并且信息以異步(Asynchronous)的方式傳送,傳送者不必等待回應(yīng)。RFID中間件作為RFID系統(tǒng)的神經(jīng)中樞,其主要任務(wù)是對閱讀器送來的與標簽相關(guān)的事件、數(shù)據(jù),進行過濾、匯集和計算,減少從閱讀器送往企業(yè)應(yīng)用的巨量原始數(shù)據(jù)、增加抽象出的有意義的信息量。
1 RFID中間件研究現(xiàn)狀
??? 參考文獻[2]針對應(yīng)用電子產(chǎn)品編碼的議題,確定了EPC NetWork 技術(shù)構(gòu)架,包括數(shù)據(jù)庫操作軟件(Savant)、實體標記語言(PML)、物名服務(wù)(ONS)。其中,Savant軟件技術(shù),相當于該新式網(wǎng)絡(luò)的神經(jīng)系統(tǒng),是連接標簽識讀器和企業(yè)應(yīng)用程序" title="應(yīng)用程序">應(yīng)用程序的紐帶,在將數(shù)據(jù)送往企業(yè)應(yīng)用程序之前,它要對標簽數(shù)據(jù)進行過濾、匯總和計數(shù)、壓縮數(shù)據(jù)容量。但參考文獻[2]構(gòu)架缺乏對RFID中間件的支持:功能描述不清,沒有統(tǒng)一的事件過濾(filter)規(guī)范,不支持高層事件的定義。
??? 參考文獻[3]描述了Sun公司的RFID 中間件,其架構(gòu)遵循參考文獻[2]所提出的EPC網(wǎng)絡(luò)基本構(gòu)架,是完全端到端的解決方案。該方案將RFID架構(gòu)分為表示層、業(yè)務(wù)流程層、服務(wù)層和集成層,每一層都有一組明確的功能,而且定義了明確的接口與其他層次進行交互。該架構(gòu)的優(yōu)點是以業(yè)界領(lǐng)先的BEA WebLogic Platform為基礎(chǔ),能夠經(jīng)濟有效地滿足RFID支柱技術(shù)的一系列核心要求,同時具有適應(yīng)不斷變化的業(yè)務(wù)需要的技術(shù)靈活性;其缺點是該中間件的功能單?。杭催^濾規(guī)則簡單, 缺少復(fù)雜事件的定義和處理能力。
??? IBM RFID解決方案提出了一種輕型RFID 中間件架構(gòu),其中心思想是通過一條信息總線(RFID Bus)來代替復(fù)雜的層次結(jié)構(gòu)。這種RFID中間件架構(gòu)主要包括:邊緣控制器(Edge controller)、前提服務(wù)器(Premises Server)兩部分。Edge controller 與Premises Server 之間采用發(fā)布主題/訂閱主題的方式通信。這種解決方案的缺點是:RFID 中間件的設(shè)計大多是基于自己目前所研發(fā)的核心產(chǎn)品或技術(shù)的應(yīng)用,有太大的依賴性和較小的擴展性。
??? 雖然目前國外已經(jīng)有不少的大學和研究團體在做RFID中間件方面的設(shè)計和研究,但是,RFID 中間件的研究仍很不成熟。如上所述基于Savant的RFID中間件,Sun公司和IBM公司的RFID中間件解決方案都還存在著或多或少的不足和限制。在國內(nèi)有關(guān)RFID中間件的研究也只能說是剛剛起步,例如,臺灣資策會研究所提出的基于SOA的RFID中間件架構(gòu)只是給出了系統(tǒng)架構(gòu),基礎(chǔ)架構(gòu)的分層也還比較粗糙。
2 基于SOA的RFID中間件架構(gòu)
??? 臺灣資策會研究所構(gòu)建的基于SOA的RFID中間件架構(gòu),其基礎(chǔ)架構(gòu)層分為Edge Server和數(shù)據(jù)操作軟件兩層。筆者將其基礎(chǔ)架構(gòu)層細分為Edge Server、消息系統(tǒng)和數(shù)據(jù)接口三層,并通過Web Services技術(shù)包裝了每一層相應(yīng)的功能,且進行了具體實現(xiàn)。本文重點介紹該RFID中間件架構(gòu)中的基礎(chǔ)架構(gòu)層的三個功能層。這三個層次有著明確的功能劃分和層間的交互接口?;赟OA的RFID中間件架構(gòu)如圖1所示。
??????????????????????????
2.1 Edge Server
??? Edge Server位于架構(gòu)的最底層,直接與讀寫器" title="讀寫器">讀寫器交互。其主要功能包括:(1)對射頻卡上數(shù)據(jù)進行采集。(2)對于來自不同類型的Reader的數(shù)據(jù)進行適配處理,得到統(tǒng)一的、格式化的數(shù)據(jù),并進行數(shù)據(jù)校驗。(3)將校驗無誤的數(shù)據(jù)按照用戶定義的協(xié)議進行封包,并將消息包發(fā)送到消息系統(tǒng)。
2.2 消息系統(tǒng)[4-5]
??? 消息系統(tǒng)是RFID基礎(chǔ)架構(gòu)的核心層。在RFID系統(tǒng)中,一方面是各種應(yīng)用程序以不同的方式頻繁地從RFID系統(tǒng)中取得數(shù)據(jù);另一方面卻是有限的網(wǎng)絡(luò)帶寬,其中的矛盾使得設(shè)計一套消息傳遞系統(tǒng)成為自然而然的事情。Edge Server產(chǎn)生事件,并將事件傳遞到消息系統(tǒng)中,由消息系統(tǒng)決定如何將事件數(shù)據(jù)傳遞到相關(guān)的應(yīng)用系統(tǒng)。在這種模式下,讀寫器不必關(guān)心哪個應(yīng)用系統(tǒng)需要什么數(shù)據(jù);同時,應(yīng)用程序也不需要維護與各個讀寫器之間的網(wǎng)絡(luò)通道,僅需要將需求發(fā)送到消息系統(tǒng)中即可。由此,設(shè)計出的消息系統(tǒng)應(yīng)具有如下功能:(1) 數(shù)據(jù)緩存功能。(2)基于內(nèi)容的路由功能。(3)數(shù)據(jù)分類" title="數(shù)據(jù)分類">數(shù)據(jù)分類存儲功能。
??? 來自消息系統(tǒng)的消息以臨時xml文件的形式和磁盤文件方式保存,供數(shù)據(jù)接口使用。這樣,一方面可通過操作臨時xml文件,實現(xiàn)數(shù)據(jù)入庫前數(shù)據(jù)過濾功能;另一方面又實現(xiàn)了RFID數(shù)據(jù)的批量入庫,而不是對于每條來自Edge Server的RFID數(shù)據(jù)都進行一次數(shù)據(jù)庫的連接和斷開操作,減小了因數(shù)據(jù)庫連接和斷開而浪費的寶貴資源。
2.3 數(shù)據(jù)接口
??? 來自消息系統(tǒng)的數(shù)據(jù)最終是分好類的xml磁盤文件。同一類型的數(shù)據(jù)以xml文件的形式保存,并提供給相應(yīng)的一個或多個應(yīng)用程序使用。而數(shù)據(jù)接口主要是對這些數(shù)據(jù)進行過濾、入庫操作,并提供訪問相應(yīng)數(shù)據(jù)庫的服務(wù)接口。具體操作如下:
??? (1)將存放在磁盤上的xml文件進行批量入庫操作,也就是說,當xml數(shù)據(jù)量達到一定數(shù)量時,啟動數(shù)據(jù)入庫功能模塊,將xml數(shù)據(jù)移植到各種流行數(shù)據(jù)庫中,如Sql Server、Oracle等。
??? (2)在數(shù)據(jù)移植前將重復(fù)的數(shù)據(jù)過濾掉。
??? (3)為企業(yè)內(nèi)部和企業(yè)外部訪問數(shù)據(jù)庫提供Web Services接口。
3 RFID中間件基礎(chǔ)架構(gòu)實現(xiàn)
3.1數(shù)據(jù)協(xié)議定義
3.1.1 標簽數(shù)據(jù)格式
??? 將電子標簽嵌入物體合適的位置上,標簽數(shù)據(jù)就是電子標簽微芯片中惟一存儲的數(shù)據(jù)。標簽數(shù)據(jù)惟一標識物體,這個代碼是本系統(tǒng)的核心部分,貫穿整個系統(tǒng)。這里,標簽數(shù)據(jù)格式借鑒了參考文獻[6]中EPC-64的思想,自定義了一種新的數(shù)據(jù)格式以滿足系統(tǒng)的需求。唯一標識編碼格式如圖2所示。
?????????????????????
??? 圖中:
??? 卡號:廠商代碼,已經(jīng)固化,不可更改。本系統(tǒng)采用的格式是8位十六進制,具體數(shù)據(jù)位數(shù)可能會因卡片存儲格式的不 同而不同。
??? 數(shù)據(jù)分類:該編碼可以判斷出Reader讀取到的數(shù)據(jù)屬于哪類數(shù)據(jù),為數(shù)據(jù)分類提供依據(jù)。格式是2位十六進制,可以區(qū)分256類數(shù)據(jù)。
??? 單個物體編號:用于標識一個物體,范圍是0~224。
?? 以上三個部分就組成了可以惟一標識物體的ID號,最多可以標識4×224個物體。這個數(shù)值足夠滿足企業(yè)內(nèi)部產(chǎn)生的RFID數(shù)據(jù)條目的個數(shù)。因此,這種編碼格式可以滿足系統(tǒng)的需要。
3.1.2 消息系統(tǒng)中的消息格式
??? 消息系統(tǒng)要處理的數(shù)據(jù)必須遵循一定的數(shù)據(jù)格式,即消息格式。本文設(shè)計的消息格式采用了復(fù)雜的數(shù)據(jù)類型Class,其中記錄了消息的路由信息、標簽中的數(shù)據(jù)、其他現(xiàn)場信息如Reader編號、讀取時間、溫度等,其示例圖如圖3所示。圖中,IP、EPCCode、CarId、ReaderId、Timestamp和Operator分別表示消息目的IP、標簽數(shù)據(jù)、卡號、讀寫器編號、讀取時間和操作員,其中消息目的IP、讀寫器編號和操作員等信息是可以依據(jù)需求提前寫定的,而標簽數(shù)據(jù)、卡號和讀取時間等實時現(xiàn)場信息,可以通過構(gòu)造函數(shù)賦值。
?????????????????????????
??? 消息封裝、發(fā)送過程簡單描述如下:取出所得到標簽數(shù)據(jù)的“數(shù)據(jù)分類”部分,依據(jù)“數(shù)據(jù)分類”內(nèi)容判斷該標簽數(shù)據(jù)屬于哪種類型,然后按照這種消息類型將標簽數(shù)據(jù)封裝成相應(yīng)的消息包,發(fā)送到消息系統(tǒng)。
3.2 Edge Server的實現(xiàn)
??? 依據(jù)Edge Server實現(xiàn)的功能,本文分別針對射頻卡讀寫器模塊、讀寫器接口、數(shù)據(jù)校驗和數(shù)據(jù)打包四個方面進行研究和開發(fā)。讀寫器模塊是根據(jù)硬件供應(yīng)商提供的dll文件,進行編碼實現(xiàn)的;讀寫器接口主要解決了將來自協(xié)議格式數(shù)據(jù)轉(zhuǎn)化為系統(tǒng)所需要的EPC碼的問題;數(shù)據(jù)校驗針對傳輸信號的畸變問題,采用了CRC校驗;數(shù)據(jù)打包采用了MSMQ技術(shù),實現(xiàn)則是先依據(jù)獲取的卡片編碼中“數(shù)據(jù)分類”內(nèi)容,判斷出該標簽數(shù)據(jù)屬于哪種類型,然后按照這種數(shù)據(jù)類型將標簽數(shù)據(jù)封裝成相應(yīng)的消息包。Edge Server流程如圖4所示。
???????????????????????????
??? 以CRC校驗為例,所產(chǎn)生的校驗碼的代碼段如下:
? 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 消息系統(tǒng)的實現(xiàn)
??? 消息系統(tǒng)的體系結(jié)構(gòu)隨著應(yīng)用的不同而變化,但大體上分為兩種:集中模式和分布式模式,本文采用的是集中式模式。這是由于在本文的消息系統(tǒng)中,消息的傳遞是點對點的傳遞,而不需要多播機制。
在消息系統(tǒng)的實現(xiàn)中,主要采用了MSMQ和xml相關(guān)技術(shù),完成消息緩存、分類整合、路由轉(zhuǎn)發(fā)、臨時存放等操作,其實現(xiàn)示意圖如圖5所示。
???????????????????????????????
??? 經(jīng)過上述處理后的數(shù)據(jù)在數(shù)據(jù)接口中被過濾并送往相應(yīng)的應(yīng)用程序。以消息路由轉(zhuǎn)發(fā)為例,其核心代碼描述如下:
??? PubClass cls = new PubClass(參數(shù)1,參數(shù)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;??? //設(shè)置優(yōu)先級別
??? queue.Send(message);???????????????????? ?? //發(fā)送消息
3.4 數(shù)據(jù)接口的實現(xiàn)
??? 數(shù)據(jù)接口包括數(shù)據(jù)庫移植模塊和數(shù)據(jù)訪問接口模塊兩部分。數(shù)據(jù)庫移植模塊實現(xiàn)的功能是對這些數(shù)據(jù)進行過濾、入庫操作,數(shù)據(jù)訪問接口模塊則是提供訪問相應(yīng)數(shù)據(jù)庫的服務(wù)接口。其中,數(shù)據(jù)過濾過程是在處理臨時存放的xml文件的過程中完成的。方法是:將同一個卡號的多條記錄按照讀入的時間戳進行比較,若相鄰記錄的時間戳差值小于用戶定義的閥值(例如2ms),則認為重復(fù)讀取發(fā)生,剔出后一條記錄。依次類推,剔出掉所有冗余數(shù)據(jù)。數(shù)據(jù)入庫采用了OleDB數(shù)據(jù)庫訪問技術(shù),并結(jié)合.NET提供的訪問xml的API實現(xiàn)了xml文件到Sql Server 2000、Oracle、Access和Excel等的轉(zhuǎn)換。數(shù)據(jù)訪問接口則是通過ADO.NET數(shù)據(jù)訪問模型,利用Web Services技術(shù)將對數(shù)據(jù)庫的訪問以服務(wù)的形式發(fā)布,供企業(yè)內(nèi)部應(yīng)用程序和企業(yè)合作伙伴調(diào)用。以數(shù)據(jù)過濾為例,其核心代碼如下:
??? for(int i=1;i
????????? span=EndTime.Subtract(StartTime);
???? ???? spantime=span.Seconds;????????? //獲得相鄰記錄的時間戳之差
????????????? ?if(spantime<=0.002)
??????????????????? ??????????????????????????? //標記第二條記錄為冗余數(shù)據(jù)
?????????????? else {subtime[i]=0;}
????????? }
????????? for(int j=1;j
????????? {?ds.Tables[0].Rows[j].Delete();
?????????????? j=j-1;
??????? rowcount=rowcount-1;}
??? }
??? 參考文獻[7]中指出:Web Services技術(shù)在RFID系統(tǒng)中的主要應(yīng)用是在系統(tǒng)的支撐軟件上,尤其是介于讀寫器與企業(yè)應(yīng)用之間的中間件。本文通過Web Services技術(shù),實現(xiàn)了對RFID中間件更高層次包裝,保證了RFID基礎(chǔ)架構(gòu)中三個功能層之間的相互獨立和協(xié)同工作。獨立性是指:Edge Server層只需要將來自卡片的數(shù)據(jù)初步處理后發(fā)送到消息系統(tǒng),而不必考慮消息是如何被進一步處理的;消息系統(tǒng)負責消息的緩存、路由、生成臨時xml文件等,其工作過程也是獨立與數(shù)據(jù)接口的。層與層之間協(xié)同工作是指:在消息系統(tǒng)層中,一旦臨時存儲的xml文件記錄數(shù)達到一定值,可以主動啟用數(shù)據(jù)接口層中的數(shù)據(jù)移植模塊。
??? 本文簡單介紹了RFID中間件,并針對RFID中間件研究現(xiàn)狀,列舉了幾個典型的解決方案,指出了這些解決方案的局限和不足。結(jié)合臺灣資策會研究所構(gòu)建的基于SOA的RFID中間件架構(gòu),提出了本文的中間件架構(gòu),并詳細說明了RFID中間件基礎(chǔ)架構(gòu)的實現(xiàn)。
??? 由于筆者構(gòu)建的RFID中間件采用的核心技術(shù)之一是Web Services,這勢必會帶來中間件軟件性能和數(shù)據(jù)傳輸安全性方面的問題。另外,MSMQ在處理實時事務(wù)時存在局限性,這些都是下一步需要研究的工作。
參考文獻
[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中間件設(shè)計技術(shù)初探.郵電設(shè)計技術(shù), 2006,(8):39-42.
[5] ?馮濤,劉新天.應(yīng)用JMS消息中間件實現(xiàn)企業(yè)應(yīng)用集成.天津電力技術(shù), 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系統(tǒng)中的應(yīng)用綜述.計算機應(yīng)用研究,2006,(12):1-4.
?