蘇雪林, 夏凌云, 董國(guó)卿, 高富文
(中國(guó)石油大學(xué)(華東), 青島 266580)
基于微信的英語(yǔ)等級(jí)考試報(bào)名系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
蘇雪林, 夏凌云, 董國(guó)卿, 高富文
(中國(guó)石油大學(xué)(華東), 青島 266580)
隨著微信軟件的使用人數(shù)不斷上升,基于微信公眾平臺(tái),越來越多的微信開發(fā)者對(duì)微信進(jìn)行了二次開發(fā)?;谖⑿诺挠⒄Z(yǔ)等級(jí)考試報(bào)名系統(tǒng)的基本設(shè)計(jì)思想、頁(yè)面的UI設(shè)計(jì)和系統(tǒng)的開發(fā)原理以及業(yè)務(wù)邏輯、使用方法,開發(fā)時(shí)用到的編輯語(yǔ)言為C#,同時(shí)用到ASP.NET和ADO.NET技術(shù)。在一定程度上,總結(jié)了ASP.NET和ADO.NET在該系統(tǒng)下的優(yōu)勢(shì)所在,同時(shí)解決了原有數(shù)字石油大學(xué)英語(yǔ)等級(jí)考試報(bào)名系統(tǒng)的限制??偨Y(jié)了該系統(tǒng)的優(yōu)勢(shì)以及存在的問題。
微信公眾平臺(tái); 二次開發(fā); ASP.NET; ADO.NET; 英語(yǔ)等級(jí)考試報(bào)名系統(tǒng)
微信成為不少智能手機(jī)用戶的裝機(jī)必備軟件,現(xiàn)在已經(jīng)擁有了6億甚至更多的用戶[1]。人們?nèi)缃竦娜粘I罹c微信相關(guān),和朋友發(fā)語(yǔ)音聊天,發(fā)朋友圈,閱讀微信公眾號(hào)發(fā)布的文章。微信作為移動(dòng)互聯(lián)網(wǎng)的重要入口,在一開始,就以開放的姿態(tài)問世,這給微信愛好者契機(jī),可以供移動(dòng)應(yīng)用開發(fā)者和公眾賬號(hào)運(yùn)營(yíng)者使用的是微信公眾平臺(tái)的開放平臺(tái)。每個(gè)個(gè)體都有自己的品牌,大到企業(yè)、組織,小到媒體、個(gè)人,微信公眾平臺(tái)為大家提供服務(wù)的形式均是以輕應(yīng)用的形式。微信的開發(fā)者模式和眾多的開放接口,為微信愛好者提供了難得的機(jī)遇和廣闊的想象空間。
大學(xué)英語(yǔ)等級(jí)考試是國(guó)家教育考試,其目的是提供一個(gè)客觀、公正的評(píng)價(jià)學(xué)生的英語(yǔ)應(yīng)用能力,為大學(xué)英語(yǔ)教學(xué)服務(wù)[2]。針對(duì)大學(xué)英語(yǔ)等級(jí)考試的線上報(bào)名管理工作,我們積極探索一些現(xiàn)代化手段,這些手段是適用于現(xiàn)代化條件下學(xué)生學(xué)習(xí)活動(dòng)的,所以團(tuán)隊(duì)申報(bào)了學(xué)校《基于微信的等級(jí)考試報(bào)名系統(tǒng)》大學(xué)生創(chuàng)新創(chuàng)業(yè)訓(xùn)練項(xiàng)目。其目的是為了構(gòu)建效率高、服務(wù)好、誤差小、管理成本低的英語(yǔ)等級(jí)考試報(bào)名系統(tǒng)。
基于微信的英語(yǔ)等級(jí)考試報(bào)名系統(tǒng)的開發(fā)是一項(xiàng)艱巨的工作,系統(tǒng)的效率程度、服務(wù)質(zhì)量和成本以及用戶的滿意程度,在很大程度上依賴于系統(tǒng)開發(fā)方法的選擇,所以團(tuán)隊(duì)選擇了ASP.NET技術(shù)和ADO.NET技術(shù)進(jìn)行系統(tǒng)開發(fā)。ASP.NET和ADO.NET技術(shù)是真正能夠較全面地支持整個(gè)考試報(bào)名系統(tǒng)開發(fā)的程序開發(fā)技術(shù)。
微信是一款社交軟件。微信用戶可以通過其與好友進(jìn)行與短信、彩信等方式類似的聯(lián)系,但是形式又更加豐富[3]。騰訊公司之后新出了微信公眾平臺(tái),個(gè)人和企業(yè)可以申請(qǐng)一個(gè)微信公眾賬號(hào),并實(shí)現(xiàn)和特定群體的全方位溝通、互動(dòng)[4-5]。同時(shí)眾所周知,基于微信公眾平臺(tái),微信應(yīng)用號(hào)已經(jīng)進(jìn)行內(nèi)測(cè)。我們團(tuán)隊(duì)選擇了微信公眾平臺(tái)的服務(wù)號(hào)類型,模式使用的是服務(wù)號(hào)的開發(fā)者模式,通過公眾平臺(tái)提供的接口實(shí)現(xiàn)了自定義菜單、自動(dòng)回復(fù)、查詢各類教務(wù)信息以及英語(yǔ)等級(jí)考試報(bào)名等功能。
開發(fā)者可以使用公眾平臺(tái)的開放接口,開發(fā)屬于自己團(tuán)隊(duì)的小程序并部署在自己的服務(wù)器上,但前提是公眾賬號(hào)需要開啟開發(fā)者模式,實(shí)現(xiàn)特定功能,同時(shí)可以和用戶進(jìn)行消息交互。用戶在使用該微信公眾賬號(hào)的功能,需要先關(guān)注該賬號(hào),然后通過微信客戶端點(diǎn)擊開發(fā)者已經(jīng)實(shí)現(xiàn)的菜單或者向公眾賬號(hào)發(fā)送消息,微信后臺(tái)接收到通過網(wǎng)絡(luò)傳輸來的用戶消息后,會(huì)將其轉(zhuǎn)發(fā)團(tuán)隊(duì)自身公眾賬號(hào)服務(wù)器上,XML消息被服務(wù)器接收,服務(wù)器快速解析消息,并在程序和后臺(tái)數(shù)據(jù)庫(kù)中遍歷所需的消息,再次將信息封裝成XML消息,微信后臺(tái)接收XML消息,將返回的消息轉(zhuǎn)發(fā)到用戶微信移動(dòng)客戶端,用戶就接收到了公共賬號(hào)發(fā)送的消息[4]。
團(tuán)隊(duì)經(jīng)過調(diào)研和觀察,發(fā)現(xiàn)在當(dāng)代大學(xué)生中微信的使用頻率蒸蒸日上,所以學(xué)校相繼部署屬于自己的官方微信,發(fā)布各類消息,除了發(fā)布消息以及一些推文之外,還會(huì)通過開發(fā)模式開發(fā)日常教務(wù)應(yīng)用,例如成績(jī)查詢、課表查詢、校園一卡通余額查詢等,極大地便利了全校師生。正是基于便利廣大師生的思想,才有了開發(fā)基于微信的英語(yǔ)等級(jí)考試報(bào)名系統(tǒng)的想法。
在前文已經(jīng)提到,團(tuán)隊(duì)微信公眾賬號(hào)類型選擇了服務(wù)號(hào),服務(wù)號(hào)更有利于開發(fā)者去開發(fā)相應(yīng)的功能,使用開發(fā)者寫的Webservice代碼從對(duì)應(yīng)的教務(wù)處數(shù)據(jù)庫(kù)和四六級(jí)數(shù)據(jù)庫(kù)里調(diào)用相應(yīng)的學(xué)生個(gè)人信息以及之前所報(bào)名科目的成績(jī)數(shù)據(jù)再返回給Webservice,經(jīng)過處理與整合再將數(shù)據(jù)傳給微信后臺(tái),從而實(shí)現(xiàn)在手機(jī)微信端能一打開報(bào)名頁(yè)面即可看到已自動(dòng)生成好的報(bào)名表,里面涵蓋學(xué)生個(gè)人信息。用戶操作方式采用微信菜單與用戶向公眾平臺(tái)發(fā)送消息兩者相結(jié)合的方式,同時(shí)設(shè)計(jì)了回復(fù)關(guān)鍵字接收相應(yīng)的消息的方式。此外,微信端英語(yǔ)等級(jí)考試報(bào)名頁(yè)面排版與本校電腦端(數(shù)字石大)報(bào)名頁(yè)面排版基本一致,頁(yè)面適用于現(xiàn)在用戶所使用的智能手機(jī),排版一致能有效提高老用戶適應(yīng)新的報(bào)名系統(tǒng)的速度。
手機(jī)端的UI設(shè)計(jì)。如圖1、圖2、圖3所示。
4.1 ASP.NET技術(shù)的系統(tǒng)結(jié)構(gòu)簡(jiǎn)介
ASP.NET系統(tǒng)結(jié)構(gòu)是一個(gè)三層結(jié)構(gòu):用戶層、業(yè)務(wù)邏輯層和數(shù)據(jù)層[6]。用戶層負(fù)責(zé)與用戶交互,作用類似于一個(gè)中間人,除了接收用戶的輸入數(shù)據(jù)同時(shí)還將服務(wù)器傳來的數(shù)據(jù)反饋給用戶。業(yè)務(wù)邏輯層也稱為領(lǐng)域?qū)樱窍到y(tǒng)架構(gòu)體現(xiàn)核心價(jià)值的部分,負(fù)責(zé)接收瀏覽器傳來的請(qǐng)求同時(shí)將接收到的請(qǐng)求傳給數(shù)據(jù)層,之后將請(qǐng)求的處理結(jié)果返回給之前的瀏覽器。Web表單是向客戶呈現(xiàn)數(shù)據(jù)和信息的基礎(chǔ),也是響應(yīng)客戶信息和處理數(shù)據(jù)的基礎(chǔ)。團(tuán)隊(duì)開發(fā)的英語(yǔ)等級(jí)考試報(bào)名系統(tǒng)結(jié)構(gòu)正是采用了ASP.NET系統(tǒng)結(jié)構(gòu)。
圖1 報(bào)名首頁(yè)
圖2 選擇報(bào)名語(yǔ)種級(jí)別
圖3 報(bào)名須知
4.2 ADO.NET訪問數(shù)據(jù)原理
ADO.NET是.NET框架的組成部分,稱之為數(shù)據(jù)訪問接口。ADO.NET提供與數(shù)據(jù)源進(jìn)行交互的公共方法,允許與不同的數(shù)據(jù)源交流[6]。在實(shí)際操作中,無論采用哪種數(shù)據(jù)提供程序,ADO.NET都會(huì)實(shí)現(xiàn)以下5種對(duì)象,分別為:Connection對(duì)象,負(fù)責(zé)建立與所需數(shù)據(jù)源的連接工作;Command對(duì)象,大部分時(shí)候是利用INSERT、DELETE、UPDATE命令對(duì)數(shù)據(jù)庫(kù)進(jìn)行操作;DataReader對(duì)象,從數(shù)據(jù)庫(kù)中讀取只進(jìn)的數(shù)據(jù)流,并且數(shù)據(jù)流屬性為只讀;DataSet對(duì)象,將其稱之為ADO.NET的中心概念,可以把DataSet當(dāng)成內(nèi)存中的數(shù)據(jù)庫(kù),是不依賴于數(shù)據(jù)庫(kù)的獨(dú)立數(shù)據(jù)集合[6];DataAdapter對(duì)象,是 DataSet和 SQL Server之間的橋接器。
需要從數(shù)據(jù)源中讀取數(shù)據(jù)時(shí),ADO.NET應(yīng)用程序首先要?jiǎng)?chuàng)建連接對(duì)象。以上所述對(duì)象可實(shí)現(xiàn)數(shù)據(jù)訪問基本操作。需要特別說明DataSet對(duì)象采用了斷開連接方式的數(shù)據(jù)結(jié)構(gòu)[6],當(dāng)瀏覽器向Web服務(wù)器請(qǐng)求網(wǎng)頁(yè)時(shí),服務(wù)器處理這個(gè)請(qǐng)求,在連接被斷開之前,服務(wù)器會(huì)將所請(qǐng)求的網(wǎng)頁(yè)發(fā)送給瀏覽器,連接斷開后,一直等待,直到瀏覽器發(fā)出發(fā)出下一個(gè)請(qǐng)求。
4.3 系統(tǒng)業(yè)務(wù)邏輯
4.3.1 用戶得到報(bào)名鏈接
用戶向服務(wù)號(hào)發(fā)送“等級(jí)考試報(bào)名”或者點(diǎn)擊開始設(shè)定好的自定義菜單,微信服務(wù)器收到用戶的請(qǐng)求,微信服務(wù)器利用之前已綁定過的學(xué)號(hào),和時(shí)間戳、自定義的密碼,進(jìn)行MD5加密,微信服務(wù)器再將請(qǐng)求發(fā)給微信開發(fā)者自己的服務(wù)器(原理圖中為i石大服務(wù)器),i石大服務(wù)器生成請(qǐng)求鏈接,返回給微信服務(wù)器,微信服務(wù)器再返回給用戶微信客戶端。
4.3.2 生成報(bào)名表
用戶點(diǎn)擊鏈接訪問報(bào)名頁(yè)面,觸發(fā)四六級(jí)服務(wù)器自動(dòng)查詢四六級(jí)數(shù)據(jù)庫(kù)中用戶(根據(jù)學(xué)號(hào)判定)原有的報(bào)名信息,根據(jù)查詢到的信息自動(dòng)生成報(bào)名表,查詢的信息包括姓名、性別、學(xué)號(hào)、身份證號(hào)、學(xué)歷、學(xué)制、入學(xué)年份、年級(jí)、電話號(hào)碼、院系、專業(yè)、班級(jí)、四六級(jí)成績(jī),以上信息已包含報(bào)名表所有信息,電話號(hào)碼可編輯,若有錯(cuò)誤,可及時(shí)修改,同時(shí)服務(wù)器查詢可報(bào)名的科目,比如報(bào)考六級(jí)是在已通過四級(jí)考試的前提下方可報(bào)名。若該用戶還未在英語(yǔ)等級(jí)考試系統(tǒng)中報(bào)名,則從教務(wù)處的數(shù)據(jù)庫(kù)查詢用戶信息(根據(jù)學(xué)號(hào)),生成報(bào)名表,信息包括:姓名、性別、學(xué)號(hào)、身份證號(hào)、學(xué)歷、學(xué)制、入學(xué)年份、年級(jí)、院系、專業(yè)、班級(jí),電話號(hào)碼一欄初次報(bào)名,需自己填寫。服務(wù)器查詢可報(bào)名的科目,判斷是否擁有報(bào)名資格(大一不可報(bào),四級(jí)通過,才可報(bào)六級(jí)),生成報(bào)名頁(yè)面,返回給用戶。
4.3.3 基本信息與照片
用戶初次報(bào)名,需要上傳學(xué)籍照片,同時(shí)用戶也可修改基本信息(電話號(hào)碼等),確認(rèn)無誤后點(diǎn)擊確定,四六級(jí)服務(wù)器將信息存入數(shù)據(jù)庫(kù),該用戶下次報(bào)名,服務(wù)器直接查詢數(shù)據(jù)庫(kù)數(shù)據(jù)即可。
4.3.4 選擇報(bào)名科目以及繳費(fèi)
用戶選擇科目,點(diǎn)擊報(bào)名,將轉(zhuǎn)到一卡通繳費(fèi)頁(yè)面,在一卡通頁(yè)面繳費(fèi)后,若繳費(fèi)成功,一卡通將返回成功信息給四六級(jí)頁(yè)面,將報(bào)名信息存入數(shù)據(jù)庫(kù),否則將返回失敗信息,返回報(bào)名頁(yè)面。
數(shù)據(jù)庫(kù)連接采用ADO.NET連接數(shù)據(jù)庫(kù),并將用戶上傳的照片保存到服務(wù)器目錄下,用到了兩個(gè)數(shù)據(jù)庫(kù):四六級(jí)服務(wù)器的數(shù)據(jù)庫(kù),還要查詢學(xué)校教務(wù)處的數(shù)據(jù)庫(kù),基本原理,如圖4所示。
圖4 基本原理圖
5.1 系統(tǒng)的操作流程,如圖5所示。
圖5 功能結(jié)構(gòu)圖
5.2 系統(tǒng)的主要特點(diǎn)
(1) 操作簡(jiǎn)單,界面友好系統(tǒng)界面布局較友好,采用的是完全控件形式,使系統(tǒng)的頁(yè)面更加人性化,更易操作。用戶再向微信后臺(tái)發(fā)送請(qǐng)求時(shí),微信自動(dòng)獲取該用戶的學(xué)號(hào),再通過學(xué)號(hào)從數(shù)據(jù)庫(kù)查找該學(xué)生的相關(guān)個(gè)人信息數(shù)據(jù),將已有信息直接顯示在設(shè)定好的控件中,一目了然,不需要用戶逐個(gè)填寫用戶表欄目。
(2) 參數(shù)傳遞安全,性能可靠在開發(fā)ASP.NET網(wǎng)頁(yè)的過程中,會(huì)遇到多個(gè)頁(yè)面間需要共享同一組變量或者參數(shù)值的情況。ASP.NET技術(shù)提供了將這些參數(shù)值在網(wǎng)頁(yè)間進(jìn)行正常傳輸,實(shí)現(xiàn)了實(shí)量共享的解決方法,各種方法均有其自身的適用范圍和使用的局限性[7]。同時(shí)在各個(gè)網(wǎng)頁(yè)間采用MD5加密技術(shù),安全性更強(qiáng)。
(3) 系統(tǒng)的功能比較完善基于微信的等級(jí)考試報(bào)名系統(tǒng),完全采用了面向?qū)ο蟮拈_發(fā)理念。本系統(tǒng)除了英語(yǔ)等級(jí)考試報(bào)名以外,還有本校自習(xí)教室查詢、師生課表查詢、學(xué)生成績(jī)查詢和個(gè)人信息查詢等輔助性功能。
protect against XSRF attacks防止XSS跨站腳本攻擊(Cross Site Scripting)。
代碼如下:
protected void Page_Init(object sender, EventArgs)
{
// The code below helps to protect against XSRF attacks
var requestCookie = Request.Cookies[AntiXsrfTokenKey];
Guid requestCookieGuidValue;
if (requestCookie != null && Guid.TryParse(requestCookie.Value, out requestCookieGuidValue))
{
// Use the Anti-XSRF token from the cookie
_antiXsrfTokenValue = requestCookie.Value;
Page.ViewStateUserKey = _antiXsrfTokenValue;
}
Else
{
// Generate a new Anti-XSRF token and save to the cookie
_antiXsrfTokenValue = Guid.NewGuid().ToString("N");
Page.ViewStateUserKey = _antiXsrfTokenValue;
var response Cookie = new HttpCookie(AntiXsrfTokenKey)
{
HttpOnly = true,
Value = _antiXsrfTokenValue
};
if (FormsAuthentication.RequireSSL && Request.IsSecureConnection)
{
responseCookie.Secure = true;
}
Response.Cookies.Set(responseCookie);
}
Page.PreLoad += master_Page_PreLoad;
}
基于微信的英語(yǔ)等級(jí)考試報(bào)名系統(tǒng),突破了數(shù)字石大原有網(wǎng)頁(yè)版英語(yǔ)等級(jí)考試系統(tǒng)時(shí)間地點(diǎn)的局限。手機(jī)成為人們每時(shí)每刻必用的物品,微信移動(dòng)客戶端報(bào)名相對(duì)于網(wǎng)站報(bào)名有許多的便捷之處。手機(jī)版網(wǎng)頁(yè)采用現(xiàn)當(dāng)下流行的網(wǎng)頁(yè)編制工具.net,語(yǔ)言和工具易懂易學(xué),數(shù)據(jù)庫(kù)與服務(wù)器、客戶端的連接條理清晰。該系統(tǒng)經(jīng)過一段時(shí)間的反復(fù)調(diào)試、改進(jìn),在各方面基本達(dá)到了預(yù)期的目標(biāo),滿足了本校師生特定功能的需求。該系統(tǒng)目前在本校師生中取得好評(píng),但也存在不足的地方,系統(tǒng)人使用人數(shù)超過一定數(shù)額的時(shí)候,服務(wù)器會(huì)有故障隱患,所以團(tuán)隊(duì)成員正在做進(jìn)一步的研究,如何消除隱患。
[1] 閆小坤,周濤. 微信公眾平臺(tái)應(yīng)用開發(fā)從入門到精通[M].北京:清華大學(xué)出版社,2016, 1-2.
[2] 許霄雨,支希哲.對(duì)大學(xué)英語(yǔ)教學(xué)改革的解讀與分析[J].西北工業(yè)大學(xué)學(xué)報(bào)(社會(huì)科學(xué)版),2006(2):67-70.
[3] 唐燕,劉仁權(quán),白俊,等.WebService技術(shù)在高校微信開發(fā)中的應(yīng)用[J].信息技術(shù).2015(4): 44-47,50.
[4] 錢志勇.微信公眾平臺(tái)應(yīng)用開發(fā)實(shí)踐[M].北京:機(jī)械工業(yè)出版社,2013(9):98-99.
[5] 陳曉羅.基于微信公眾憑他的高校師生信息互動(dòng)平臺(tái)研究與實(shí)現(xiàn)[J].吉林省教育學(xué)院學(xué)報(bào)(中旬),2013(9):98-99.
[6] 申朝陽(yáng),宋顏浩.ASP.NET與相關(guān)數(shù)據(jù)庫(kù)技術(shù)[M].北京:中國(guó)水利水電出版社,2005.
[7] Marco Bellinaso.ASP.NET2.0WebSite程序設(shè)計(jì):問題-設(shè)計(jì)-方案[M].(2版).John Witey&Sons,2007.
Design and Implementation of College English Test Registration System Based on WeChat
Su Xuelin, Xia Lingyun, Dong Guoqing, Gao Fuwen
(China University of Petroleum, Shandong Qingdao, 266580, China)
With the rising of user number of WeChat, based on WeChat public platform, more and more WeChat developers do the further development for WeChat. This paper describes the basic design, UI design and system development principles and business logic, the use of method of the English grade examination registration system which is based on WeChat. The development of the editing language uses C #, and ASP.NET and ADO.NET technologies. To a certain extent, it sums up the advantages of ASP.NET and ADO.NET in the system, while addressing the original digital Stone English Grading Test Registration System restrictions. At the end of the paper, the advantages and problems of the system are summarized.
WeChat public platform; Further development; ASP.NET; ADO.NET; English test registration system
蘇雪林(1996-),女,四川廣元人,本科,大學(xué)生創(chuàng)新創(chuàng)業(yè)項(xiàng)目負(fù)責(zé)人。 夏凌云(1980-),男,四川瀘州人,碩士研究生,工程師,研究方向:互聯(lián)網(wǎng)技術(shù)、計(jì)算機(jī)軟硬件技術(shù)和物聯(lián)網(wǎng)技術(shù)。 董國(guó)卿(1966-),男,博士,高工,研究方向:數(shù)據(jù)庫(kù)應(yīng)用,云計(jì)算。 高富文(1995-),男,山東臨沂人,本科,研究方向:Web開發(fā),數(shù)據(jù)庫(kù)和云計(jì)算方向。
1007-757X(2017)05-0065-04
TP39
A
2016.10.21)