施瑩
摘 ? 要:物聯(lián)網(wǎng)信息系統(tǒng)是物聯(lián)網(wǎng)生態(tài)系統(tǒng)中的關(guān)鍵組成部分。文章介紹了物聯(lián)網(wǎng)信息系統(tǒng)的基本設(shè)計(jì)方案,并在此基礎(chǔ)上,介紹了基于Ajax技術(shù)的Web應(yīng)用程序模型。Ajax技術(shù)應(yīng)用于物聯(lián)網(wǎng)信息系統(tǒng)的實(shí)時(shí)信息展示及歷史數(shù)據(jù)查詢,具有無刷新頁面、響應(yīng)速度快等優(yōu)勢。這種異步通信方式,使用戶獲得了更自然流暢的體驗(yàn),實(shí)現(xiàn)了近似于桌面應(yīng)用程序的交互效果。這樣的系統(tǒng)可以負(fù)責(zé)收集從自然生態(tài)系統(tǒng)到建筑和工廠等各種設(shè)置的信息,從而應(yīng)用于物聯(lián)網(wǎng)的各個(gè)領(lǐng)域。
關(guān)鍵詞:物聯(lián)網(wǎng)信息系統(tǒng);Ajax;jQuery;對象表示法
物聯(lián)網(wǎng)是在互聯(lián)網(wǎng)基礎(chǔ)上架構(gòu)的關(guān)于各種物理產(chǎn)品信息服務(wù)的綜合,它主要由3大體系構(gòu)成:一是傳感網(wǎng)絡(luò)系統(tǒng),即通過現(xiàn)有的互聯(lián)網(wǎng)、廣電網(wǎng)絡(luò)、通信網(wǎng)絡(luò)等實(shí)現(xiàn)數(shù)據(jù)的傳輸與計(jì)算;二是業(yè)務(wù)應(yīng)用系統(tǒng),即輸入輸出控制終端;三是信息管理系統(tǒng),即關(guān)聯(lián)應(yīng)用服務(wù)軟件、門戶、管道、終端等各方面的管理。
1 ? ?物聯(lián)網(wǎng)信息系統(tǒng)
物聯(lián)網(wǎng)強(qiáng)調(diào)“物”的連接和通信[1]。對于終端來說,這種通信涉及傳感和執(zhí)行兩個(gè)重要方面。物聯(lián)網(wǎng)在不同行業(yè)的應(yīng)用,需要解決一些像網(wǎng)絡(luò)管理、設(shè)備管理、計(jì)費(fèi)管理、用戶管理等基本的運(yùn)營管理問題。物聯(lián)網(wǎng)信息系統(tǒng)是物聯(lián)網(wǎng)生態(tài)系統(tǒng)的關(guān)鍵組成部分,它負(fù)責(zé)分析從傳感器收集的數(shù)據(jù)并做出決定。同時(shí),完整的物聯(lián)網(wǎng)系統(tǒng)需要用戶界面,讓用戶與物聯(lián)網(wǎng)系統(tǒng)進(jìn)行交互。比如,物聯(lián)網(wǎng)的環(huán)境監(jiān)測應(yīng)用通常使用傳感器來幫助環(huán)境保護(hù),通過監(jiān)測空氣或水質(zhì)、大氣或土壤條件,來監(jiān)測實(shí)時(shí)的環(huán)境數(shù)據(jù)。以揚(yáng)塵監(jiān)測系統(tǒng)為例,分析獲取的濕度數(shù)據(jù),可得知是否需要打開灌溉系統(tǒng),同時(shí),還應(yīng)具有顯示濕度趨勢儀表板的Web應(yīng)用程序,并允許用戶手動打開或關(guān)閉灌溉系統(tǒng)。
因此,物聯(lián)網(wǎng)信息系統(tǒng)是連接物聯(lián)網(wǎng)系統(tǒng)中所有內(nèi)容的支持軟件,它連接硬件處理不同的通信協(xié)議,為設(shè)備和用戶提供安全的身份驗(yàn)證,收集、可視化和分析數(shù)據(jù),集中管理與控制,有助于數(shù)據(jù)通信、數(shù)據(jù)流管理、設(shè)備管理及應(yīng)用管理。
2 ? ?物聯(lián)網(wǎng)信息系統(tǒng)的整體設(shè)計(jì)
文章以揚(yáng)塵監(jiān)測系統(tǒng)為例,通過搭建私有云的方式,采用B/S架構(gòu)來設(shè)計(jì)物聯(lián)網(wǎng)信息系統(tǒng)。系統(tǒng)使用專用服務(wù)器構(gòu)建Web服務(wù)器和數(shù)據(jù)庫服務(wù)器。在數(shù)據(jù)庫服務(wù)器中創(chuàng)建數(shù)據(jù)庫與表;在Web服務(wù)器上創(chuàng)建查詢、報(bào)表生成等動態(tài)網(wǎng)頁,在瀏覽器上顯示監(jiān)控點(diǎn)的各類數(shù)據(jù)[2]。
揚(yáng)塵監(jiān)測系統(tǒng)的信息平臺需要完成各監(jiān)測點(diǎn)采集設(shè)備的遠(yuǎn)程控制及終端數(shù)據(jù)的實(shí)時(shí)顯示,包括:實(shí)時(shí)地圖信息、視頻監(jiān)控?cái)?shù)據(jù)、歷史數(shù)據(jù)查詢、報(bào)表統(tǒng)計(jì)情況、報(bào)警管理及遠(yuǎn)程控制等功能。根據(jù)需求可搭建基于PHP+MySQL的Web開發(fā)平臺。
超文本預(yù)處理器(Hypertext Preprocessor,PHP)目前仍然是開發(fā)Web應(yīng)用程序最理想的語言,它簡單易學(xué)、功能強(qiáng)大、成本低廉、安全性較高和運(yùn)行環(huán)境易于配置,且能夠用來制作企業(yè)級的Web應(yīng)用程序及動態(tài)網(wǎng)站。PHP之所以最適合與MySQL數(shù)據(jù)庫搭配使用,主要原因是PHP提供了大量的MySQL數(shù)據(jù)庫操作函數(shù),這些函數(shù)可以方便地實(shí)現(xiàn)訪問MySQL數(shù)據(jù)庫的各種需要,從而輕松實(shí)現(xiàn)Web應(yīng)用程序開發(fā)。
3 ? ?物聯(lián)網(wǎng)信息系統(tǒng)的軟件開發(fā)
3.1 ?Ajax技術(shù)
異步JavaScript及XML(Asynchronous JavaScript and XML,Ajax)技術(shù)已經(jīng)成為Web開發(fā)中應(yīng)用最廣泛的技術(shù)之一,不管采用什么樣的開發(fā)平臺,只要開發(fā)瀏覽器/服務(wù)器(Browser/Server,B/S)模式架構(gòu)的應(yīng)用,那么表現(xiàn)層就一定會使用Ajax技術(shù)。事實(shí)上,Ajax并不是一種新的編程語言,而是一種用于創(chuàng)建更好、更快以及交互性更強(qiáng)的Web應(yīng)用程序的技術(shù)?!袄霞夹g(shù),新技巧”是對Ajax恰如其分的描述。Ajax本質(zhì)就是使用JavaScript的XMLHttpRequest對象在瀏覽器和服務(wù)器之間交換數(shù)據(jù)。通過這個(gè)對象,JavaScript可以在不重載頁面的情況下與Web服務(wù)器交換數(shù)據(jù)。Ajax在瀏覽器與Web服務(wù)器之間使用異步數(shù)據(jù)傳輸(HTTP請求),這樣可使網(wǎng)頁從服務(wù)器請求少量的信息,而不是整個(gè)網(wǎng)頁。
以物聯(lián)網(wǎng)信息系統(tǒng)之揚(yáng)塵監(jiān)測系統(tǒng)為例,在氣象站密集、監(jiān)控點(diǎn)繁多的情況下,需實(shí)時(shí)觀測氣溫、濕度、風(fēng)向、風(fēng)速、降水量、氣壓、CO、PM2.5及PM10等10多項(xiàng)指標(biāo),監(jiān)控要求高,數(shù)據(jù)量大,切換頻繁,使用Ajax結(jié)合jQuery技術(shù)實(shí)現(xiàn)物聯(lián)網(wǎng)信息系統(tǒng)的Web開發(fā),具有無刷新頁面、響應(yīng)速度快、連續(xù)的用戶體驗(yàn)等優(yōu)勢,Ajax異步刷新能起到無可比擬的作用。
3.2 ?使用jQuery實(shí)現(xiàn)Ajax
通過原生JavaScript實(shí)現(xiàn)Ajax較為復(fù)雜,如果服務(wù)器返回復(fù)雜結(jié)構(gòu)的數(shù)據(jù),處理起來會比較繁瑣,此外還要考慮JavaScript的瀏覽器兼容性問題。因此,通過jQuery實(shí)現(xiàn)Ajax更加簡潔方便。
jQuery是一個(gè)JavaScript代碼庫(或JavaScript框架),它極大地簡化了JavaScript編程,優(yōu)化超文本標(biāo)記語言(HyperText Markup Language,HTML)文檔操作、事件處理、動畫設(shè)計(jì)和Ajax交互。jQuery對Ajax異步操作進(jìn)行了封裝,提供了多種Ajax請求的方式,從簡單到復(fù)雜,有更多選擇空間[3]。$.ajax()是jQuery對Ajax封裝的基礎(chǔ)方法,也是最常見的請求方法,它可以通過發(fā)送HTTP請求加載遠(yuǎn)程數(shù)據(jù),是jQuery最底層的Ajax實(shí)現(xiàn),具有很高的靈活性,通過這個(gè)方法可以完成異步通訊的所有功能。
以揚(yáng)塵監(jiān)測系統(tǒng)的歷史數(shù)據(jù)統(tǒng)計(jì)為例,應(yīng)對10余項(xiàng)觀測數(shù)據(jù),數(shù)據(jù)量龐大,通過$.ajax()方法就可以根據(jù)實(shí)際需求指定不同的返回類型,可使用XML,HTML或JSON格式返回,還可以指定beforeSend,error,success及complete這些事件發(fā)生時(shí)的回調(diào)函數(shù)。當(dāng)服務(wù)器沒有響應(yīng)時(shí),還可以使用參數(shù)來指定Ajax請求過期的時(shí)間。
3.3 ?處理JSON格式的響應(yīng)數(shù)據(jù)
對象表示法(JavaScript Object Notation,JSON)是一種輕量級的數(shù)據(jù)交換格式,它是基于JavaScript的一個(gè)子集,采用獨(dú)立于語言的文本格式,當(dāng)前備受青睞[4]。JSON 類似于實(shí)體類對象,通常用來在客戶端和服務(wù)器之間傳遞數(shù)據(jù)。在Ajax出現(xiàn)之初,客戶端腳本和服務(wù)器之間傳遞數(shù)據(jù)使用的是可擴(kuò)展標(biāo)記語言(Extensible Markup Language,XML),但XML難于解析,體積也比較大,現(xiàn)在有JSON將XML取而代之的趨勢。JSON具有結(jié)構(gòu)簡單、易于解析的優(yōu)點(diǎn)。
JSON的數(shù)據(jù)結(jié)構(gòu)與PHP的數(shù)組非常相似,在PHP5.2以上版本中,已有內(nèi)置函數(shù)用來編碼和解碼JSON數(shù)據(jù),其中json_encode方法常被用于將對象、數(shù)組、字符串轉(zhuǎn)換成JSON格式,PHP使用該方法對變量進(jìn)行JSON編碼,其輸出的就是一個(gè)JSON格式的字符串,適用于UTG-8的字符串?dāng)?shù)據(jù),可以直接在jQuery中使用,尤其適用于物聯(lián)網(wǎng)信息系統(tǒng)的大數(shù)據(jù)、高并發(fā)的數(shù)據(jù)傳輸模式[5]。
3.4 ?大數(shù)據(jù)量吞吐
通常在物聯(lián)網(wǎng)信息系統(tǒng)中,數(shù)據(jù)監(jiān)測和采集十分頻繁,歷史數(shù)據(jù)量龐大,所以用Ajax接收后端返回的JSON數(shù)據(jù),如果數(shù)據(jù)量特別大,處理高并發(fā),前端的響應(yīng)速度會變慢。可以通過多種方法解決這個(gè)問題:
首先,可以嘗試使用Web服務(wù)器的數(shù)據(jù)壓縮功能,主流的Web服務(wù)器Tomcat,Apache,Nginx都提供壓縮配置,主流的壓縮格式是Gzip。
其次,可嘗試減少服務(wù)器端返回的數(shù)據(jù)大小。針對每次請求,盡量只返回必要的數(shù)據(jù),那些該次請求沒有用到的數(shù)據(jù)就不返回,經(jīng)過整理后返回的JSON數(shù)據(jù)能明顯減小,前端響應(yīng)變快。
最后,還可將大數(shù)據(jù)量的數(shù)據(jù)進(jìn)行分割返回,例如需要返回100條數(shù)據(jù),可以通過10次請求來進(jìn)行返回?cái)?shù)據(jù)。每次返回的數(shù)據(jù)包括數(shù)量的總行數(shù)、返回當(dāng)前數(shù)據(jù)的位置、此次返回?cái)?shù)據(jù)的數(shù)量。通過將大數(shù)據(jù)量數(shù)據(jù)進(jìn)行切分、分批返回的方式,可以快速呈現(xiàn)數(shù)據(jù),讓物聯(lián)網(wǎng)信息系統(tǒng)的管理人員或?yàn)g覽者看到相應(yīng)的數(shù)據(jù),從而提升用戶體驗(yàn)。
4 ? ?結(jié)語
使用Ajax技術(shù)處理物聯(lián)網(wǎng)信息系統(tǒng)的龐大數(shù)據(jù),可實(shí)現(xiàn)對頁面局部的刷新、循環(huán)查詢數(shù)據(jù)庫信息、對硬件設(shè)備數(shù)據(jù)進(jìn)行實(shí)時(shí)信息動態(tài)刷新展示,從而實(shí)現(xiàn)物聯(lián)網(wǎng)信息系統(tǒng)24 h不間斷采集和分析數(shù)據(jù)的需求,實(shí)現(xiàn)連貫的用戶體驗(yàn),并有效減輕服務(wù)器和帶寬的負(fù)擔(dān)。
[參考文獻(xiàn)]
[1]尹育新,戎宏娜.淺談一種全新的網(wǎng)絡(luò)技術(shù)—物聯(lián)網(wǎng)[J].信息系統(tǒng)工程,2010(2):105-106.
[2]王祥濱,張寧,郝欣.基于物聯(lián)網(wǎng)的揚(yáng)塵在線監(jiān)測系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J].中國科技期刊數(shù)據(jù)庫科研,2015(11):3627-3630.
[3]劉紅坤.基于Ajax和PHP數(shù)據(jù)分頁的實(shí)現(xiàn)[J].計(jì)算機(jī)系統(tǒng)應(yīng)用,2012(2):218-220.
[4]郭慶燕,張敏,楊賢棟. JQuery Ajax異步處理JSON數(shù)據(jù)實(shí)現(xiàn)氣象圖片的顯示[J].計(jì)算機(jī)應(yīng)用與軟件,2016(6):20-22.
[5]李志秀,張軍,陳光,等.JQuery Ajax異步處理JSON數(shù)據(jù)在項(xiàng)目管理系統(tǒng)中的應(yīng)用[J].云南大學(xué)學(xué)報(bào)(自然科學(xué)版),2011(S2):247-250.
Abstract:The Internet of Things information system is a key component in the Internet of Things ecosystem. This paper introduces the basic design scheme of Internet of Things information system, and on this basis, introduces the Web application model based on Ajax technology. Ajax technology is applied to the real-time information display and historical data query of the Internet of Things information system, which has the advantages of no refresh fast response speed. This asynchronous communication model enables users to gain a more natural and smooth experience and achieve interactive effects similar to desktop applications. Such a system could be responsible for collecting information on various settings, from natural ecosystems to buildings and factories, thus applied to various fields of the Internet of Things.
Key words:Internet of Things information system; Ajax; jQuery; JavaScript Object Notation