李 瑩,鮑衛(wèi)華,李海英
(北京聯(lián)合大學(xué),北京 100101)
傳統(tǒng)的成績查詢是基于網(wǎng)站W(wǎng)eb 頁面的查詢,系統(tǒng)設(shè)計面向計算機應(yīng)用,在手機上查詢頁面顯示不友好,操作多有不便。近年來微信廣泛使用,2016 年騰訊公司正式推出“微信小程序”,小程序是一種不需要下載安裝就可以使用的應(yīng)用,用戶“掃一掃”或者“搜一搜”,就可打開應(yīng)用,不需要下載APP,體現(xiàn)了“用完即走”的理念,大大節(jié)省了手機內(nèi)存和用戶時間。微信為開發(fā)人員提供了一套開發(fā)工具,開發(fā)門檻低、周期短,用戶體驗接近傳統(tǒng)APP,目前網(wǎng)絡(luò)上有種類繁多的微信小程序,應(yīng)用場景涉及社交、旅游、教育、電商、餐飲、娛樂等生活和工作學(xué)習(xí)的方方面面。成績查詢微信小程序的開發(fā)和應(yīng)用,使得考生可以用手機查詢考試成績,界面簡潔易于操作,不僅大大方便了考生,而且獨立的數(shù)據(jù)庫、傳輸過程的數(shù)據(jù)加密和身份驗證保證了敏感數(shù)據(jù)的安全。
本軟件系統(tǒng)的開發(fā)分為客戶端開發(fā)和服務(wù)器端開發(fā),客戶端采用“微信開發(fā)者工具”,服務(wù)器端采用LAMP的框架結(jié)構(gòu),即Linux+Apache+MySQL+Php 的組合,由于這些開發(fā)工具都是開源的,這個組合是目前最為流行的開發(fā)工具組。Linux 作為操作系統(tǒng),Apache 作為Web 服務(wù)器,MySQL 作為數(shù)據(jù)庫服務(wù)器,Php 是用來編寫網(wǎng)頁的腳本語言。
圖1 系統(tǒng)示意圖
圖2 系統(tǒng)軟件架構(gòu)示意圖
在系統(tǒng)實現(xiàn)中,服務(wù)器端的操作系統(tǒng)租用“云服務(wù)商”提供的Ubuntu 云服務(wù)器,它是Linux 操作系統(tǒng)的一種,此平臺需要付費,但是比較便宜,免去了購買服務(wù)器、搭建網(wǎng)絡(luò)以及軟、硬件維護的高昂成本,而且可以直接在服務(wù)商的官網(wǎng)上隨時購買、隨時使用,項目部署方便快捷。由于小程序不支持直接的IP 地址查詢,需要把申請的ICP 備案域名與Ubuntu 服務(wù)器的IP 地址進行綁定,為小程序與Web 服務(wù)器進行數(shù)據(jù)交換做準(zhǔn)備。除此之外,還需要在Ubuntu 服務(wù)器上分別從官網(wǎng)下載和安裝Apache,Php 和MySQL,并進行配置,這三個軟件工具使用免費開源版本,具體使用版本如下:
操作系統(tǒng):Ubuntu 18.04.4,
Web 服務(wù):Apache2.4.29,
數(shù)據(jù)庫:MySQL 5.7.32-0ubuntu0.18.04.1
Web 頁面開發(fā)工具:PHP Version 7.2.24-0ubuntu0.1 8.04.7。
HTTP 是明文傳輸協(xié)議,客戶端和服務(wù)器端傳輸?shù)臄?shù)據(jù)被攻擊者攔截、竊取、篡改比較容易,身份也易被假冒者利用,為保證數(shù)據(jù)傳輸安全,提高業(yè)務(wù)系統(tǒng)的安全性,微信公眾平臺從2017 年起不再支持HTTP 方式調(diào)用。
SSL 證書(SSL Certificates)是HTTP 明文協(xié)議升級至HTTPS 加密協(xié)議必備的數(shù)字證書。它在客戶端(瀏覽器)與服務(wù)端(網(wǎng)站服務(wù)器)之間搭建一條安全的數(shù)據(jù)加密通道,對兩端之間交換的握手、數(shù)據(jù)等信息進行加密,確??蛻舳私?jīng)過身份驗證,網(wǎng)絡(luò)中傳輸?shù)臄?shù)據(jù)是經(jīng)過加密的密文。
本項目申請了“云服務(wù)商”提供的一年免費使用的TrustAsia TLS RSA CA,將證書文件、鏈文件和密鑰文件上傳到云端服務(wù)器上,并在Apache 中進行配置,加載ssl模塊,順利將域名訪問升級到https 訪問。
本系統(tǒng)中,考生通過智能手機打開小程序,輸入姓名和密碼等相關(guān)信息后,微信小程序向服務(wù)器端發(fā)出查詢數(shù)據(jù)的申請,網(wǎng)站網(wǎng)頁程序接收到數(shù)據(jù)申請后,從數(shù)據(jù)庫查詢數(shù)據(jù),并生成格式化數(shù)據(jù)返還給微信小程序,小程序接收到數(shù)據(jù)后,將數(shù)據(jù)渲染到用戶的手機界面上,用戶查詢成績完成。與查詢功能相對應(yīng),軟件系統(tǒng)的設(shè)計與開發(fā)也分為客戶端微信小程序、服務(wù)器端查詢設(shè)計、數(shù)據(jù)庫設(shè)計三個部分。
微信小程序的框架包含兩部分:View 視圖層和App Service 邏輯層。View 層用來渲染頁面結(jié)構(gòu),AppService層具有邏輯處理、數(shù)據(jù)請求、接口調(diào)用等功能。視圖層和邏輯層通過系統(tǒng)層的JSBridage 進行通信,邏輯層把數(shù)據(jù)變化通知到視圖層,觸發(fā)視圖層頁面更新,視圖層把觸發(fā)的事件通知到邏輯層進行業(yè)務(wù)處理。視圖層由WXML與WXSS 編寫,由組件來進行展示。邏輯層將數(shù)據(jù)處理后發(fā)送給視圖層,同時接受視圖層的事件反饋。邏輯層提供App小程序和各個頁面Page的入口,提供了豐富的API 來進行數(shù)據(jù)綁定、事件分發(fā)、生命周期管理、路由管理。
服務(wù)器端使用PHP 腳本語言編寫數(shù)據(jù)庫查詢網(wǎng)頁程序,并生成json 結(jié)構(gòu)的數(shù)據(jù),傳給客戶端小程序使用。Php 與MySQL 的接口采用Mysqli 驅(qū)動的面向過程函數(shù),如圖2。
本系統(tǒng)的功能只用一張成績信息表即可實現(xiàn),如表1 所示。
在MySQL 中建好表后,可以用工具將成績數(shù)據(jù)導(dǎo)入到數(shù)據(jù)庫相應(yīng)的表中,以備查詢。
表1 成績信息表(Score)
Web 服務(wù)器接收微信小程序傳遞過來的查詢參數(shù),將查詢參數(shù)作為查詢條件拼接到sql 語句中,進行查詢,查出來的數(shù)據(jù)用函數(shù)處理成json 數(shù)據(jù)格式,返回給小程序。
小程序接受考生用戶輸入的用戶名、準(zhǔn)考證號,并作為參數(shù)傳遞給調(diào)用的查詢網(wǎng)頁。
本系統(tǒng)設(shè)計的成績查詢微信小程序,部署在云端,考生的使用以及系統(tǒng)的開發(fā)、部署和維護簡單易行,為教務(wù)管理以及教務(wù)系統(tǒng)的擴展提供了新的思路,微信小程序和云服務(wù)與傳統(tǒng)的APP 應(yīng)用相比,具有無可比擬的優(yōu)勢和廣闊的應(yīng)用前景,值得進一步研究和探索。