??? 摘 要: 介紹了目前相對成熟的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)
??????????????????? ??????????????????????????? //標記第二條記錄為冗余數據
?????????????? else {subtime[i]=0;}
????????? }
????????? for(int j=1;j
????????? {?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.
?