黃佑夫 李建強 徐 坤
(北京郵電大學信息光子學與光通信國家重點實驗室 北京 100876)
?
基于Ajax與MVC的RFID讀寫器B/S管理系統的設計實現
黃佑夫 李建強 徐 坤
(北京郵電大學信息光子學與光通信國家重點實驗室 北京 100876)
針對分布式RFID系統監控大規模讀寫器時,存在實時性差和人力成本高的問題,設計并實現一種對大量讀寫器進行實時監控的高效能B/S管理系統。采用MVC設計模式,實現業務邏輯與頁面顯示的有效分離,使系統各模塊間耦合度降低;利用Ajax的異步交互能力,對前端界面進行無刷新式的更新,提高客戶端的響應速度,從而實現對連接在一個局域網內的大量讀寫器進行高效實時監控的功能。系統擁有穩定的性能以及良好的可擴展性和易維護性。
Ajax MVC RFID讀寫器 管理系統
目前,隨著RFID系統越來越廣泛的應用,相應需要部署的讀寫器規模也越來越大,讀寫器的管理問題逐漸引起人們的關注。數量眾多的讀寫器在地域上聚集分布, 從而構成讀寫器網絡。這就要求RFID系統能集中管理大量讀寫器,協同實現數據采集和參數配置等功能。當前管理讀寫器網絡有兩種主流方式:一種是人工手動管理,比如公交收費系統等。這種管理方式存在實時性差和人力成本高的問題,伴隨著讀寫器數量的激增,這些弊端已經很難滿足對大量讀寫器管理的需求。另一種是對通過固網或局域網互聯的讀寫器網絡進行集中管理的方式,由專門搭載管理系統的服務器統一進行數據采集和參數配置等操作。這種方式中管理員可以隨時隨地登錄服務器的網址同時對大量讀寫器進行監控,是將來對RFID讀寫器自動管理的主流方法。
本文系統采用基于Ajax技術與MVC設計模式的B/S體系架構。其中,B/S模式具有良好的易用性與通用性,方便系統的部署;MVC設計模式可以提高系統的可擴展性與可維護性;Ajax技術通過提高頁面與用戶的交互能力來提升系統性能。
1.1 MVC設計模式
MVC模式中的模型Model是業務處理的核心,它將實際問題抽象成程序中的對象,通過處理這些對象來實現實際問題的需求;視圖View是應用程序與用戶的接口,主要負責頁面展示、與用戶交互等工作;控制器Controller將用戶的請求信息映射成程序中的業務邏輯,并進一步細化為對模型的調用處理。當模型發生變化時控制器也會向視圖返回結果,進而保證模型和視圖同步更新。
在基于MVC模式的應用程序中,模型、視圖和控制器分別由JavaBean、JSP和Servlet實現。當客戶端向服務器發起HTTP請求時,先由控制器Servlet統一調度,將請求提交給對應的業務Bean對象;業務Bean對象更新代表對應模型的數據Bean對象;最后控制器Servlet將請求結果轉到對應的視圖JSP,完成界面的更新。
1.2 Ajax技術
Ajax技術是一種利用客戶端腳本,實現以異步的方式與服務器進行通信的網絡開發技術。其中,HTML和CSS負責頁面顯示,DOM對象負責數據動態更新, XML負責數據交換, XMLHttpRequest對象負責完成與服務器的異步通信,JavaScript負責將各模塊有機結合起來。
在基于Ajax的Web應用中,客戶端和服務器端之間加入了Ajax引擎。用戶請求首先提交給Ajax引擎,并由它處理部分簡單請求,其余交由服務器處理。用戶在等待響應的過程中依然能發出指令,從而實現異步交互。服務器處理結束后不僅會將結果返回,還會改變HTTP的就緒狀態。Ajax引擎根據不同的就緒狀態調用不同的回調函數,將結果在頁面的指定位置進行局部更新,而不是刷新全部頁面。圖1為基于Ajax的系統模型結構圖。

圖1 基于Ajax的系統模型結構圖
2.1 系統功能
基本的RFID系統包含讀寫器、天線和無源標簽。本文系統實現的主要功能是對互連于一個局域網的RFID讀寫器進行統一管理,具體的功能模塊如圖2所示。

圖2 系統功能模塊
(1) 讀寫器管理:系統通過掃描發現附近存在的讀寫器,然后對讀寫器的參數進行讀取和更新,參數包括讀寫器射頻模塊的編碼方式和天線發送的頻率等。
(2) 天線管理:系統可獲取和更新天線的相關屬性,包括使能狀態、天線功率、駐留時間、盤訊周期和駐波比等。
(3) 標簽管理:系統可盤點讀寫器周圍的標簽信息,包括天線號、EPC碼、Rssi值以及遠程IP等,并能對標簽各個區域的數據進行讀寫。
2.2 總體架構
本文系統主要由硬件數據采集部分與上位機管理軟件兩部分組成。硬件數據采集部分由Impinj R2000讀寫器網絡構成,讀寫器通過以太網將采集到的數據信息匯總到服務器端的上位機軟件。上位機軟件是基于Ajax與MVC設計的。
本文系統為了解決Ajax在不同瀏覽器中使用時的兼容性問題,并沒有套用XMLHttpRequest對象的定義,而是采用jQuery框架的$. Ajax(option)方法。option參數包含了請求方式、請求地址、返回數據類型、發送數據內容和回調函數等信息。系統軟件架構如圖3所示。

圖3 系統軟件架構圖
如圖3所示,在視圖層中,將JSP頁面的各個元素寫為獨立的DOM對象,使得Ajax操作頁面元素時更加方便。在JSP中嵌入JavaScript腳本,在腳本中動態獲取用戶的請求數據,并通過$.Ajax(option)方法明確數據傳輸與處理的具體細節。這使得Web頁面完成了數據獲取的功能,為控制層提供更好的服務。在控制層,Servlet會根據Ajax引擎傳來的數據調用相應的業務Bean進行數據處理。首先將數據封裝成數據Bean,并傳入讀寫器廠商提供的動態鏈接庫DLL中的業務處理方法中,從而完成業務邏輯的處理。最后Ajax引擎調用請求響應成功后的回調函數,實現無刷新式的局部界面更新。
2.3 具體實現
(1) 模型層設計
模型層主要由處理業務邏輯的Bean對象和封裝業務數據的Bean對象構成。本文系統不存在對數據持久化的需求,諸如記錄、盤點標簽的信息并存入數據庫。因為每秒中系統對標簽的盤點次數在50次左右,盤點信息瞬息萬變而系統對歷史信息并沒有實際的需求,所以本文系統并未引入數據庫;但對讀寫器網絡的實際操縱是由硬件廠商提供的動態鏈接庫DLL實現的。鑒于JNI調用DLL時,方法都被聲明為native本地方法而并沒有具體的方法內容,所以將這些方法封裝在一個Linkage公有類中作為基礎資源。當此類被JVM加載時,靜態代碼塊通過調用System.loadLibrary(″DLL文件名″)來加載DLL,使它以JNI調用的方式通過native聲明本地方法實現系統調用。native方法與底層硬件進行通信是雙向的,既可以獲取數據,也可以發送指令。當有業務需求時,調用Linkage中處理相應業務邏輯的方法進行處理, Linkage是處理所有與讀寫器相關業務邏輯的業務對象。在DLL中的接口方法參數中,已經對實際對象進行了抽象,比如設置天線的方法public native int Radio_SetAntennaInfo(int handle,Antenna_Info ata_info)中,天線被抽象為Antenna_Info.java;同理,還有代表讀寫器的Radio_Info.java和代表標簽盤點信息的St_Inv_Data.java等。這些類在DLL中的方法被調用時使用,都是輸入數據的邏輯抽象,為封裝業務數據的數據對象。
(2) 視圖層設計
視圖層主要由界面設計和嵌入Javascript腳本兩部分組成。在界面顯示方面,本文系統在JSP頁面中融入jQuery技術。jQuery是一個優秀的JavaScript庫,其語句快速簡潔,可以輕易地處理HTML文檔、選取DOM元素和進行事件處理;并提供了簡潔的Ajax交互接口,真正做到了寫得更少、做得更多。另外,界面顯示還使用了基于jQuery的UI插件集合EasyUI,不僅使用方便而且功能豐富。比如在標簽盤點列表中顯示標簽數據,可以采用在數據網格控件中添加行的方法高效實現:("#dgs").datagrid('insertRow', {index: i, row: {每行數據}})。JavaScript腳本部分主要根據用戶輸入調用相應的.ajax(option)方法,Ajax引擎將用戶請求發送給Servlet。其中,用于掃描讀寫器的JS腳本簡化代碼實現如下:
function query(){
$.ajax({
type:″post″,
url:″./Main″,
dataType:″xml″,
data:{
action:1
},
success: function(xml){
var status_val =
$(xml).find(″users″).children(″status″).text();
if( status_val == 0) {
$(′#status′).val(″搜索成功!″);
} else{
$(′#status′).val(″錯誤碼:″+status_val);
}
}
});
}
(3) 控制層設計
控制層主要實現視圖與模型的聯結。通過web.xml捕捉請求,把Ajax引擎的頁面請求分配給對應的Servlet程序。在Servlet的doGet()或doPost()方法中,根據區別不同業務的標識變量調用對應的業務處理方法,并將Ajax引擎傳來的數據信息封裝后傳入該方法,完成相應的邏輯業務,然后通過IO流向視圖返回結果進行顯示。
基于MVC的系統結構將用戶界面、業務邏輯分隔開,有利于系統的擴展和維護,并提高系統的可維護性和可擴展性。
在局域網環境下對系統進行測試,客戶端軟件是火狐瀏覽器,服務器引擎為Apache的Tomcat 7.0。經統計,當讀寫器與標簽數量較大時,一般的JSP界面的平均顯示時間是2~4秒,而使用Ajax技術的界面平均顯示時間是1秒左右。當需要盤點的標簽數量越多,使用Ajax就越有優勢。Ajax技術減少了用戶的等待時間,有效改善了用戶體驗。
針對管理大規模讀寫器的實時性與高效性的需求,本文設計實現了基于Ajax與MVC模式的RFID讀寫器B/S管理系統。其中MVC設計模式降低了程序中各模塊間的耦合度,優化了系統的體系架構。Ajax技術改善了傳統Web應用實時性差的缺點。系統運行穩定高效,擁有良好的可擴展性和易維護性。
[1] 林萍.基于SSH+DWR的高校科研管理系統研究與實現[J].計算機應用與軟件,2014,31(7):66-68.
[2] 尼俊紅,張麗,張淼,等.基于Ajax和MVC的電力通信告警系統的設計實現[J].計算機應用與軟件,2013,30(8):226-227,282.
[3] 張超,趙平,何靜,等.基于MVC模式的指控系統軟件設計與實現[J].強激光與粒子束,2013,25(S1):91-95.
[4] 文遠保,劉峰.一種基于Ajax的Web車輛監控系統設計與實現[J].華中科技大學學報:自然科學版,2007,35(8):77-79.
[5] 李興華.基于SSH的物流信息系統的研究與實現[D].廣東:中山大學,2010.
[6] 彭鵬.基于B/S架構的圖書管理系統[D].山東:山東大學,2013.
[7] 黃玉蘭.物聯網:射頻識別(RFID)核心技術詳解[M].北京:人民郵電出版社,2012.
[8] 比伯奧特,耶胡卡茨.圖靈程序設計叢書:jQuery實戰[M].三生石上,譯.2版.北京:人民郵電出版社,2012.
[9] 李興華,王月清.名師講壇:Java Web開發實戰經典基礎篇[M].北京:清華大學出版社,2010.
[10] Xie L,Yin Y F,Vasilakos A V,et al.Managing RFID data:challenges,opportunities and solutions[J].IEEE Communications Surveys and Tutorials,2014,16(3):1294-1311.
DESIGN AND IMPLEMENTATION OF B/S MANAGEMENT SYSTEM FOR RFID READERS BASED ON AJAX AND MVC
Huang Youfu Li Jianqiang Xu Kun
(StateKeyLaboratoryofInformationPhotonicsandOpticalCommunications,BeijingUniversityofPostsandTelecommunications,Beijing100876,China)
Certain problems exist in distributed RFID system when monitoring large-scale readers, such as the bad real-time performance and the high manpower cost. In light of this, we design an efficient browser/server management system for the real-time monitoring of a large numbers of readers, and implement it as well. We adopt the MVC hierarchical design pattern in order to achieve efficient separation of the page expression from the business logic, this reduces the coupling degrees between modules of the system; By making use of the asynchronous interaction mechanism provided by Ajax, the front end can be updated without refreshing, so the response speed of clients is further improved, therefore the system achieves the function of efficient real-time monitoring on a great deal of readers connected within a LAN. This system has stable performance, good scalability and maintainability.
Ajax MVC RFID reader Management system
2015-06-25。國家自然科學基金項目(61431003,6130 2086)。黃佑夫,碩士生,主研領域:RFID管理系統。李建強,副教授。徐坤,教授。
TP3
A
10.3969/j.issn.1000-386x.2016.11.011