尹延寧,劉太君,葉 焱,江明玉
(寧波大學信息科學與工程學院,浙江 寧波 315211)
基于Node.js,Sencha Touch和iBeacon信息推送系統(tǒng)的設(shè)計與實現(xiàn)*
尹延寧,劉太君,葉焱,江明玉
(寧波大學信息科學與工程學院,浙江寧波315211)
為了解決利用二維碼技術(shù)實現(xiàn)的傳統(tǒng)信息推送系統(tǒng)操作流程復雜,用戶體驗不佳,智能化不足的問題,提出了一種基于iBeacon定位技術(shù)和云架構(gòu)的整體設(shè)計方案。依托于云架構(gòu),利用web服務(wù)器Node.js和NoSQL數(shù)據(jù)庫MongoDB進行相關(guān)數(shù)據(jù)的處理、存儲,利用基于iBeacon的定位技術(shù)實現(xiàn)位置檢測,前端采用HTML5框架Sencha Touch并結(jié)合Objective-C以hybrid app的形式實現(xiàn)信息展示。詳細闡述了系統(tǒng)的架構(gòu)、功能和設(shè)計方案,為建設(shè)新型細信息推送系統(tǒng)提供了新的思路與方向。
iBeacon,Node.js,Sencha Touch,Objective-C,信息推送
隨著社會的發(fā)展,生產(chǎn)力的提高,人們的消費能力顯著增長,琳瑯滿目的商品令人應(yīng)接不暇。如何讓消費者快速獲取有效信息,提高選擇效率,從而提高銷售額是各大銷售商的工作重點。依托于二維碼技術(shù)的傳統(tǒng)信息推送系統(tǒng)的出現(xiàn),一定程度上解決了此問題,對移動電子商務(wù)的發(fā)展具有重要意義[1]。利用二維碼技術(shù),消費者只需要利用智能手機等智能終端掃一掃即可獲得相關(guān)信息,幫助消費者進一步作出選擇。
然而二維碼技術(shù)需要首先下載識讀軟件到手機[2],之后消費者才能主動掃描二維碼,由于消費品數(shù)量眾多,這無疑增加了用戶負擔,且二維碼掃描操作過程繁瑣,降低了用戶體驗。二維碼技術(shù)無法跟蹤用戶位置變化,進而有針對性地實現(xiàn)對用戶的信息主動推送,降低了銷售商的信息推送效率。
基于iBeacon定位技術(shù)的信息推送系統(tǒng)利用iBeacon的定位技術(shù)[3],在前端實時獲取用戶位置信息,根據(jù)用戶位置向服務(wù)器主動獲取相關(guān)信息,以向用戶展示。用戶只需手持支持藍牙4.0的移動設(shè)備即可隨時接收信息,不再需要主動掃描二維碼等過程,操作流程簡化,用戶體驗獲得極大提升。
基于iBeacon定位技術(shù)的信息推送系統(tǒng)由iBeacon藍牙、前端表現(xiàn)層、Node.js后臺服務(wù)層、MongoDB數(shù)據(jù)存儲層4部分組成,下面分別進行闡述。
iBeacon是Apple公司智能移動設(shè)備OS(iOS7)上配備的新功能,本質(zhì)上是一個低功耗藍牙(BLE)設(shè)備[4]。iBeacon應(yīng)用于近距離的通信,持續(xù)向周圍空間發(fā)射信號,信號中包含自己特有的唯一識別ID:UUID,當有用戶手持移動設(shè)備靠近時,可以檢測到iBeacon發(fā)射的信號并提取其UUID,根據(jù)其UUID可以進行相關(guān)操作。如在商場安放iBeacon藍牙,即可使iPhone或iPad上顯示由服務(wù)器向顧客發(fā)送的優(yōu)惠信息。
iBeacon遵從藍牙4.0技術(shù)標準。該標準由SIG制定。藍牙4.0專門面向?qū)Τ杀竞湍芎囊蠖急容^高的無線方案。具有超低峰值、平均和待機模式功耗,一枚普通的紐扣電池可維持一年甚至數(shù)年運行[5]。通過對附近多個iBeacon所發(fā)射信號的強度進行比較,可以確定最近距離的iBeacon的UUID。本系統(tǒng)利用此原理實現(xiàn)基于位置的信息推送服務(wù)。
系統(tǒng)為每個商品配備一個iBeacon藍牙設(shè)備,商品信息與iBeacon識別號UUID進行一對一綁定。iBeacon藍牙芯片采用cc2541芯片。
前端表現(xiàn)層采用Objective-C和Sencha Touch框架相結(jié)合的方式進行hybrid app開發(fā)。
Objective-C是擴充C的面向?qū)ο蟮木幊陶Z言,主要用于采用OpenStep標準的系統(tǒng)如Mac OSX、GNUstep。其基本用途是為IOS操作系統(tǒng)編寫應(yīng)用程序,可運行于iPhone和iPad移動設(shè)備。針對IOS移動設(shè)備開發(fā)native app和hybrid app,Objective-C語言是必須選擇。
Sencha Touch框架是第一個支持HTML5的JavaScript移動端框架[6]。支持世界上主流的移動設(shè)備。Sencha Touch的整個庫文件很小,經(jīng)過壓縮和gzip后只有80 KB左右,同時還具有強大的數(shù)據(jù)集成功能。可以通過Ajax、JSONp、YQL等方式將數(shù)據(jù)綁定到List等組件或者寫入本地離線存儲[7]。可以實現(xiàn)一次開發(fā)部署,多處運行[8]。
圖1 MVC結(jié)構(gòu)圖
Sencha Touch框架采用MVC三層結(jié)構(gòu)模式進行開發(fā)。通過將業(yè)務(wù)邏輯、數(shù)據(jù)和界面顯示分離的方法進行代碼組織,降低了各個模塊間的耦合程度,方便了程序維護和管理,使代碼閱讀起來更加流暢。典型的MVC框架圖如圖1所示。
前端表現(xiàn)層作為交互和展示界面,考慮到使用人群的不同,分別針對管理人員和普通用戶進行開發(fā)。針對管理人員的前端功能框圖如圖2所示。
圖2 管理人員前端功能框圖
考慮到管理人員的應(yīng)用需求,針對管理人員實現(xiàn)位置檢測、用戶管理、信息展示、數(shù)據(jù)管理4大功能。以用戶權(quán)限對系統(tǒng)數(shù)據(jù)進行管理如數(shù)據(jù)上傳,修改,更新,查詢等。針對普通用戶即消費者,其主要應(yīng)用需求為根據(jù)位置獲取商品信息,故僅為其保留兩大功能:位置檢測和信息展示。
Node.js是致力于實時Web應(yīng)用的平臺,用于快速搭建并發(fā)性能高、響應(yīng)速度快的網(wǎng)絡(luò)應(yīng)用。Google Chrome V8引擎的優(yōu)化,使JavaScript語言的速度獲得極大提升,實現(xiàn)了后臺和前端編程語言上的統(tǒng)一[9]。與C語言相比,在性能上相差無幾。但使用JavaScript腳本語言的開發(fā)成本卻比C語言低得多。
Node.js具有以下優(yōu)點:①在單線程的情況下,仍能進行任務(wù)的并行處理;②使用Mudule模塊對不同的功能進行劃分,簡化開發(fā)過程;③采用事件驅(qū)動機制和異步編程風格實現(xiàn)網(wǎng)絡(luò)服務(wù)。其組織架構(gòu)如圖3所示。最頂層的是Node.js標準庫,其中封裝了Node.js提供的核心模塊,比如:http、https、fs等,實現(xiàn)了Node.js的應(yīng)用層接口。在Libeio和Libev的基礎(chǔ)上抽象出了Libuv層。針對不同的操作系統(tǒng)分別采用不同的機制來保證高性能的實現(xiàn)[10]。
圖3 Node.js組織架構(gòu)圖
為實現(xiàn)高并發(fā)性能,Node.js設(shè)計為單線程,異步I/O模式。極大地提高了系統(tǒng)的健壯性,并且不會有多線程開銷[11]。
作為開源平臺,Node.js得到了大量支持,有許多開源框架以供使用。系統(tǒng)使用Node.js的express框架搭建服務(wù)器,為各功能模塊提供運行環(huán)境。系統(tǒng)架構(gòu)圖如圖4所示。
圖4 系統(tǒng)架構(gòu)圖
MongoDB數(shù)據(jù)庫具有面向集合存儲,模式自由,支持云級別的伸縮性等特點。文件存儲格式為BSON,作為一種JSON的擴展,同JavaScript有良好的兼容性,原生支持Node.js[12]。
MongoDB提供了復制機制以保證多個數(shù)據(jù)庫之間的數(shù)據(jù)同步,用以實現(xiàn)數(shù)據(jù)庫的容災、備份、回復、負載均衡等功能。MongoDB的復制機制有兩種:Master-Slave和Replica Sets。Replica Sets較Master-Slave架構(gòu)功能更為強大,有故障自動切換和自動修復節(jié)點的能力,大大降低了單點故障發(fā)生的概率[13]。
本系統(tǒng)在一臺服務(wù)器上部署了3節(jié)點的Replica Sets。其中1個節(jié)點作為主庫,其他2個節(jié)點作為從庫。正常情況下,只有主庫能進行寫操作。當主庫出現(xiàn)故障時,通過MongoDB的選舉機制在從庫中選取一個實例作為主庫繼續(xù)運行,并進行故障節(jié)點的修復,從而實現(xiàn)容災能力。
5.1普通用戶功能設(shè)計與實現(xiàn)
針對普通用戶,實現(xiàn)位置檢測和信息展示功能。
(1)位置檢測。位置檢測的關(guān)鍵設(shè)備是iBeacon藍牙和IOS移動設(shè)備。利用IOS應(yīng)用程序開發(fā)語言O(shè)bjective-C進行開發(fā)。通過調(diào)用beacon、beacon-Manager、beaconRegion和positionDot屬性實現(xiàn)。positionDot可以自動確定iBeacon與移動終端相距的具體米數(shù),beaconRegion屬性負責檢測移動終端周圍30m左右的iBeacon的UUID。提取距移動終端距離最近的iBeacon的UUID作為信息請求參數(shù),向服務(wù)器發(fā)送請求。
(2)信息展示。信息展示界面由Sencha Touch框架實現(xiàn),與native app打包在一起。Node.js服務(wù)器在接收前端請求后,根據(jù)請求參數(shù)將響應(yīng)數(shù)據(jù)返回給前端。前端接收數(shù)據(jù)后,利用store數(shù)據(jù)存儲模塊實現(xiàn)數(shù)據(jù)的排序、篩選,利用List、dataview等數(shù)據(jù)展示組件以良好的方式展示給用戶。展示界面如圖5所示。
圖5 展示界面
5.2管理人員功能設(shè)計與實現(xiàn)
針對管理人員,除普通用戶所具備的位置檢測和信息展示功能外,還應(yīng)具備用戶管理、數(shù)據(jù)管理等功能。操作環(huán)境不再局限于移動設(shè)備。
(1)用戶管理。包括登錄和注冊功能。首先進入登錄界面,登錄成功后跳轉(zhuǎn)主界面,方可進行其他操作。若用戶未注冊,則轉(zhuǎn)到注冊界面注冊后登錄。注冊界面如圖6(a)所示。
(2)數(shù)據(jù)管理。包括文件上傳和數(shù)據(jù)查詢。用戶按照指定格式上傳文件后,服務(wù)器經(jīng)過數(shù)據(jù)驗證,將數(shù)據(jù)寫入數(shù)據(jù)庫,然后刪除文件以節(jié)省服務(wù)器硬盤空間。數(shù)據(jù)查詢界面單擊查看詳細信息,雙擊可進入編輯界面進行修改,確定修改后,上傳服務(wù)器存入數(shù)據(jù)庫。上傳界面和查詢界面分別如圖6(b)和圖6(c)所示。
圖6 功能界面
對于Web系統(tǒng),系統(tǒng)的吞吐量和平均響應(yīng)時間是用戶比較關(guān)心的性能指標。Web系統(tǒng)的并發(fā)性能需要進行壓力測試,測試不同并發(fā)數(shù)下系統(tǒng)的吞吐量和平均響應(yīng)時間來衡量。吞吐量一般通過服務(wù)器每秒能夠處理的請求數(shù)(RPS)來衡量[14]。受實驗室環(huán)境所限,以下是系統(tǒng)測試的硬件環(huán)境:
CPU:Intel(R)Core(TM)i3-3220 CPU@ 3.30GHz雙核四線程;
操作系統(tǒng):32位Win7操作系統(tǒng);
內(nèi)存:4.00GB;
硬盤:5 400轉(zhuǎn)/min。
利用Apache Bench進行測試。測試方法:使用Apache Bench測試程序,以某一并發(fā)數(shù)持續(xù)向服務(wù)器發(fā)送10萬個請求,測試在各個并發(fā)數(shù)下的服務(wù)器的平均吞吐量。實驗數(shù)據(jù)如圖7所示。
圖7 系統(tǒng)平均吞吐量
由圖7可知,隨著并發(fā)數(shù)的增大,系統(tǒng)吞吐量由800下降到600,當并發(fā)數(shù)高于400后,吞吐量穩(wěn)定在600左右。由此可見,服務(wù)器在高并發(fā)的情況下依然保持高水準運行,性能穩(wěn)定。鑒于系統(tǒng)應(yīng)用范圍和受眾人群,并發(fā)數(shù)遠小于1 000,系統(tǒng)性能完全滿足要求。
通過iBeacon藍牙、前端表現(xiàn)層、Node.js后臺服務(wù)層、MongoDB數(shù)據(jù)存儲層4個層次闡述了一個利用iBeacon定位技術(shù)的基于位置的信息推送系統(tǒng)的新方案。和傳統(tǒng)的依賴于二維碼識別技術(shù)的推送系統(tǒng)相比,其用戶體驗得到很大改善,信息推送更加智能化,提高了銷售和選購的效率,是一次很有意義的嘗試。信息推送系統(tǒng)的發(fā)展和完善是一個不斷前進的過程,需要不斷努力地探索、研究。信息推送系統(tǒng)的不斷發(fā)展將會更好為人們服務(wù)。
[1]梁鵬.手機二維碼業(yè)務(wù)研究[J].電信科學,2006,61(12):36-39.
[2]周娣.淺談二維碼的應(yīng)用[J].山東輕工業(yè)學院學報:自然科學版,2011(2):62-64.
[3]張立斌,余彥培.手機室內(nèi)定位的應(yīng)用與服務(wù)[J].導航定位學報,2014,2(4):27-30.
[4]吳棟淦.基于iBeacon的智能導覽系統(tǒng)的設(shè)計與實現(xiàn)[J].貴陽學院學報:自然科學版,2014,9(4):9-13.
[5]沈雷,方東根.基于iBeacon技術(shù)的安全性服裝設(shè)計[J].毛紡科技,2015,43(2):48-52.
[6]龔健.基于Sencha Touch的移動書店設(shè)計與實現(xiàn)[J].現(xiàn)代計算機:專業(yè)版,2013,40(32):54-56.
[7]邵長遠,高春玲,李睿.基于Sencha Touch的移動閱讀器設(shè)計與實現(xiàn)[J].圖書館理論與實踐,2013,45(3):85-88.
[8]梁雪青.基于Sencha Touch的企業(yè)移動門戶系統(tǒng)的設(shè)計與實現(xiàn)[J].現(xiàn)代計算機:專業(yè)版,2014,41(13):77-80.
[9]張煜.一種使用Node.js構(gòu)建的分布式數(shù)據(jù)流日志服務(wù)系統(tǒng)[J].計算機系統(tǒng)應(yīng)用,2013,22(2):68-71.
[10]陳瑤.基于Node.js高并發(fā)web系統(tǒng)的研究與應(yīng)用[D].成都:電子科技大學,2014.
[11]鄒向陽,鄒和輝,劉戎.基于物聯(lián)網(wǎng)與三維可視化的彈藥庫實時監(jiān)測系統(tǒng)[J].火力與指揮控制,2015,40(1):30-33.
[12]鄭靜靜,葉焱,劉太君,等.基于Flex、Red5和MongoDB的視頻直播、錄制及存儲系統(tǒng)設(shè)計[J].計算機應(yīng)用,2014,34(2):589-592.
[13]紅丸.MongoDB管理與開發(fā)精要[M].北京;機械工業(yè)出版社,2011.
[14]朱建兵.基于Node.JS高并發(fā)網(wǎng)絡(luò)應(yīng)用架構(gòu)的研究與實現(xiàn)[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服務(wù)器。