黄佑夫 李建强 徐 坤
(北京邮电大学信息光子学与光通信国家重点实验室 北京 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