面向移動(dòng)設(shè)備的可配置RFID中間件設(shè)計(jì)與實(shí)現(xiàn)
0 引言
射頻識(shí)別(Radio Frequency Identification, RFID)中間件是在物理RFID閱讀器和上層應(yīng)用軟件之間的一層軟件,RFID中間件屏蔽了各種不同的閱讀器傳輸標(biāo)準(zhǔn),使上層應(yīng)用軟件得到統(tǒng)一、不變的數(shù)據(jù)和控制接口;另外,它還能對(duì)原始數(shù)據(jù)進(jìn)行整合和過(guò)濾,產(chǎn)生用戶定制的數(shù)據(jù)報(bào)表。在大規(guī)模應(yīng)用RFID技術(shù)時(shí),將產(chǎn)生海量數(shù)據(jù),應(yīng)用RFID中間件將使數(shù)據(jù)處理和傳輸變得相對(duì)簡(jiǎn)單。中間件的承上啟下作用使RFID系統(tǒng)設(shè)計(jì)更為靈活,維護(hù)更為簡(jiǎn)單,不論是后端應(yīng)用程序的變化,還是前端閱讀器變化,都不會(huì)影響另外一端,省去維護(hù)多對(duì)多連接的復(fù)雜性問(wèn)題。
RFID中間件是RFID技術(shù)應(yīng)用領(lǐng)域和應(yīng)用規(guī)模發(fā)展的產(chǎn)物,當(dāng)今市場(chǎng)上已有一些產(chǎn)品,如:SUN、Microsoft和BEA的RFID中間件產(chǎn)品,然而,這些產(chǎn)品大都是運(yùn)行在PC機(jī)或服務(wù)器端,由于網(wǎng)絡(luò)帶寬有限,海量的數(shù)據(jù)要通過(guò)網(wǎng)絡(luò)傳輸,大量無(wú)效的數(shù)據(jù)都要集中在服務(wù)器端,服務(wù)器必須對(duì)海量的數(shù)據(jù)進(jìn)行篩選、過(guò)濾并按照確定的業(yè)務(wù)規(guī)則使數(shù)據(jù)轉(zhuǎn)化成用戶需要的、有意義的數(shù)據(jù),這種復(fù)雜的處理必會(huì)增加服務(wù)器的壓力,影響系統(tǒng)的性能。在發(fā)生網(wǎng)絡(luò)故障時(shí),也容易造成數(shù)據(jù)的丟失等。
隨著技術(shù)的進(jìn)步,移動(dòng)設(shè)備(如PDA等)的內(nèi)存存儲(chǔ)能力、CPU的處理能力不斷增強(qiáng),這也使得設(shè)計(jì)一種面向移動(dòng)設(shè)備的RFID中間件成為可能。針對(duì)這種技術(shù)發(fā)展趨勢(shì),本文提出了一種面向移動(dòng)設(shè)備的可靈活部署的RFID中間件SeaMobileMiddleware(SMM)。SMM能有效利用移動(dòng)設(shè)備的內(nèi)存、CPU等空閑資源,在數(shù)據(jù)發(fā)往服務(wù)器之前做一系列的預(yù)處理,優(yōu)化原始數(shù)據(jù),降低網(wǎng)絡(luò)和服務(wù)器壓力,并在網(wǎng)絡(luò)故障時(shí)自動(dòng)存儲(chǔ)數(shù)據(jù),保證數(shù)據(jù)的一致性。
1 RFID中間件SMM系統(tǒng)架構(gòu)
系統(tǒng)架構(gòu)對(duì)系統(tǒng)整體性能有很大影響,針對(duì)移動(dòng)設(shè)備特點(diǎn),給出了一種面向移動(dòng)設(shè)備的可靈活配置RFID中間件SMM系統(tǒng)架構(gòu),如圖1所示。
SMM的系統(tǒng)整體架構(gòu)包括三大模塊,其中:最下層為Device模塊,負(fù)責(zé)把物理的真實(shí)設(shè)備抽象為系統(tǒng)的Device對(duì)象;中間層為T(mén)ask Manager模塊,是SMM的核心模塊,負(fù)責(zé)處理用戶和上層應(yīng)用系統(tǒng)的一切命令,把標(biāo)準(zhǔn)的XML命令轉(zhuǎn)化系統(tǒng)的Task對(duì)象并執(zhí)行,以用來(lái)控制Device對(duì)象;最上層是用戶接口(User Interface,UI)模塊,是基于標(biāo)準(zhǔn)的Java swing開(kāi)發(fā)的圖形界面,使用戶可以在本地方便地控制Device對(duì)象。同時(shí),SMM也提供標(biāo)準(zhǔn)Web service接口,方便其他遠(yuǎn)程系統(tǒng)控制和管理移動(dòng)設(shè)備。
通過(guò)為移動(dòng)設(shè)備提供本地UI和遠(yuǎn)程管理接口,SMM可以使用戶自定義流程,通過(guò)過(guò)濾和篩選將原始標(biāo)簽數(shù)據(jù)轉(zhuǎn)化成用戶想要的有意義數(shù)據(jù)。Task Manger提供的基于XML的標(biāo)準(zhǔn)接口也為SMM提供了很好的擴(kuò)展性和兼容性。
1.1 Device模塊
由于目前的Tag、Reader等種類繁多,標(biāo)準(zhǔn)各不相同,RFID中間件的核心功能一個(gè)就是屏蔽閱讀器傳輸標(biāo)準(zhǔn)的差異,為上層提供統(tǒng)一的接口。SMM通過(guò)抽象,把不同種類RFID閱讀器、PDA等移動(dòng)設(shè)備作為不同類型Device對(duì)象進(jìn)行處理,并為每種Device配置Rule、Dispatcher和Driver三種屬性。不同Tag發(fā)出的原始數(shù)據(jù)通過(guò)Driver適配變?yōu)榻y(tǒng)一的數(shù)據(jù)格式,通過(guò)Rule將統(tǒng)一的數(shù)據(jù)格式轉(zhuǎn)化成上層系統(tǒng)需要的數(shù)據(jù),然后通過(guò)Dispatcher把數(shù)據(jù)發(fā)送到所需的上層應(yīng)用程序中。
1)Driver:考慮到實(shí)際應(yīng)用中的Tag、Reader的多樣性,Driver對(duì)不同類型Reader數(shù)據(jù)進(jìn)行適配處理,對(duì)數(shù)據(jù)進(jìn)行統(tǒng)一和格式化。SMM架構(gòu)中內(nèi)置了缺省的Driver,負(fù)責(zé)處理當(dāng)前大部分流行的Reader.同時(shí),針對(duì)特殊需求,用戶可以開(kāi)發(fā)特定Driver完成特殊Reader及Tag的數(shù)據(jù)標(biāo)準(zhǔn)化。
2)Rule:Rule可以自定義特定業(yè)務(wù)邏輯和數(shù)據(jù)過(guò)濾規(guī)則,從而把數(shù)據(jù)轉(zhuǎn)化成上層應(yīng)用程序需要的有意義的數(shù)據(jù)。
比如:通過(guò)Rule配置提取同一個(gè)廠商生產(chǎn)的Tag的數(shù)據(jù)。
3)Dispatcher:Dispatcher定義數(shù)據(jù)分發(fā)路徑,為數(shù)據(jù)提供路由功能??梢宰远xDispatcher,從而把數(shù)據(jù)發(fā)送到用戶需要的上層應(yīng)用程序中。另外,系統(tǒng)提供了離線Dispatcher,用于設(shè)備離線時(shí)的數(shù)據(jù)處理。當(dāng)設(shè)備處于離線狀態(tài)時(shí),系統(tǒng)會(huì)把數(shù)據(jù)保存在嵌入式移動(dòng)數(shù)據(jù)庫(kù)"Olite"上,當(dāng)系統(tǒng)連線時(shí),離線Dispatcher自動(dòng)將保存在"Olite"數(shù)據(jù)庫(kù)的歷史事件發(fā)送到上層應(yīng)用程序中,從而實(shí)現(xiàn)數(shù)據(jù)自動(dòng)同步。
基于抽象思想,Device模塊把各種不同RFID閱讀器等抽象成不同對(duì)象。通過(guò)配置Rule、Dispatcher和Drive屬性等管理真實(shí)設(shè)備,將來(lái)源不同的Tag數(shù)據(jù)格式化為統(tǒng)一標(biāo)準(zhǔn)的數(shù)據(jù),并按用戶定義的規(guī)則過(guò)濾數(shù)據(jù),轉(zhuǎn)發(fā)到對(duì)應(yīng)的上層系統(tǒng)中。
1.2 Task Manager模塊
RFID中間件的另一核心功能是對(duì)外提供標(biāo)準(zhǔn)接口,便于上層應(yīng)用程序調(diào)用和二次開(kāi)發(fā)[10].SMM中Task Manager模塊通過(guò)管理所有命令和任務(wù)執(zhí)行提供標(biāo)準(zhǔn)輸入輸出。
Task Manager模塊具有如下功能:1)接受各種XML命令,解析XML命令找到對(duì)應(yīng)的任務(wù)對(duì)象并執(zhí)行后把結(jié)果封裝成標(biāo)準(zhǔn)的XML返回給調(diào)用者;2)提供高效的任務(wù)隊(duì)列來(lái)處理各種各樣的XML命令;3)提供動(dòng)態(tài)的日志隊(duì)列使用戶能夠?qū)崟r(shí)監(jiān)控設(shè)備的相關(guān)信息。
基于Task Manager模塊,SMM提供圖形界面和Web Service兩種類型的請(qǐng)求來(lái)控制和管理移動(dòng)設(shè)備,以使用戶獲取所需的數(shù)據(jù)。如果是SMM內(nèi)部請(qǐng)求,則提供標(biāo)準(zhǔn)的Java API;如果是外部請(qǐng)求,則提供基于XML的標(biāo)準(zhǔn)Web接口。圖3給出了Task Manager的實(shí)現(xiàn)流程。在模塊中,上層應(yīng)用程序通過(guò)HTTP協(xié)議把標(biāo)準(zhǔn)XML命令發(fā)送到SMM,SMM通過(guò)內(nèi)嵌的輕型HTTP Server Jetty處理各種HTTP請(qǐng)求。Jetty接受到標(biāo)準(zhǔn)的XML請(qǐng)求后,把各種XML命令給Task Manager模塊,Task Manager解析XML格式的命令后,通過(guò)Java反射得到對(duì)應(yīng)的Task對(duì)象。如果Task對(duì)象是同步的,則調(diào)用Task執(zhí)行方法,返回相應(yīng)結(jié)果并轉(zhuǎn)化成標(biāo)準(zhǔn)XML給Jetty服務(wù)器;如果Task對(duì)象是異步的,則放到任務(wù)隊(duì)列里面去,返回為空。
任務(wù)隊(duì)列通過(guò)線程按照先進(jìn)先出的方法來(lái)執(zhí)行任務(wù)。為展示Task執(zhí)行過(guò)程,本文給出設(shè)備啟動(dòng)過(guò)程展現(xiàn)上層應(yīng)用程序控制設(shè)備的過(guò)程。
上層應(yīng)用通過(guò)HTTP(POST)方法把標(biāo)準(zhǔn)的XML命令發(fā)送到Jetty服務(wù)器上,格式如下:
Task Manager根據(jù)"action"的內(nèi)容,通過(guò)Java提供的反射機(jī)制得到相應(yīng)任務(wù)Start Device Task實(shí)例,并把相應(yīng)的設(shè)備名稱作為參數(shù)交給Start Device Task實(shí)例。由于Start Device Task是異步的,所以Start Device Task會(huì)放到任務(wù)隊(duì)列中執(zhí)行并且返回空。當(dāng)任務(wù)隊(duì)列執(zhí)行到Start Device Task任務(wù)時(shí),Task Manager日志隊(duì)列會(huì)實(shí)時(shí)寫(xiě)日志改變dev21和dev22的狀態(tài),并返回到SMM的UI。
{$page$}
同理,上層應(yīng)用也通過(guò)HTTP(GET)方法得到設(shè)備信息。
由于得到設(shè)備信息的Task是同步的,所以Jetty服務(wù)器會(huì)返回如下格式的XML信息給上層系統(tǒng),包括:設(shè)備名、用戶定義的掃描時(shí)間間隔、設(shè)備狀態(tài),以及driver、rule和dispatcher等相關(guān)信息。同理,外部應(yīng)用程序可以通過(guò)HTTP方法來(lái)增加、啟動(dòng)、更新等操作來(lái)控制設(shè)備,從而可以動(dòng)態(tài)改變"Device"的Driver,Rule,Dispatcher等屬性,有效篩選、過(guò)濾并按照確定的業(yè)務(wù)規(guī)則使數(shù)據(jù)轉(zhuǎn)化成需要的、有意義的數(shù)據(jù)。
1.3 SMM的整合
作為一種面向移動(dòng)設(shè)備的可配置RFID中間件,SMM需要與底層和上層進(jìn)行有效整合,以發(fā)揮其功能。本文給出了一種SMM整合方案,如圖3所示。
本文提出的SMM的底層基于J2ME,可以安裝部署于WinCE、Linux、Symbain等多個(gè)面向移動(dòng)設(shè)備的操作系統(tǒng)上。
在SMM整合架構(gòu)中,SMM安裝在各種不同的移動(dòng)設(shè)備上,讀取不同類型的Tag、Smart Card的數(shù)據(jù)等,原始數(shù)據(jù)通過(guò)SMM轉(zhuǎn)化成用戶或者系統(tǒng)需要的數(shù)據(jù),然后發(fā)送到上層系統(tǒng)中。
2 SMM性能分析
為了分析SMM性能,本文在PC機(jī)上使用微軟的移動(dòng)設(shè)備模擬器Device Emulator搭建了WindowsMobile6.0仿真環(huán)境,并在仿真環(huán)境中安裝Java虛擬機(jī)crème.其中:仿真器處理器為ARM9207,主頻400GHz,內(nèi)存94.16MB.仿真實(shí)驗(yàn)步驟如下。
1)啟動(dòng)Windows CE的Java虛擬機(jī),系統(tǒng)檢測(cè)顯示的內(nèi)存圖如表1.
2)基于CrEme啟動(dòng)SMM,系統(tǒng)檢測(cè)顯示的內(nèi)存圖如表2所示。
3)關(guān)閉SMM的嵌入式服務(wù)Jetty,系統(tǒng)檢測(cè)顯示的內(nèi)存圖如表3所示。
由表1~3可知,運(yùn)行CrEme的所需的內(nèi)存為Mc=559KB,SMM運(yùn)行所需的總內(nèi)存Mt=1143KB,不開(kāi)啟Jetty服務(wù)器所需的內(nèi)存為Mnj=847KB,SMM的嵌入式服務(wù)器Jetty所需的內(nèi)存為Mj=Mt-Mnj=296KB.關(guān)閉Jetty并除去CrEme消耗的內(nèi)存,SMM所需的資源Ms=Mt-Mj-Mc=288KB.可見(jiàn),SMM對(duì)資源要求較低,完全可以適合資源有限的移動(dòng)設(shè)備。
3 結(jié)語(yǔ)
針對(duì)RFID移動(dòng)設(shè)備的發(fā)展趨勢(shì),本文提出一種面向移動(dòng)設(shè)備的可靈活配置RFID中間件SMM.SMM可以使上層系統(tǒng)和用戶靈活配置和管理移動(dòng)設(shè)備,并在出現(xiàn)網(wǎng)絡(luò)故障時(shí),保證數(shù)據(jù)同步和一致性。SMM對(duì)資源消耗較小,在移動(dòng)設(shè)備資源有限的情況下可以充分利用移動(dòng)設(shè)備的資源,通過(guò)過(guò)濾、分析等操作處理原始數(shù)據(jù),為上層提供有意義的數(shù)據(jù),并減少上層應(yīng)用程序的資源消耗,提高系統(tǒng)效率。