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)行整合和過濾,產(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ù)雜性問題。
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ù)要通過網(wǎng)絡(luò)傳輸,大量無效的數(shù)據(jù)都要集中在服務(wù)器端,服務(wù)器必須對(duì)海量的數(shù)據(jù)進(jìn)行篩選、過濾并按照確定的業(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ì)象;中間層為Task Manager模塊,是SMM的核心模塊,負(fù)責(zé)處理用戶和上層應(yīng)用系統(tǒng)的一切命令,把標(biāo)準(zhǔn)的XML命令轉(zhuǎn)化系統(tǒng)的Task對(duì)象并執(zhí)行,以用來控制Device對(duì)象;最上層是用戶接口(User Interface,UI)模塊,是基于標(biāo)準(zhǔn)的Java swing開發(fā)的圖形界面,使用戶可以在本地方便地控制Device對(duì)象。同時(shí),SMM也提供標(biāo)準(zhǔn)Web service接口,方便其他遠(yuǎn)程系統(tǒng)控制和管理移動(dòng)設(shè)備。
通過為移動(dòng)設(shè)備提供本地UI和遠(yuǎn)程管理接口,SMM可以使用戶自定義流程,通過過濾和篩選將原始標(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通過抽象,把不同種類RFID閱讀器、PDA等移動(dòng)設(shè)備作為不同類型Device對(duì)象進(jìn)行處理,并為每種Device配置Rule、Dispatcher和Driver三種屬性。不同Tag發(fā)出的原始數(shù)據(jù)通過Driver適配變?yōu)榻y(tǒng)一的數(shù)據(jù)格式,通過Rule將統(tǒng)一的數(shù)據(jù)格式轉(zhuǎn)化成上層系統(tǒng)需要的數(shù)據(jù),然后通過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ì)特殊需求,用戶可以開發(fā)特定Driver完成特殊Reader及Tag的數(shù)據(jù)標(biāo)準(zhǔn)化。
2)Rule:Rule可以自定義特定業(yè)務(wù)邏輯和數(shù)據(jù)過濾規(guī)則,從而把數(shù)據(jù)轉(zhuǎn)化成上層應(yīng)用程序需要的有意義的數(shù)據(jù)。
比如:通過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ù)庫"Olite"上,當(dāng)系統(tǒng)連線時(shí),離線Dispatcher自動(dòng)將保存在"Olite"數(shù)據(jù)庫的歷史事件發(fā)送到上層應(yīng)用程序中,從而實(shí)現(xiàn)數(shù)據(jù)自動(dòng)同步。
基于抽象思想,Device模塊把各種不同RFID閱讀器等抽象成不同對(duì)象。通過配置Rule、Dispatcher和Drive屬性等管理真實(shí)設(shè)備,將來源不同的Tag數(shù)據(jù)格式化為統(tǒng)一標(biāo)準(zhǔn)的數(shù)據(jù),并按用戶定義的規(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)用和二次開發(fā)[10].SMM中Task Manager模塊通過管理所有命令和任務(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ì)列來處理各種各樣的XML命令;3)提供動(dòng)態(tài)的日志隊(duì)列使用戶能夠?qū)崟r(shí)監(jiān)控設(shè)備的相關(guān)信息。
基于Task Manager模塊,SMM提供圖形界面和Web Service兩種類型的請(qǐng)求來控制和管理移動(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)用程序通過HTTP協(xié)議把標(biāo)準(zhǔn)XML命令發(fā)送到SMM,SMM通過內(nèi)嵌的輕型HTTP Server Jetty處理各種HTTP請(qǐng)求。Jetty接受到標(biāo)準(zhǔn)的XML請(qǐng)求后,把各種XML命令給Task Manager模塊,Task Manager解析XML格式的命令后,通過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ì)列通過線程按照先進(jìn)先出的方法來執(zhí)行任務(wù)。為展示Task執(zhí)行過程,本文給出設(shè)備啟動(dòng)過程展現(xiàn)上層應(yīng)用程序控制設(shè)備的過程。