曾恒 劉強 李翰聰 高沛 陳大山 汪小楨

【摘 要】文章分析了當(dāng)前高校校園的信息化建設(shè)情況及移動互聯(lián)網(wǎng)技術(shù)的發(fā)展現(xiàn)狀。基于高校校園師生的信息需求和新興的智能終端應(yīng)用技術(shù),充分考慮用戶體驗方式及網(wǎng)絡(luò)流量的最大化節(jié)約方式,設(shè)計并實現(xiàn)了一個基于移動互聯(lián)網(wǎng)技術(shù)的校園助手。文章對校園助手的相關(guān)功能進(jìn)行了分析,并對軟件實現(xiàn)涉及的PHP爬蟲、Bootstrap、SharedPreference存儲、Memcache、Redis消息隊列、Laravel模板等關(guān)鍵技術(shù)進(jìn)行了論述。校園助手采用B/S架構(gòu),并通過智能手機APP將歸集后的信息展示給用戶,為師生提供了高效、便捷的服務(wù)。
【關(guān)鍵詞】校園助手;移動互聯(lián)網(wǎng);智能終端
【中圖分類號】TP311.52 【文獻(xiàn)標(biāo)識碼】A 【文章編號】1674-0688(2017)03-0049-03
0 引言
在當(dāng)今信息時代,網(wǎng)絡(luò)技術(shù)發(fā)展迅速,校園信息化的程度越來越高,學(xué)校師生能夠使用的信息化資源也越來越多。但目前我國高校的校園數(shù)字化資源普遍存在信息比較分散的問題,各類信息分布在教務(wù)系統(tǒng)、圖書借閱系統(tǒng)、水電管理系統(tǒng)及院系QQ和微信群等。如何整合這些獨立的數(shù)字化資源,并通過統(tǒng)一的接入平臺為校園生活提供應(yīng)用服務(wù)已成為一個急需解決的問題。此外,目前高校師生中使用智能手機已經(jīng)非常普及,基于移動互聯(lián)網(wǎng)的應(yīng)用有了良好的生存環(huán)境。
1 系統(tǒng)分析
1.1 系統(tǒng)總體架構(gòu)
整個軟件系統(tǒng)采用B/S架構(gòu),基于Internet實現(xiàn)。主要是由服務(wù)器端、WEB客戶端及智能手機應(yīng)用APP客戶端(包括Android客戶端、ios客戶端)3個部分組成。服務(wù)器端由數(shù)據(jù)庫服務(wù)器集群和WEB服務(wù)器組成,數(shù)據(jù)庫服務(wù)器集群與各類應(yīng)用的數(shù)據(jù)庫建立聯(lián)系,并保持同步。WEB客戶端和智能手機客戶端向服務(wù)器端發(fā)送數(shù)據(jù)請求,WEB服務(wù)器端快速響應(yīng),與數(shù)據(jù)庫集群交互并獲取數(shù)據(jù)后,向客戶端返回請求數(shù)據(jù)。若用戶為首次使用該系統(tǒng)時,則需要輸入賬號密碼進(jìn)行認(rèn)證,系統(tǒng)將向?qū)W校數(shù)據(jù)中心請求認(rèn)證,認(rèn)證通過后,數(shù)據(jù)從服務(wù)器端緩存到本地,從而解決了部分服務(wù)器不穩(wěn)定帶來的困擾。同時,考慮到應(yīng)用的穩(wěn)定性,校園助手的數(shù)據(jù)庫采用MYSQL主從服務(wù)進(jìn)行負(fù)載均衡的方式讀取存儲數(shù)據(jù)。
1.2 功能需求分析
校園助手主要是方便高校師生對各類學(xué)習(xí)與生活信息進(jìn)行有效的收集與分析,從而更好地規(guī)劃自己的教學(xué)與學(xué)習(xí)生活。隨著網(wǎng)絡(luò)技術(shù)的快速發(fā)展及國家層面對社會信息化的總體規(guī)劃,高校各類信息化應(yīng)用如雨后春筍般出現(xiàn)——教務(wù)信息系統(tǒng)、考試系統(tǒng)、作業(yè)系統(tǒng)、后勤管理系統(tǒng)、財務(wù)管理系統(tǒng)、學(xué)籍管理系統(tǒng)等,而且各個系統(tǒng)的用戶名、密碼又不同,給學(xué)生、教師的生活帶來了諸多不便。因此,有需求開發(fā)一個方便高校師生在校內(nèi)學(xué)習(xí)和生活的移動應(yīng)用APP,其功能涵蓋高校信息化的方方面面,實現(xiàn)一個平臺訪問各類功能。
1.3 業(yè)務(wù)流程分析
校園助手的主要用戶分為教師和學(xué)生兩大類,為了方便管理,需要對用戶的應(yīng)用流程進(jìn)行優(yōu)化,不同類型的用戶采用統(tǒng)一入口。用戶的業(yè)務(wù)操作流程如下:啟動APP—APP登錄界面—認(rèn)證—APP主界面—選擇功能—獲取數(shù)據(jù)。
當(dāng)用戶選擇相應(yīng)的功能后,將調(diào)用應(yīng)用API接口,與服務(wù)器端進(jìn)行交互,通過服務(wù)器端獲取校內(nèi)各部門、各應(yīng)用的數(shù)據(jù)。APP用戶要獲取其他類型的數(shù)據(jù)時,只需要返回APP主界面選擇相應(yīng)的功能即可,用戶根本無法察覺數(shù)據(jù)的不同來源,能給用戶帶來良好的體驗。
2 系統(tǒng)設(shè)計與實現(xiàn)
2.1 系統(tǒng)主要功能設(shè)計
校園助手軟件功能模塊圖如圖1所示。根據(jù)師生需求的不斷變化,軟件功能也在不斷地更新中。軟件主要包括學(xué)校通知、課表信息查詢、考試信息、網(wǎng)上作業(yè)、電費查詢、二手市場等功能,軟件實現(xiàn)了各類信息的歸集,并且根據(jù)不同用戶的需求直接將相關(guān)信息推送給用戶,實現(xiàn)了個性化服務(wù),極大地提高了師生學(xué)習(xí)與工作的效率和質(zhì)量。
2.2 系統(tǒng)實現(xiàn)的關(guān)鍵技術(shù)
智能終端APP的客戶端采用廣為流行的Android平臺及蘋果ios平臺,同時還可以為學(xué)生中的開發(fā)愛好者提供接口。客戶端與服務(wù)端的交互采用可靠的https協(xié)議。交互的數(shù)據(jù)形式采用簡單并高效的Json封裝格式,方便了各個平臺的擴(kuò)展。
2.2.1 校內(nèi)信息獲取方式
對于校內(nèi)信息獲取,我們通過PHP爬蟲的方式模擬用戶請求后臺登錄部分信息系統(tǒng)進(jìn)行數(shù)據(jù)獲取,隨著用戶量的增加及部分信息系統(tǒng)存在不穩(wěn)定性,通過爬蟲獲取數(shù)據(jù)的方式已經(jīng)不能滿足業(yè)務(wù)需要。在獲得學(xué)校授權(quán)后,通過直接訪問相應(yīng)管理部門的數(shù)據(jù)庫,并對數(shù)據(jù)庫進(jìn)行緩存,后臺通過ResfulAPI提供數(shù)據(jù)接口,各個終端獲取數(shù)據(jù)通過該接口即可。一方面簡化了各個移動終端的開發(fā)難度,另一方面通過數(shù)據(jù)的緩存,解決了信息系統(tǒng)運行不穩(wěn)定的問題。
2.2.2 Bootstrap
通過對用戶的調(diào)研,軟件采用WEB和移動APP雙平臺的方式進(jìn)行服務(wù)。WEB端前端框架采用開源的框架bootstrap,該框架在業(yè)內(nèi)以良好的瀏覽器兼容性著稱,并能在PC端及移動端以各種分辨率良好地顯示。WEB端后端為保障服務(wù)質(zhì)量,我們對Bootstrap進(jìn)行優(yōu)化,采用內(nèi)、外網(wǎng)分離的模式,其中內(nèi)網(wǎng)服務(wù)器負(fù)責(zé)采集數(shù)據(jù)并用Mysql數(shù)據(jù)庫下二進(jìn)制流的方式同步到外網(wǎng)服務(wù)器,用戶對信息的獲取在外網(wǎng)服務(wù)器上進(jìn)行,此舉能更好地保證數(shù)據(jù)錄入的穩(wěn)定及獲取的高效。
2.2.3 SharedPreference存儲
校園助手采用SharedPreference來存儲一般數(shù)據(jù),例如APP打開的時間與次數(shù),而對于用戶的信息和成績信息等復(fù)雜的數(shù)據(jù),校園助手采用面向?qū)ο蟮乃枷雽⑦@些實體進(jìn)行序列化后進(jìn)行傳輸,具體表現(xiàn)為使用orm思想與sqlite數(shù)據(jù)庫進(jìn)行存儲,這樣能夠有效地保證數(shù)據(jù)訪問的準(zhǔn)確性和效率性。在網(wǎng)絡(luò)請求方面,校園助手使用線程池維護(hù)異步的Http請求,保證Ui主線程不被阻塞且數(shù)據(jù)能夠及時被獲取,獲取到信息后,校園助手使用Handler進(jìn)行Ui線程的更新,此舉可保證不會出現(xiàn)ANR。
2.2.4 Memcache緩存系統(tǒng)
Memcache是一個高性能的分布式的內(nèi)存對象緩存系統(tǒng),它能夠用來存儲各種格式的數(shù)據(jù),其工作流程如下:先檢查客戶端的請求數(shù)據(jù)是否在memcached中,如果請求的數(shù)據(jù)在,則直接返回請求數(shù)據(jù),不再對數(shù)據(jù)庫進(jìn)行任何操作;如果請求的數(shù)據(jù)不存在,則在數(shù)據(jù)庫中獲取相應(yīng)的數(shù)據(jù),把從數(shù)據(jù)庫中獲取的數(shù)據(jù)返回給客戶端,同時把數(shù)據(jù)緩存一份到memcached中;每次更新數(shù)據(jù)庫的同時,也要更新memcached中的數(shù)據(jù),保證數(shù)據(jù)的一致性;當(dāng)分配給memcached的內(nèi)存空間用完之后,會使用LRU策略與到期失效策略,失效數(shù)據(jù)首先被替換,然后再替換掉最近未使用的數(shù)據(jù)。
2.2.5 Redis消息隊列
經(jīng)測試,利用校園助手為所有用戶推送同一條消息時,會占用很大的內(nèi)存,考慮到活躍用戶,校園助手只處理登錄用戶,至于未登錄用戶,校園助手會推遲到用戶下次登錄時再處理。當(dāng)大量用戶同時登錄的時候,如果全部即時處理,則系統(tǒng)容易崩潰。因此,校園助手使用一個Redis隊列來保存待處理的登錄用戶,如此一來,雖然犧牲了一小部分的功能,但卻保證了系統(tǒng)的穩(wěn)定性。Redis的LIST數(shù)據(jù)類型便可以很自然地創(chuàng)建一個這樣的隊列。
2.2.6 Laravel+Angularjs+Bootstrap+AdminLTE
校園助手的后臺采用了Laravel Angular Admin,它是一個后臺模板,使用了Gulp工作流,并且支持 OAuth和JWT認(rèn)證,此外還可使用Dingo API實現(xiàn)了Restful API,還用到了Restangular和UI-Router;在權(quán)限控制方面,使用了Romanbican/Roles和Angular ACL。
2.2.7 移動應(yīng)用的相關(guān)技術(shù)
在移動終端,軟件采用了部分開源技術(shù),如課表、成績等加載動畫時的自定義view的方法;用ButterKnife框架和Retrofit2 OkHttp RxJava Gson構(gòu)建網(wǎng)絡(luò)加載、數(shù)據(jù)解析、異常統(tǒng)一處理;圖片加載方面,采用Picasso的圖像加載框架;處理APP閃退問題時,通過采用“騰訊”的x5內(nèi)核,使用LeakCanary解決了內(nèi)存泄露造成的閃退問題。這些開源技術(shù)的應(yīng)用,保證了服務(wù)的高可用性。
3 結(jié)論
在校園助手設(shè)計方案的實現(xiàn)過程中,我們遇到了種種困難,通過對移動互聯(lián)網(wǎng)技術(shù)的深入研究,最終成功地解決了問題。WEB應(yīng)用和手機APP在國內(nèi)各大軟件應(yīng)用市場上線,并在湖南工業(yè)大學(xué)成功投入應(yīng)用。目前,用戶已經(jīng)突破20 000人,涵蓋了學(xué)校1/3的師生。基于移動APP的特殊性,校園助手的版本不斷地迭代更新,使用的技術(shù)也不斷地突破進(jìn)步,功能逐步增加。軟件已經(jīng)基本滿足了師生的各種信息化服務(wù)需求,對高校數(shù)字化校園建設(shè)起到了很好的規(guī)范作用。后期,我們將考慮將軟件進(jìn)一步標(biāo)準(zhǔn)化并推向市場,從而為更多的高校師生提供便利的服務(wù)。
參 考 文 獻(xiàn)
[1]萬華明,孫芳芳,蔣雪明,等.文化特色街區(qū)網(wǎng)絡(luò)多導(dǎo)系統(tǒng)技術(shù)架構(gòu)研究[J].蘇州科技學(xué)院學(xué)報(自然科學(xué)版),2016(12).
[2]曾超.高校學(xué)生學(xué)習(xí)社交綜合平臺的設(shè)計與實現(xiàn)[D].北京:北京交通大學(xué),2015.
[3]李偉陽.基于開源技術(shù)的網(wǎng)絡(luò)互動社區(qū)平臺的技術(shù)實現(xiàn)[J].科技信息,2012(8).
[4]楊立身,曹志義.內(nèi)存緩存技術(shù)在門戶網(wǎng)站開發(fā)中的應(yīng)用研究[J].電腦知識與技術(shù),2008(9).
[5]肖宏.基于海量數(shù)據(jù)的存儲與實時事件發(fā)現(xiàn)系統(tǒng)的設(shè)計與實現(xiàn)[D].北京:北京郵電大學(xué),2010.
[6]王欣.跨平臺移動應(yīng)用研究與實現(xiàn)[D].北京:北京郵
電大學(xué),2012.
[7]胡世港,田櫻,王亮.高職院校移動學(xué)習(xí)考試平臺建設(shè)中的問題與對策[J].電腦知識與技術(shù),2016(23):95-
96,107.
[責(zé)任編輯:鐘聲賢]