0 引言
射頻識別(Radio Frequency Identification, RFID)中間件是在物理RFID閱讀器和上層應用軟件之間的一層軟件,RFID中間件屏蔽了各種不同的閱讀器傳輸標準,使上層應用軟件得到統(tǒng)一、不變的數據和控制接口;另外,它還能對原始數據進行整合和過濾,產生用戶定制的數據報表。在大規(guī)模應用RFID技術時,將產生海量數據,應用RFID中間件將使數據處理和傳輸變得相對簡單。中間件的承上啟下作用使RFID系統(tǒng)設計更為靈活,維護更為簡單,不論是后端應用程序的變化,還是前端閱讀器變化,都不會影響另外一端,省去維護多對多連接的復雜性問題。
RFID中間件是RFID技術應用領域和應用規(guī)模發(fā)展的產物,當今市場上已有一些產品,如:SUN、Microsoft和BEA的RFID中間件產品,然而,這些產品大都是運行在PC機或服務器端,由于網絡帶寬有限,海量的數據要通過網絡傳輸,大量無效的數據都要集中在服務器端,服務器必須對海量的數據進行篩選、過濾并按照確定的業(yè)務規(guī)則使數據轉化成用戶需要的、有意義的數據,這種復雜的處理必會增加服務器的壓力,影響系統(tǒng)的性能。在發(fā)生網絡故障時,也容易造成數據的丟失等。
隨著技術的進步,移動設備(如PDA等)的內存存儲能力、CPU的處理能力不斷增強,這也使得設計一種面向移動設備的RFID中間件成為可能。針對這種技術發(fā)展趨勢,本文提出了一種面向移動設備的可靈活部署的RFID中間件SeaMobileMiddleware(SMM)。SMM能有效利用移動設備的內存、CPU等空閑資源,在數據發(fā)往服務器之前做一系列的預處理,優(yōu)化原始數據,降低網絡和服務器壓力,并在網絡故障時自動存儲數據,保證數據的一致性。
1 RFID中間件SMM系統(tǒng)架構
系統(tǒng)架構對系統(tǒng)整體性能有很大影響,針對移動設備特點,給出了一種面向移動設備的可靈活配置RFID中間件SMM系統(tǒng)架構,如圖1所示。
SMM的系統(tǒng)整體架構包括三大模塊,其中:最下層為Device模塊,負責把物理的真實設備抽象為系統(tǒng)的Device對象;中間層為Task Manager模塊,是SMM的核心模塊,負責處理用戶和上層應用系統(tǒng)的一切命令,把標準的XML命令轉化系統(tǒng)的Task對象并執(zhí)行,以用來控制Device對象;最上層是用戶接口(User Interface,UI)模塊,是基于標準的Java swing開發(fā)的圖形界面,使用戶可以在本地方便地控制Device對象。同時,SMM也提供標準Web service接口,方便其他遠程系統(tǒng)控制和管理移動設備。
通過為移動設備提供本地UI和遠程管理接口,SMM可以使用戶自定義流程,通過過濾和篩選將原始標簽數據轉化成用戶想要的有意義數據。Task Manger提供的基于XML的標準接口也為SMM提供了很好的擴展性和兼容性。
1.1 Device模塊
由于目前的Tag、Reader等種類繁多,標準各不相同,RFID中間件的核心功能一個就是屏蔽閱讀器傳輸標準的差異,為上層提供統(tǒng)一的接口。SMM通過抽象,把不同種類RFID閱讀器、PDA等移動設備作為不同類型Device對象進行處理,并為每種Device配置Rule、Dispatcher和Driver三種屬性。不同Tag發(fā)出的原始數據通過Driver適配變?yōu)榻y(tǒng)一的數據格式,通過Rule將統(tǒng)一的數據格式轉化成上層系統(tǒng)需要的數據,然后通過Dispatcher把數據發(fā)送到所需的上層應用程序中。
1)Driver:考慮到實際應用中的Tag、Reader的多樣性,Driver對不同類型Reader數據進行適配處理,對數據進行統(tǒng)一和格式化。SMM架構中內置了缺省的Driver,負責處理當前大部分流行的Reader.同時,針對特殊需求,用戶可以開發(fā)特定Driver完成特殊Reader及Tag的數據標準化。
2)Rule:Rule可以自定義特定業(yè)務邏輯和數據過濾規(guī)則,從而把數據轉化成上層應用程序需要的有意義的數據。
比如:通過Rule配置提取同一個廠商生產的Tag的數據。
3)Dispatcher:Dispatcher定義數據分發(fā)路徑,為數據提供路由功能。可以自定義Dispatcher,從而把數據發(fā)送到用戶需要的上層應用程序中。另外,系統(tǒng)提供了離線Dispatcher,用于設備離線時的數據處理。當設備處于離線狀態(tài)時,系統(tǒng)會把數據保存在嵌入式移動數據庫"Olite"上,當系統(tǒng)連線時,離線Dispatcher自動將保存在"Olite"數據庫的歷史事件發(fā)送到上層應用程序中,從而實現數據自動同步。
基于抽象思想,Device模塊把各種不同RFID閱讀器等抽象成不同對象。通過配置Rule、Dispatcher和Drive屬性等管理真實設備,將來源不同的Tag數據格式化為統(tǒng)一標準的數據,并按用戶定義的規(guī)則過濾數據,轉發(fā)到對應的上層系統(tǒng)中。
1.2 Task Manager模塊
RFID中間件的另一核心功能是對外提供標準接口,便于上層應用程序調用和二次開發(fā)[10].SMM中Task Manager模塊通過管理所有命令和任務執(zhí)行提供標準輸入輸出。
Task Manager模塊具有如下功能:1)接受各種XML命令,解析XML命令找到對應的任務對象并執(zhí)行后把結果封裝成標準的XML返回給調用者;2)提供高效的任務隊列來處理各種各樣的XML命令;3)提供動態(tài)的日志隊列使用戶能夠實時監(jiān)控設備的相關信息。
基于Task Manager模塊,SMM提供圖形界面和Web Service兩種類型的請求來控制和管理移動設備,以使用戶獲取所需的數據。如果是SMM內部請求,則提供標準的Java API;如果是外部請求,則提供基于XML的標準Web接口。圖3給出了Task Manager的實現流程。在模塊中,上層應用程序通過HTTP協(xié)議把標準XML命令發(fā)送到SMM,SMM通過內嵌的輕型HTTP Server Jetty處理各種HTTP請求。Jetty接受到標準的XML請求后,把各種XML命令給Task Manager模塊,Task Manager解析XML格式的命令后,通過Java反射得到對應的Task對象。如果Task對象是同步的,則調用Task執(zhí)行方法,返回相應結果并轉化成標準XML給Jetty服務器;如果Task對象是異步的,則放到任務隊列里面去,返回為空。
任務隊列通過線程按照先進先出的方法來執(zhí)行任務。為展示Task執(zhí)行過程,本文給出設備啟動過程展現上層應用程序控制設備的過程。