APP下载

基于Node.js,Sencha Touch和iBeacon信息推送系统的设计与实现*

2016-09-21尹延宁刘太君江明玉

火力与指挥控制 2016年8期
关键词:蓝牙二维码界面

尹延宁,刘太君,叶 焱,江明玉

(宁波大学信息科学与工程学院,浙江 宁波 315211)

基于Node.js,Sencha Touch和iBeacon信息推送系统的设计与实现*

尹延宁,刘太君,叶焱,江明玉

(宁波大学信息科学与工程学院,浙江宁波315211)

为了解决利用二维码技术实现的传统信息推送系统操作流程复杂,用户体验不佳,智能化不足的问题,提出了一种基于iBeacon定位技术和云架构的整体设计方案。依托于云架构,利用web服务器Node.js和NoSQL数据库MongoDB进行相关数据的处理、存储,利用基于iBeacon的定位技术实现位置检测,前端采用HTML5框架Sencha Touch并结合Objective-C以hybrid app的形式实现信息展示。详细阐述了系统的架构、功能和设计方案,为建设新型细信息推送系统提供了新的思路与方向。

iBeacon,Node.js,Sencha Touch,Objective-C,信息推送

0 引言

随着社会的发展,生产力的提高,人们的消费能力显著增长,琳琅满目的商品令人应接不暇。如何让消费者快速获取有效信息,提高选择效率,从而提高销售额是各大销售商的工作重点。依托于二维码技术的传统信息推送系统的出现,一定程度上解决了此问题,对移动电子商务的发展具有重要意义[1]。利用二维码技术,消费者只需要利用智能手机等智能终端扫一扫即可获得相关信息,帮助消费者进一步作出选择。

然而二维码技术需要首先下载识读软件到手机[2],之后消费者才能主动扫描二维码,由于消费品数量众多,这无疑增加了用户负担,且二维码扫描操作过程繁琐,降低了用户体验。二维码技术无法跟踪用户位置变化,进而有针对性地实现对用户的信息主动推送,降低了销售商的信息推送效率。

基于iBeacon定位技术的信息推送系统利用iBeacon的定位技术[3],在前端实时获取用户位置信息,根据用户位置向服务器主动获取相关信息,以向用户展示。用户只需手持支持蓝牙4.0的移动设备即可随时接收信息,不再需要主动扫描二维码等过程,操作流程简化,用户体验获得极大提升。

基于iBeacon定位技术的信息推送系统由iBeacon蓝牙、前端表现层、Node.js后台服务层、MongoDB数据存储层4部分组成,下面分别进行阐述。

1 iBeacon蓝牙

iBeacon是Apple公司智能移动设备OS(iOS7)上配备的新功能,本质上是一个低功耗蓝牙(BLE)设备[4]。iBeacon应用于近距离的通信,持续向周围空间发射信号,信号中包含自己特有的唯一识别ID:UUID,当有用户手持移动设备靠近时,可以检测到iBeacon发射的信号并提取其UUID,根据其UUID可以进行相关操作。如在商场安放iBeacon蓝牙,即可使iPhone或iPad上显示由服务器向顾客发送的优惠信息。

iBeacon遵从蓝牙4.0技术标准。该标准由SIG制定。蓝牙4.0专门面向对成本和能耗要求都比较高的无线方案。具有超低峰值、平均和待机模式功耗,一枚普通的纽扣电池可维持一年甚至数年运行[5]。通过对附近多个iBeacon所发射信号的强度进行比较,可以确定最近距离的iBeacon的UUID。本系统利用此原理实现基于位置的信息推送服务。

系统为每个商品配备一个iBeacon蓝牙设备,商品信息与iBeacon识别号UUID进行一对一绑定。iBeacon蓝牙芯片采用cc2541芯片。

2 前端表现层

前端表现层采用Objective-C和Sencha Touch框架相结合的方式进行hybrid app开发。

Objective-C是扩充C的面向对象的编程语言,主要用于采用OpenStep标准的系统如Mac OSX、GNUstep。其基本用途是为IOS操作系统编写应用程序,可运行于iPhone和iPad移动设备。针对IOS移动设备开发native app和hybrid app,Objective-C语言是必须选择。

Sencha Touch框架是第一个支持HTML5的JavaScript移动端框架[6]。支持世界上主流的移动设备。Sencha Touch的整个库文件很小,经过压缩和gzip后只有80 KB左右,同时还具有强大的数据集成功能。可以通过Ajax、JSONp、YQL等方式将数据绑定到List等组件或者写入本地离线存储[7]。可以实现一次开发部署,多处运行[8]。

图1 MVC结构图

Sencha Touch框架采用MVC三层结构模式进行开发。通过将业务逻辑、数据和界面显示分离的方法进行代码组织,降低了各个模块间的耦合程度,方便了程序维护和管理,使代码阅读起来更加流畅。典型的MVC框架图如图1所示。

前端表现层作为交互和展示界面,考虑到使用人群的不同,分别针对管理人员和普通用户进行开发。针对管理人员的前端功能框图如图2所示。

图2 管理人员前端功能框图

考虑到管理人员的应用需求,针对管理人员实现位置检测、用户管理、信息展示、数据管理4大功能。以用户权限对系统数据进行管理如数据上传,修改,更新,查询等。针对普通用户即消费者,其主要应用需求为根据位置获取商品信息,故仅为其保留两大功能:位置检测和信息展示。

3 Node.js后台服务层

Node.js是致力于实时Web应用的平台,用于快速搭建并发性能高、响应速度快的网络应用。Google Chrome V8引擎的优化,使JavaScript语言的速度获得极大提升,实现了后台和前端编程语言上的统一[9]。与C语言相比,在性能上相差无几。但使用JavaScript脚本语言的开发成本却比C语言低得多。

Node.js具有以下优点:①在单线程的情况下,仍能进行任务的并行处理;②使用Mudule模块对不同的功能进行划分,简化开发过程;③采用事件驱动机制和异步编程风格实现网络服务。其组织架构如图3所示。最顶层的是Node.js标准库,其中封装了Node.js提供的核心模块,比如:http、https、fs等,实现了Node.js的应用层接口。在Libeio和Libev的基础上抽象出了Libuv层。针对不同的操作系统分别采用不同的机制来保证高性能的实现[10]。

图3 Node.js组织架构图

为实现高并发性能,Node.js设计为单线程,异步I/O模式。极大地提高了系统的健壮性,并且不会有多线程开销[11]。

作为开源平台,Node.js得到了大量支持,有许多开源框架以供使用。系统使用Node.js的express框架搭建服务器,为各功能模块提供运行环境。系统架构图如图4所示。

图4 系统架构图

4 MongoDB数据存储层

MongoDB数据库具有面向集合存储,模式自由,支持云级别的伸缩性等特点。文件存储格式为BSON,作为一种JSON的扩展,同JavaScript有良好的兼容性,原生支持Node.js[12]。

MongoDB提供了复制机制以保证多个数据库之间的数据同步,用以实现数据库的容灾、备份、回复、负载均衡等功能。MongoDB的复制机制有两种:Master-Slave和Replica Sets。Replica Sets较Master-Slave架构功能更为强大,有故障自动切换和自动修复节点的能力,大大降低了单点故障发生的概率[13]。

本系统在一台服务器上部署了3节点的Replica Sets。其中1个节点作为主库,其他2个节点作为从库。正常情况下,只有主库能进行写操作。当主库出现故障时,通过MongoDB的选举机制在从库中选取一个实例作为主库继续运行,并进行故障节点的修复,从而实现容灾能力。

5 系统功能设计与实现

5.1普通用户功能设计与实现

针对普通用户,实现位置检测和信息展示功能。

(1)位置检测。位置检测的关键设备是iBeacon蓝牙和IOS移动设备。利用IOS应用程序开发语言Objective-C进行开发。通过调用beacon、beacon-Manager、beaconRegion和positionDot属性实现。positionDot可以自动确定iBeacon与移动终端相距的具体米数,beaconRegion属性负责检测移动终端周围30m左右的iBeacon的UUID。提取距移动终端距离最近的iBeacon的UUID作为信息请求参数,向服务器发送请求。

(2)信息展示。信息展示界面由Sencha Touch框架实现,与native app打包在一起。Node.js服务器在接收前端请求后,根据请求参数将响应数据返回给前端。前端接收数据后,利用store数据存储模块实现数据的排序、筛选,利用List、dataview等数据展示组件以良好的方式展示给用户。展示界面如图5所示。

图5 展示界面

5.2管理人员功能设计与实现

针对管理人员,除普通用户所具备的位置检测和信息展示功能外,还应具备用户管理、数据管理等功能。操作环境不再局限于移动设备。

(1)用户管理。包括登录和注册功能。首先进入登录界面,登录成功后跳转主界面,方可进行其他操作。若用户未注册,则转到注册界面注册后登录。注册界面如图6(a)所示。

(2)数据管理。包括文件上传和数据查询。用户按照指定格式上传文件后,服务器经过数据验证,将数据写入数据库,然后删除文件以节省服务器硬盘空间。数据查询界面单击查看详细信息,双击可进入编辑界面进行修改,确定修改后,上传服务器存入数据库。上传界面和查询界面分别如图6(b)和图6(c)所示。

图6 功能界面

6 系统测试及分析

对于Web系统,系统的吞吐量和平均响应时间是用户比较关心的性能指标。Web系统的并发性能需要进行压力测试,测试不同并发数下系统的吞吐量和平均响应时间来衡量。吞吐量一般通过服务器每秒能够处理的请求数(RPS)来衡量[14]。受实验室环境所限,以下是系统测试的硬件环境:

CPU:Intel(R)Core(TM)i3-3220 CPU@ 3.30GHz双核四线程;

操作系统:32位Win7操作系统;

内存:4.00GB;

硬盘:5 400转/min。

利用Apache Bench进行测试。测试方法:使用Apache Bench测试程序,以某一并发数持续向服务器发送10万个请求,测试在各个并发数下的服务器的平均吞吐量。实验数据如图7所示。

图7 系统平均吞吐量

由图7可知,随着并发数的增大,系统吞吐量由800下降到600,当并发数高于400后,吞吐量稳定在600左右。由此可见,服务器在高并发的情况下依然保持高水准运行,性能稳定。鉴于系统应用范围和受众人群,并发数远小于1 000,系统性能完全满足要求。

7 结论

通过iBeacon蓝牙、前端表现层、Node.js后台服务层、MongoDB数据存储层4个层次阐述了一个利用iBeacon定位技术的基于位置的信息推送系统的新方案。和传统的依赖于二维码识别技术的推送系统相比,其用户体验得到很大改善,信息推送更加智能化,提高了销售和选购的效率,是一次很有意义的尝试。信息推送系统的发展和完善是一个不断前进的过程,需要不断努力地探索、研究。信息推送系统的不断发展将会更好为人们服务。

[1]梁鹏.手机二维码业务研究[J].电信科学,2006,61(12):36-39.

[2]周娣.浅谈二维码的应用[J].山东轻工业学院学报:自然科学版,2011(2):62-64.

[3]张立斌,余彦培.手机室内定位的应用与服务[J].导航定位学报,2014,2(4):27-30.

[4]吴栋淦.基于iBeacon的智能导览系统的设计与实现[J].贵阳学院学报:自然科学版,2014,9(4):9-13.

[5]沈雷,方东根.基于iBeacon技术的安全性服装设计[J].毛纺科技,2015,43(2):48-52.

[6]龚健.基于Sencha Touch的移动书店设计与实现[J].现代计算机:专业版,2013,40(32):54-56.

[7]邵长远,高春玲,李睿.基于Sencha Touch的移动阅读器设计与实现[J].图书馆理论与实践,2013,45(3):85-88.

[8]梁雪青.基于Sencha Touch的企业移动门户系统的设计与实现[J].现代计算机:专业版,2014,41(13):77-80.

[9]张煜.一种使用Node.js构建的分布式数据流日志服务系统[J].计算机系统应用,2013,22(2):68-71.

[10]陈瑶.基于Node.js高并发web系统的研究与应用[D].成都:电子科技大学,2014.

[11]邹向阳,邹和辉,刘戎.基于物联网与三维可视化的弹药库实时监测系统[J].火力与指挥控制,2015,40(1):30-33.

[12]郑静静,叶焱,刘太君,等.基于Flex、Red5和MongoDB的视频直播、录制及存储系统设计[J].计算机应用,2014,34(2):589-592.

[13]红丸.MongoDB管理与开发精要[M].北京;机械工业出版社,2011.

[14]朱建兵.基于Node.JS高并发网络应用架构的研究与实现[D].北京:北京邮电大学,2014.

Design and Implementation of Information Push System Based on Node.js,Sencha Touch and IBeacon

YIN Yan-ning,LIU Tai-jun,YEYan,JIANGMing-yu
(School of Information Science and Engineering,Ningbo University,Ningbo 315211,China)

To address the complex operational processes,poor user experience and the shortage of intelligence of the traditional information push system used two-dimensional code technology,this paper presents an overall design scheme based on iBeacon positioning technology and cloud architecture. Relying on cloud architecture,web server Node.js and NoSQL database MongoDB are utilized to achieve the processing and storage of related data,the position detection is realized by iBeacon positioning technology,the combination of Sencha Touch framework and Objective-C is used for information display through the form of hybrid app.This paper elaborates the structure,function and the design project of the system,and provides new ideas and directions for the construction of new information push system.

iBeacon,Node.js,Sencha Touch,Objective-C,information push system

TP311.1;TP399

A

1002-0640(2016)08-0151-04

2015-06-13

2015-07-26

国家自然科学基金(61171040);浙江省自然科学基金(LQ 13F010007);浙江省科技厅基金资助项目(2014C31061)

尹延宁(1990-),男,山东莱芜人,硕士研究生。研究方向:W eb前端移动框架,W eb服务器。

猜你喜欢

蓝牙二维码界面
蓝牙音箱的直线之美
微重力下两相控温型储液器内气液界面仿真分析
二维码
小康二维码
国企党委前置研究的“四个界面”
一种可用于潮湿界面碳纤维加固配套用底胶的研究
扁平化设计在手机界面中的发展趋势
简单、易用,可玩性强Q AcousticsBT3蓝牙音箱
适合自己的才是最好的 德生(TECSUN) BT-50蓝牙耳机放大器
二维码让政务公开更直接