畢業(yè)論文——教學(xué)平臺(tái)中學(xué)生信息查詢的微信接口設(shè)計(jì)_第1頁(yè)
已閱讀1頁(yè),還剩29頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、<p>  教學(xué)平臺(tái)中學(xué)生信息查詢的微信接口設(shè)計(jì)</p><p>  WeChat interface design of teaching platform </p><p>  for students information query</p><p>  姓 名: </p>

2、<p>  學(xué) 號(hào): </p><p>  專 業(yè): 計(jì)算機(jī)科學(xué)與技術(shù)系 </p><p>  指導(dǎo) 教師: </p><p><b>  年 月</b></p><p>

3、;<b>  摘要I</b></p><p>  AbstractII</p><p><b>  第一章、引言1</b></p><p>  1.1 研究背景和意義1</p><p>  1.1.1 微信公共平臺(tái)當(dāng)前背景1</p><p>  1.1.2 微信公共

4、平臺(tái)應(yīng)用價(jià)值和意義1</p><p>  1.2 主要內(nèi)容、預(yù)期成果以及組織結(jié)構(gòu)2</p><p>  1.2.1 研究的主要內(nèi)容2</p><p>  1.2.2 研究的預(yù)期成果2</p><p>  1.2.3 論文組織結(jié)構(gòu)3</p><p>  第二章、相關(guān)理論和技術(shù)4</p><

5、p>  2.1 現(xiàn)有微信公共平臺(tái)技術(shù)4</p><p>  2.2 SQL Server數(shù)據(jù)庫(kù)技術(shù)4</p><p>  2.3 C#技術(shù)與asp.net5</p><p>  第三章、需求分析與程序設(shè)計(jì)框架7</p><p>  3.1 微信公共平臺(tái)用戶需求分析7</p><p>  3.2 微信公共

6、平臺(tái)接口程序設(shè)計(jì)框架7</p><p>  第四章、設(shè)計(jì)與實(shí)現(xiàn)10</p><p>  4.1 微信公共平臺(tái)接口設(shè)計(jì)10</p><p>  4.1.1 接口總體功能概述10</p><p>  4.1.2 接口功能設(shè)計(jì)分析10</p><p>  4.2 微信公共平臺(tái)接口實(shí)現(xiàn)11</p>&

7、lt;p>  4.2.1 微信公共平臺(tái)搭建11</p><p>  4.2.1.1 注冊(cè)微信公共平臺(tái)賬號(hào)11</p><p>  4.2.1.2 啟用開(kāi)發(fā)者模式11</p><p>  4.2.1.3 驗(yàn)證服務(wù)器地址有效性12</p><p>  4.2.2 數(shù)據(jù)庫(kù)連接12</p><p>  4.2.

8、3 具體功能模塊實(shí)現(xiàn)14</p><p>  4.2.3.1 ACCESS_TOKEN使用方式14</p><p>  4.2.3.2 用戶請(qǐng)求消息初處理與分配16</p><p>  4.2.3.3 用戶微信賬號(hào)綁定與解除綁定17</p><p>  4.2.3.4 用戶查詢資料18</p><p>  4

9、.2.3.5 教師用戶信息管理與群發(fā)消息20</p><p>  4.2.3.6 自定義菜單事件響應(yīng)21</p><p>  第五章、總結(jié)與進(jìn)一步工作24</p><p><b>  5.1 總結(jié)24</b></p><p>  5.2 存在不足與改進(jìn)方向24</p><p><b

10、>  參考文獻(xiàn)25</b></p><p><b>  致謝26</b></p><p><b>  摘要</b></p><p>  當(dāng)今智能手機(jī)普及,微信已成為信息傳播和交互的一個(gè)重要通道。微信公共平臺(tái)在交互的實(shí)時(shí)性,快捷性相比于網(wǎng)頁(yè)信息平臺(tái)和傳統(tǒng)管理系統(tǒng)有著無(wú)與倫比的優(yōu)勢(shì),同時(shí)要滿足用戶多樣化的

11、操作需求和信息的安全性上也給公共平臺(tái)的開(kāi)發(fā)帶來(lái)挑戰(zhàn)。本文設(shè)計(jì)并開(kāi)發(fā)一個(gè)面向高校師生的微信公共平臺(tái),結(jié)合SQL server數(shù)據(jù)庫(kù)技術(shù),能夠便捷地為師生提供實(shí)時(shí)的成績(jī),課表,作業(yè),通知等信息的查詢和更改操作,并在信息的隱私和安全性上給予保證。</p><p>  關(guān)鍵詞:校園信息化、微信公共平臺(tái)、移動(dòng)終端信息發(fā)布</p><p><b>  Abstract</b>&l

12、t;/p><p>  Nowadays, with the widely use of the smart mobile phone, WeChat has become an important channel for information

13、60;dissemination and interaction. WeChat public platform has the property of the real-time and fast interaction which web information&#

14、160;platforms and traditional management systems lose. However, how to hold a variety of users' demand and ensure the informat

15、ion security are the challenges that the public platform development is facing. In this paper, we design and develop a W

16、eChat public pl</p><p>  Keywords:campus information technology, Wechat Masses Platform, information publishing on mobile device</p><p><b>  第一章、引言</b></p><p>

17、  1.1 研究背景和意義</p><p>  1.1.1 微信公共平臺(tái)當(dāng)前背景</p><p>  近幾年來(lái),智能手機(jī)的出現(xiàn)改變了傳統(tǒng)信息發(fā)布和傳播的方式,成為人們?nèi)粘I钪心軌蚩焖俦憬莸孬@取信息,相互交流的重要工具。隨著智能手機(jī)的普及以及用戶的快速增長(zhǎng),傳統(tǒng)信息發(fā)布平臺(tái)也紛紛向手機(jī)端進(jìn)行遷移,以獲取更高的使用率和信息發(fā)布效率。然而信息發(fā)布平臺(tái)在不同的手機(jī)端的兼容性經(jīng)常令開(kāi)發(fā)者苦惱[1]

18、。</p><p>  圖1.1 微信用戶數(shù)增長(zhǎng)折線圖</p><p>  微信是騰訊公司于2011年開(kāi)發(fā)的一款免費(fèi)網(wǎng)絡(luò)社交軟件,其結(jié)合QQ及手機(jī)通訊錄建立好友關(guān)聯(lián)的營(yíng)銷方式在短時(shí)間內(nèi)迅速拉攏了千萬(wàn)甚至上億的注冊(cè)用戶。龐大的用戶基礎(chǔ)吸引了大量商家,媒體,企業(yè),高校等組織機(jī)構(gòu)的關(guān)注與加入。微信提供的公共平臺(tái)服務(wù)及開(kāi)發(fā)功能,更是構(gòu)建出一個(gè)線上線下能夠良好交互的自媒體平臺(tái)。12年8月起,華中科技

19、大學(xué)推出國(guó)內(nèi)首個(gè)高校官方公共平臺(tái)[2],此后公共平臺(tái)也受到越來(lái)越多的高校所青睞。</p><p>  作為一個(gè)新興的平臺(tái),與傳統(tǒng)的網(wǎng)站式信息發(fā)布平臺(tái)不同,微信公共平臺(tái)更加注重的是信息的及時(shí)更新,簡(jiǎn)潔的操作以及快速的交互。如何利用有限的交互方式保證傳統(tǒng)信息平臺(tái)的有效性,并不只是依靠預(yù)設(shè)內(nèi)容進(jìn)行有限的問(wèn)答式查詢。這為一個(gè)高效的平臺(tái)開(kāi)發(fā)帶來(lái)了挑戰(zhàn)。同時(shí)如何保證數(shù)據(jù)的實(shí)時(shí)更新與同步,以及如何保證用戶信息的隱私和安全性也是

20、高校公共平臺(tái)的開(kāi)發(fā)中需要注意的問(wèn)題。</p><p>  1.1.2 微信公共平臺(tái)應(yīng)用價(jià)值和意義</p><p>  微信公共平臺(tái)利用智能手機(jī)的優(yōu)勢(shì),使用戶可以隨時(shí)隨地對(duì)信息及時(shí)進(jìn)行實(shí)時(shí)查詢以及更新。相比于網(wǎng)頁(yè)信息發(fā)布平臺(tái)和傳統(tǒng)教學(xué)管理系統(tǒng),微信公共平臺(tái)操作更加簡(jiǎn)便,也方便實(shí)時(shí)交互。對(duì)于課表、作業(yè)、成績(jī)、通知等關(guān)鍵信息,教師和學(xué)生都可以通過(guò)簡(jiǎn)單的幾個(gè)關(guān)鍵字進(jìn)行隨時(shí)隨地地查詢。在智能手機(jī)普及

21、的現(xiàn)在,高校微信公共平臺(tái)有著無(wú)與倫比的優(yōu)勢(shì)以及廣闊地應(yīng)用前景。</p><p>  同時(shí),微信本身作為一個(gè)便捷而廣泛使用的社交工具,目前使用已經(jīng)非常普及。即使未使用的用戶也可以通過(guò)手機(jī)號(hào)或QQ號(hào)進(jìn)行快速注冊(cè)與綁定。相比于傳統(tǒng)教學(xué)管理系統(tǒng),省去了繁雜的注冊(cè)步驟;對(duì)比同類的管理系統(tǒng)APP,盡管微信公公平設(shè)計(jì)上需要結(jié)合微信本身的特點(diǎn),缺乏了一定的設(shè)計(jì)靈活性和專業(yè)性,然而在推廣性方面,一個(gè)限定了面向人群和內(nèi)容的專業(yè)化教學(xué)

22、用APP并不能達(dá)到良好的推廣效果,同時(shí)為了滿足多平臺(tái)手機(jī)的需要,專業(yè)APP在開(kāi)發(fā)代價(jià)上遠(yuǎn)遠(yuǎn)超過(guò)了利用微信公共平臺(tái)進(jìn)行開(kāi)發(fā)的方式。</p><p>  1.2 主要內(nèi)容、預(yù)期成果以及組織結(jié)構(gòu)</p><p>  1.2.1 研究的主要內(nèi)容</p><p>  論文將主要探討如何為教學(xué)平臺(tái)中的學(xué)生查詢系統(tǒng)設(shè)計(jì)微信公共平臺(tái)接口。用戶可以通過(guò)發(fā)送關(guān)鍵詞到微信公共平臺(tái),微信公

23、共平臺(tái)通過(guò)關(guān)鍵詞實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)的操作,然后將結(jié)果返回給用戶。在這種簡(jiǎn)單而基礎(chǔ)的交互方式之上,微信公共平臺(tái)的開(kāi)發(fā)要提供簡(jiǎn)潔但又全面的功能,包括查詢、修改、新增、刪除等,即要提供可以將用戶需求準(zhǔn)確而快速地進(jìn)行轉(zhuǎn)化的接口功能。</p><p>  在保證操作的及時(shí)和準(zhǔn)確性之上,用戶數(shù)據(jù)的隱私性和安全性也是需要關(guān)注的重點(diǎn)。用戶無(wú)論老師或者學(xué)生,都應(yīng)只能對(duì)自己的數(shù)據(jù)進(jìn)行查詢和更新,不能越權(quán)進(jìn)行操作;同時(shí)用戶的信息在傳輸?shù)倪^(guò)程

24、中,也需要保證信息的安全性,包括信息的完整性及不被竊取。</p><p>  1.2.2 研究的預(yù)期成果</p><p>  論文預(yù)期實(shí)現(xiàn)教師和學(xué)生兩種用戶組的區(qū)別,在進(jìn)行數(shù)據(jù)庫(kù)操作時(shí)分別實(shí)現(xiàn)不同的功能,包括查詢、修改、新增、刪除等,同時(shí)實(shí)現(xiàn)通過(guò)點(diǎn)擊自定義菜單實(shí)現(xiàn)具體的菜單功能。</p><p>  教師可以進(jìn)行資料查閱、教學(xué)信息發(fā)布、群發(fā)消息等操作;</p&

25、gt;<p>  學(xué)生可以進(jìn)行資料查閱、個(gè)人信息更新等操作。</p><p>  1.2.3 論文組織結(jié)構(gòu)</p><p><b>  文章組織結(jié)構(gòu)如下:</b></p><p>  引言,主要講述微信公共平臺(tái)的開(kāi)發(fā)背景和開(kāi)發(fā)意義;</p><p>  相關(guān)理論和技術(shù),主要講述在開(kāi)發(fā)過(guò)程中所用到的開(kāi)發(fā)工具和

26、開(kāi)發(fā)技術(shù);</p><p>  需求分析和程序設(shè)計(jì)框架,主要講述在開(kāi)發(fā)之前所做的包括用戶需求分析、程序設(shè)計(jì)流程等內(nèi)容的準(zhǔn)備工作;</p><p>  設(shè)計(jì)與實(shí)現(xiàn),主要講述了微信公共平臺(tái)接口的實(shí)現(xiàn)過(guò)程;</p><p>  結(jié)果展示,主要內(nèi)容為開(kāi)發(fā)完成的微信公共平臺(tái)接口的使用效果截圖;</p><p>  ,總結(jié)與進(jìn)一步工作,主要內(nèi)容為總結(jié)開(kāi)發(fā)

27、過(guò)程中的經(jīng)驗(yàn)和不足。</p><p>  第二章、相關(guān)理論和技術(shù)</p><p>  2.1 現(xiàn)有微信公共平臺(tái)技術(shù)</p><p>  微信公共平臺(tái)于2012年8月23日正式推出,任何組織和團(tuán)體都可以申請(qǐng)公共賬號(hào)[3],曾命名為“平臺(tái)媒體”和“媒體平臺(tái)”,在2013年微信升級(jí)的同時(shí),微信公共平臺(tái)也跟隨升級(jí),分為服務(wù)號(hào)和訂閱號(hào)兩種,兩種公共平臺(tái)賬號(hào)的權(quán)限和應(yīng)用范圍都有

28、所不同。其中服務(wù)號(hào)的主旨是為用戶提供服務(wù),僅為企業(yè)組織提供申請(qǐng);訂閱號(hào)的主旨則是為用戶發(fā)布信息,個(gè)人和企業(yè)組織都可以申請(qǐng)訂閱號(hào)。并且只有企業(yè)組織申請(qǐng)的公共賬號(hào)才可以進(jìn)行認(rèn)證。在實(shí)際使用上,服務(wù)號(hào)提供自定義菜單、少量群發(fā)消息等功能,訂閱號(hào)提供大量群發(fā)消息的權(quán)限。</p><p>  微信同樣提供開(kāi)發(fā)微信公共平臺(tái)接口接入第三方服務(wù)器或者新浪云的流程。第三方服務(wù)器或新浪云通過(guò)在微信公共平臺(tái)開(kāi)發(fā)者模式下提交網(wǎng)址和密鑰的方

29、式提出接入申請(qǐng),微信服務(wù)器訪問(wèn)第三方服務(wù)器網(wǎng)址并向服務(wù)器發(fā)送驗(yàn)證信息,第三方服務(wù)器將驗(yàn)證信息返回即可通過(guò)驗(yàn)證。通過(guò)驗(yàn)證后,微信公共平臺(tái)接口需要被調(diào)用時(shí),微信服務(wù)器就向第三方服務(wù)器網(wǎng)址發(fā)送封裝后的xml消息,微信公共平臺(tái)接口接收到消息后再進(jìn)行消息處理,返回的消息仍舊以xml格式發(fā)送給微信服務(wù)器。</p><p>  圖2.1 微信JS-SDK調(diào)用流程</p><p>  此外,微信還提供基于

30、微信內(nèi)的網(wǎng)頁(yè)開(kāi)發(fā)工具包JS-SDK,通過(guò)使用微信JS-SDK,網(wǎng)頁(yè)開(kāi)發(fā)者可借助微信高效地使用拍照、選圖、語(yǔ)音、位置等手機(jī)系統(tǒng)的能力,同時(shí)可以直接使用微信分享、掃一掃、卡券、支付等微信特有的能力。</p><p>  2.2 SQL Server數(shù)據(jù)庫(kù)技術(shù)</p><p>  在計(jì)算機(jī)的各種不同的應(yīng)用領(lǐng)域中,數(shù)據(jù)庫(kù)技術(shù)非常的重要,它產(chǎn)生于20世紀(jì)60年代末至70年代初,其主要目的是高效地存取

31、和管理海量的數(shù)據(jù)資源。數(shù)據(jù)庫(kù)技術(shù)主要研究如何存儲(chǔ),使用和管理數(shù)據(jù)?,F(xiàn)如今,數(shù)據(jù)庫(kù)技術(shù)已經(jīng)成為計(jì)算機(jī)發(fā)展中最不可或缺的方向之一。包括微信公共平臺(tái)接口在內(nèi)的涉及用戶信息等數(shù)據(jù)的程序開(kāi)發(fā)都要使用數(shù)據(jù)庫(kù)技術(shù)。SQL Server是微軟公司推出的關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng),具有使用方便、可伸縮性好、與相關(guān)軟件集成程度高等優(yōu)點(diǎn),采用單進(jìn)程,、多線程技術(shù) ,。 在核心層實(shí)現(xiàn)數(shù)據(jù)完整性控制, 具有很強(qiáng)的安全保密性, ,成為目前流行的數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)的開(kāi)發(fā)工具之

32、一。在與同為微軟公司開(kāi)發(fā)的C#/asp.net搭配時(shí)有著天然的優(yōu)勢(shì)。</p><p>  2.3 C#技術(shù)與asp.net</p><p>  C#是微軟公司發(fā)布的一種面向?qū)ο蟮母呒?jí)程序設(shè)計(jì)語(yǔ)言,它基于.net框架,不但繼承了C語(yǔ)言和C++的優(yōu)點(diǎn),還能以.net框架作為基礎(chǔ),實(shí)現(xiàn)快速開(kāi)發(fā),在進(jìn)行面向?qū)ο蟮木幊虝r(shí)有極大的便利性和優(yōu)越性。而asp.net是.NET Framework的一部分,

33、是微軟公司提供的的一種開(kāi)發(fā)Web應(yīng)用程序的類庫(kù),同時(shí)還能提供網(wǎng)頁(yè)的處理與擴(kuò)充、Web service框架等工作。asp.net在使用時(shí)簡(jiǎn)單易學(xué),使網(wǎng)站的大部分任務(wù)例如消息流動(dòng)、網(wǎng)站配置等都變得十分簡(jiǎn)單。它使用多種程序設(shè)計(jì)語(yǔ)言來(lái)實(shí)現(xiàn)三層體系結(jié)構(gòu)中的業(yè)務(wù)邏輯層設(shè)計(jì),即使用ASP. N ET動(dòng)態(tài)服務(wù)器頁(yè)面成表示層的設(shè)計(jì)[4]。</p><p>  圖2.2 asp.net運(yùn)行架構(gòu)圖</p><p&g

34、t;  . NET開(kāi)發(fā)平臺(tái)創(chuàng)建的應(yīng)用程序在通用語(yǔ)言運(yùn)行環(huán)境底層CLR(Common Language Runtime ,簡(jiǎn)稱CLR)的控制下運(yùn)行。它用來(lái)加載應(yīng)用程序,確認(rèn)它們可以沒(méi)有錯(cuò)誤地執(zhí)行,進(jìn)行相應(yīng)的安全許可驗(yàn)證,執(zhí)行應(yīng)用程序,然后在運(yùn)行完成后將它們清除。類庫(kù)集提供了使應(yīng)用程序可以讀寫(xiě)XML數(shù)據(jù)、在因特網(wǎng)上通信、訪問(wèn)數(shù)據(jù)庫(kù)等類[5]。這些類都是實(shí)現(xiàn)微信公共平臺(tái)接口所必須的。</p><p>  第三章、需求分

35、析與程序設(shè)計(jì)框架</p><p>  3.1 微信公共平臺(tái)用戶需求分析</p><p>  高校教學(xué)用微信公共平臺(tái)作為學(xué)校教學(xué)輔助的一個(gè)載體,用戶主要是兩部分:一部分是使用公共平臺(tái)獲取教學(xué)信息的學(xué)生,一部分是使用公共平臺(tái)管理和發(fā)布教學(xué)信息的教師。對(duì)于兩種用戶而言,使用微信公共平臺(tái)主要的目的是實(shí)現(xiàn)教學(xué)信息,包括作業(yè)、成績(jī)、書(shū)籍、通知等的相互交流。因此,保證查看數(shù)據(jù)的流程快速暢通是微信公共平臺(tái)

36、的關(guān)鍵之處。而微信公共平臺(tái)自身的優(yōu)點(diǎn)是操作簡(jiǎn)單,可以隨時(shí)隨地使用,比起登陸網(wǎng)頁(yè)版數(shù)據(jù)庫(kù)或者短信通知等方式成本更低,速度更快。因此,保證微信公共平臺(tái)的簡(jiǎn)單、快捷也是不容忽視的一個(gè)方面。</p><p>  圖3.1 用戶需求分析圖</p><p>  對(duì)于學(xué)生用戶而言,使用微信公共平臺(tái)查閱的信息繁多,包括平時(shí)作業(yè),課程成績(jī)、參考書(shū)籍等,同時(shí),因?yàn)椴煌瑢W(xué)生選擇的課程可能不同,所以要保證學(xué)生用戶

37、查詢到的信息既沒(méi)有多余重復(fù),也沒(méi)有錯(cuò)誤遺漏;同時(shí),學(xué)生用戶也應(yīng)該能夠修改自己的個(gè)人信息,保證能夠及時(shí)準(zhǔn)確的更新個(gè)人信息;最后學(xué)生用戶也要能夠及時(shí)接收到教師用戶發(fā)送的群消息。</p><p>  對(duì)于教師用戶而言,使用微信公共平臺(tái)管理的課程信息與學(xué)生信息僅限于自己所負(fù)責(zé)的科目,因此要保證教師用戶能夠自由操作自己負(fù)責(zé)的科目信息,無(wú)法操作不屬于自己的科目。此外,教師用戶對(duì)于群發(fā)消息的功能需求也很大,所以也要保證教師用戶

38、能夠簡(jiǎn)單迅速的發(fā)送群消息。</p><p>  3.2 微信公共平臺(tái)接口程序設(shè)計(jì)框架</p><p>  微信公共平臺(tái)接口的設(shè)計(jì)要根據(jù)微信公共平臺(tái)的消息處理原理來(lái)設(shè)計(jì)。騰訊公司在微信開(kāi)發(fā)上提供了通用的數(shù)據(jù)規(guī)范和驗(yàn)證流程,對(duì)于自定義接口的開(kāi)發(fā)者來(lái)說(shuō),不需要花費(fèi)太多精力,只需要遵循對(duì)接規(guī)范就可以跟微信服務(wù)器實(shí)現(xiàn)信息交互,從而可以將開(kāi)發(fā)重點(diǎn)集中在自定義接口的功能實(shí)現(xiàn)上。</p>&

39、lt;p>  微信公共平臺(tái)的消息處理包括用戶終端、微信服務(wù)器、公共平臺(tái)三個(gè)模塊,由用戶終端(手機(jī)或者平板等設(shè)備上的app)向微信服務(wù)器發(fā)起請(qǐng)求,然后微信服務(wù)器將請(qǐng)求轉(zhuǎn)發(fā)給公共平臺(tái),公共平臺(tái)接收到消息后將消息傳遞到自定義接口對(duì)用戶的請(qǐng)求進(jìn)行分析處理,處理之后將結(jié)果以同樣的消息格式返回給服務(wù)器,服務(wù)器再將消息轉(zhuǎn)發(fā)給用戶終端。</p><p>  圖3.2 微信公共平臺(tái)信息流程圖</p><p

40、>  在整個(gè)消息處理過(guò)程中所使用的協(xié)議為http[6],消息在模塊之間轉(zhuǎn)發(fā)的格式為xml。微信消息的xml格式樣例(文本)如下:</p><p><b>  <xml> </b></p><p>  <ToUserName><![CDATA[toUserName]]></ToUserName> </p>

41、<p>  <FromUserName><![CDATA[fromUserName]]></FromUserName> </p><p>  <CreateTime>1338841560</CreateTime> </p><p>  <MsgType><![CDATA[text]]><

42、/MsgType> </p><p>  <Content><![CDATA[微信文本消息]]></Content> </p><p>  <MsgId>1234567890123456</MsgId></p><p><b>  </xml></b></p&g

43、t;<p>  其中,ToUserName字段記錄的是接收方的微信號(hào),F(xiàn)romUserName字段記錄的是發(fā)送方的微信號(hào);CreatTime字段記錄的是這條微信消息的創(chuàng)建時(shí)間;MsgType字段記錄的是微信消息的格式,例如text(文本)、image(圖片)、link(超鏈接)等等;Content字段記錄的則是文本消息的主體內(nèi)容;MsgId字段記錄的是消息id。</p><p>  當(dāng)接口接收到xm

44、l信息并且通過(guò)ACCESS_TOKEN驗(yàn)證之后,將會(huì)解析xml,獲取信息里包含的內(nèi)容(Content字段),從而進(jìn)行進(jìn)一步操作。</p><p>  微信公共平臺(tái)要實(shí)現(xiàn)自己的功能需求,自定義接口的消息處理是主要部分。符合上面所說(shuō)的數(shù)據(jù)模式和流程規(guī)范的接口才能夠正常的使用,所以在開(kāi)發(fā)自定義接口的時(shí)候,要嚴(yán)格遵循微信提供的規(guī)范。自定義接口的消息處理模式如下:</p><p>  請(qǐng)求接口。用戶

45、發(fā)送消息給微信服務(wù)器,微信服務(wù)器將xml格式的消息以post方式發(fā)送給公共平臺(tái)接口,攜帶發(fā)送者信息、接收者信息、消息類型、消息內(nèi)容等幾個(gè)方面,接口接收到消息,并反饋給微信服務(wù)器;</p><p>  業(yè)務(wù)分析。微信公共平臺(tái)接口根據(jù)從服務(wù)器端接收到的消息類型和消息內(nèi)容的不同,分析消息所請(qǐng)求的服務(wù)類型,然后將獲取到的消息內(nèi)容轉(zhuǎn)至自定義接口中不同的處理函數(shù)中進(jìn)行具體的業(yè)務(wù)處理;</p><p>

46、  業(yè)務(wù)處理。自定義接口對(duì)具體的內(nèi)容進(jìn)行處理,通過(guò)包括連接數(shù)據(jù)庫(kù)獲取數(shù)據(jù)庫(kù)信息、連接微信服務(wù)器獲取服務(wù)器信息等在內(nèi)的方法得到用戶需要的信息內(nèi)容,然后將反饋信息轉(zhuǎn)至發(fā)送接口;</p><p>  發(fā)送接口。將需要反饋給用戶的信息進(jìn)行處理和修飾,然后轉(zhuǎn)成符合格式的xml信息,發(fā)送到微信服務(wù)器。微信服務(wù)器接收之后根據(jù)xml信息中包含的接收用戶信息將內(nèi)容轉(zhuǎn)發(fā)給用戶。</p><p><b&g

47、t;  第四章、設(shè)計(jì)與實(shí)現(xiàn)</b></p><p>  4.1 微信公共平臺(tái)接口設(shè)計(jì)</p><p>  4.1.1 接口總體功能概述</p><p>  實(shí)現(xiàn)學(xué)生用戶與教師用戶的微信賬號(hào)綁定;</p><p>  實(shí)現(xiàn)學(xué)生用戶與教師用戶通過(guò)發(fā)送關(guān)鍵詞查詢數(shù)據(jù)庫(kù);</p><p>  實(shí)現(xiàn)學(xué)生用戶通過(guò)發(fā)送關(guān)

48、鍵詞修改個(gè)人信息;</p><p>  實(shí)現(xiàn)教師用戶通過(guò)發(fā)送關(guān)鍵詞更新數(shù)據(jù)庫(kù);</p><p>  實(shí)現(xiàn)教師用戶通過(guò)發(fā)送關(guān)鍵詞群發(fā)消息,并且獲得消息接收人數(shù)的反饋;</p><p>  實(shí)現(xiàn)點(diǎn)擊自定義菜單查看幫助和個(gè)人信息;</p><p>  實(shí)現(xiàn)點(diǎn)擊自定義菜單跳轉(zhuǎn)到其他網(wǎng)頁(yè)。</p><p>  4.1.2 接口功

49、能設(shè)計(jì)分析</p><p>  在設(shè)計(jì)具體的功能模塊之前,首先要設(shè)計(jì)幾個(gè)基本的操作模塊,其中包括消息處理模塊、數(shù)據(jù)庫(kù)連接模塊、消息發(fā)送模塊。這幾個(gè)基礎(chǔ)模塊設(shè)計(jì)完成后,在實(shí)現(xiàn)具體的功能模塊時(shí)就可以直接調(diào)用,極大地減少了邏輯復(fù)雜度,也加快了程序處理的速度。</p><p>  消息初處理模塊是為了將用戶發(fā)起的xml格式的請(qǐng)求轉(zhuǎn)換成可直接操作的對(duì)象實(shí)例,以供之后的接口功能實(shí)現(xiàn)處理。轉(zhuǎn)換為具體的對(duì)

50、象實(shí)例后,用戶發(fā)起的請(qǐng)求中所包含的元素全都轉(zhuǎn)換為對(duì)象實(shí)例的參數(shù),而利用面向?qū)ο蟪绦蛟O(shè)計(jì)中類的繼承的思想,不同格式的消息分別為繼承了同一個(gè)消息父類的子類,根據(jù)消息格式的不同包含不同的參數(shù),在程序模塊之間的調(diào)用和傳遞也會(huì)更加的方便。</p><p>  數(shù)據(jù)庫(kù)連接模塊是將連接數(shù)據(jù)庫(kù)返回?cái)?shù)據(jù)的過(guò)程封裝,使之后每次要連接數(shù)據(jù)庫(kù)的時(shí)候,都直接調(diào)用數(shù)據(jù)庫(kù)連接模塊即可。在數(shù)據(jù)庫(kù)連接模塊中封裝建立數(shù)據(jù)庫(kù)連接和執(zhí)行SQL語(yǔ)句的程序

51、代碼,最后將查詢得到的數(shù)據(jù)或者插入更新影響的行數(shù)返回,以供之后的功能實(shí)現(xiàn)。</p><p>  消息發(fā)送模塊是為了快速有效的將需要反饋給用戶的內(nèi)容轉(zhuǎn)換成符合微信數(shù)據(jù)規(guī)范的xml消息而設(shè)置。消息發(fā)送模塊中包含了文本消息發(fā)送、圖片消息發(fā)送、超鏈接消息發(fā)送等等多個(gè)子模塊,為的是適應(yīng)不同格式的數(shù)據(jù)規(guī)范。調(diào)用消息發(fā)送模塊時(shí),將必須的參數(shù)內(nèi)容傳遞到消息發(fā)送函數(shù),之后經(jīng)過(guò)處理將參數(shù)轉(zhuǎn)變?yōu)閤ml文件,再調(diào)用微信官方提供的消息傳遞

52、接口,將xml消息發(fā)送到微信服務(wù)器。</p><p>  在以上幾個(gè)基本模塊的基礎(chǔ)上,分別實(shí)現(xiàn)具體的功能模塊,即對(duì)消息初處理模塊傳遞過(guò)來(lái)的對(duì)象實(shí)例進(jìn)行判斷,根據(jù)關(guān)鍵詞確定用戶請(qǐng)求的功能,之后根據(jù)請(qǐng)求功能的不同,涉及數(shù)據(jù)庫(kù)操作時(shí)編寫(xiě)標(biāo)準(zhǔn)SQL語(yǔ)句,然后調(diào)用數(shù)據(jù)庫(kù)連接模塊,得到返回的數(shù)據(jù)后將數(shù)據(jù)處理成簡(jiǎn)單、清晰、用戶體驗(yàn)優(yōu)良的文本等格式的消息,然后交由消息發(fā)送模塊發(fā)送至微信服務(wù)器。</p><p&

53、gt;  4.2 微信公共平臺(tái)接口實(shí)現(xiàn)</p><p>  4.2.1 微信公共平臺(tái)搭建</p><p>  4.2.1.1 注冊(cè)微信公共平臺(tái)賬號(hào)</p><p>  搭建公共平臺(tái)一開(kāi)始要申請(qǐng)一個(gè)微信公共平臺(tái)的賬號(hào)。微信公共平臺(tái)的注冊(cè)網(wǎng)址是http://mp.weixin.com。具體注冊(cè)過(guò)程對(duì)照注冊(cè)網(wǎng)站上的介紹和自己的功能需求進(jìn)行,需要身份驗(yàn)證等其他工序。<

54、/p><p>  4.2.1.2 啟用開(kāi)發(fā)者模式</p><p>  微信公共平臺(tái)有編輯模式和開(kāi)發(fā)者模式兩種,要開(kāi)發(fā)自定義接口,就要開(kāi)啟開(kāi)發(fā)者模式。進(jìn)入開(kāi)發(fā)者模式之后要填寫(xiě)幾個(gè)必要配置,包括TOKEN和服務(wù)器地址(URL)和EncordingASEKey。</p><p>  TOKEN為驗(yàn)證接口安全性所用的數(shù)字簽名,可任意填寫(xiě);服務(wù)器地址即為處理微信消息和事件的接口地

55、址,C#&asp.net開(kāi)發(fā)即使用接口的default.aspx的服務(wù)器地址;EncordingASEKey是加密消息體所用的密鑰,可手動(dòng)填寫(xiě)或自動(dòng)生成。</p><p>  圖4.1 啟用開(kāi)發(fā)者模式</p><p>  4.2.1.3 驗(yàn)證服務(wù)器地址有效性</p><p>  首次提交信息時(shí),微信會(huì)驗(yàn)證提交的服務(wù)器地址的有效性,將發(fā)送GET請(qǐng)求到填寫(xiě)的服務(wù)

56、器地址上,請(qǐng)求中包含四個(gè)參數(shù):signature(微信加密簽名)、timestamp(時(shí)間戳)、nonce(隨機(jī)數(shù))、echostr(隨機(jī)字符串)。</p><p>  首先將token、timestamp、nonce三個(gè)參數(shù)進(jìn)行字典序排序,然后將三個(gè)參數(shù)字符串拼接成一個(gè)字符串進(jìn)行sha1加密,將獲得加密后的字符串可與signature對(duì)比,標(biāo)識(shí)該請(qǐng)求來(lái)源于微信,然后將echostr字符串使用Response.W

57、rite函數(shù)原樣返回,微信驗(yàn)證成功則代表接入成功。之后就進(jìn)行正式的接口開(kāi)發(fā)。</p><p>  4.2.2 數(shù)據(jù)庫(kù)連接</p><p>  C#連接SQL SERVER有多種方法,為了達(dá)到性能最優(yōu)的效果,要根據(jù)微信連接數(shù)據(jù)庫(kù)的特點(diǎn)來(lái)選擇。在微信公共平臺(tái)接口開(kāi)發(fā)中,進(jìn)行數(shù)據(jù)庫(kù)連接的特點(diǎn)有:建立的數(shù)據(jù)庫(kù)連接是一次性的,即此次讀取數(shù)據(jù)庫(kù)與下次讀取數(shù)據(jù)庫(kù)之間是完全獨(dú)立的,因此,建立一次數(shù)據(jù)庫(kù)連接

58、并且得到需要查詢的數(shù)據(jù)之后,即可立即關(guān)閉數(shù)據(jù)庫(kù)連接,不需要保存連接以供下一次操作;因?yàn)橛脩糁荒軌虿樵兓蛘吒淖约旱臄?shù)據(jù),所以無(wú)論是數(shù)據(jù)庫(kù)的讀取還是寫(xiě)入,涉及的數(shù)據(jù)量都很小,因?yàn)閷?duì)數(shù)據(jù)的操作比較小,多以簡(jiǎn)單的查詢、更新為主,不需要犧牲內(nèi)存換取更快的連接速度;微信公共平臺(tái)接口運(yùn)行在服務(wù)器端,不涉及大數(shù)據(jù)操作時(shí),應(yīng)以運(yùn)行速度為第一優(yōu)先,就用戶體驗(yàn)而言,使用微信公共平臺(tái)進(jìn)行查詢等操作時(shí),查詢速度為第一要?jiǎng)?wù)。</p><p&g

59、t;  因?yàn)橐陨蠋讉€(gè)特點(diǎn),選擇連接式連接數(shù)據(jù)庫(kù),即使用SqlConnection類建立數(shù)據(jù)庫(kù)連接,然后使用SqlCommand類執(zhí)行sql命令,將執(zhí)行命令后得到的結(jié)果(查詢得到的數(shù)據(jù)或更新影響的行數(shù))返回給其他類,隨后關(guān)閉數(shù)據(jù)庫(kù)連接。這種方法的好處是使用標(biāo)準(zhǔn)化sql語(yǔ)句,對(duì)內(nèi)存的占用較小,雖然每進(jìn)行一次數(shù)據(jù)庫(kù)連接就要占用帶寬,但是因?yàn)榈玫綌?shù)據(jù)之后馬上關(guān)閉連接,所以實(shí)際上并不會(huì)造成資源浪費(fèi)。而另一種使用SQLAdapter類的連接方法,基

60、于緩存技術(shù),即將數(shù)據(jù)操作在內(nèi)存中完成之后提交到數(shù)據(jù)庫(kù),犧牲內(nèi)存換取連接速度,在大數(shù)據(jù)操作時(shí)比較合適,微信公共平臺(tái)接口這種操作小數(shù)據(jù)量的Web應(yīng)用,還是SqlConnection類加SqlCommand類的連接方式更合適。</p><p><b>  示例代碼如下:</b></p><p>  public SqlDataReader GetDataReader(str

61、ing query)</p><p><b>  {</b></p><p>  SqlConnection sqlcon = new SqlConnection("server=IP地址;uid=賬號(hào);pwd=密碼;database=數(shù)據(jù)庫(kù)名");</p><p>  sqlcon.Open();</p>

62、<p>  SqlCommand sqlcmd = new SqlCommand(query,sqlcon);</p><p>  SqlDataReader sr = sqlcmd.ExecuteReader();</p><p>  sqlcon.Close();</p><p>  return sr;</p><p><

63、;b>  }</b></p><p>  之后每次需要讀取數(shù)據(jù)庫(kù)操作時(shí),就調(diào)用GetDataReader函數(shù)。進(jìn)行插入或者更新操作需要返回的值應(yīng)該是整型數(shù),為執(zhí)行ExecuteNonQuery函數(shù)的返回值,將GetDataReader稍加改寫(xiě),就可以得到用于執(zhí)行插入或者更新的新函數(shù)了。</p><p>  盡管高校教學(xué)用微信公共平臺(tái)連接的是已有的數(shù)據(jù)庫(kù),但是為了適應(yīng)部分新

64、的需求,仍然需要增加部分內(nèi)容。數(shù)據(jù)庫(kù)中需要查看和修改的數(shù)據(jù)已經(jīng)十分完整,需要添加的是用戶賬號(hào)相關(guān)的內(nèi)容。對(duì)于學(xué)生用戶而言,添加一列微信號(hào)的數(shù)據(jù)位,使公共平臺(tái)應(yīng)用后能夠綁定用戶微信號(hào);對(duì)于教師用戶而言,因之前沒(méi)有教師賬號(hào)的表,所以添加一個(gè)新的教師信息表,主要內(nèi)容為教師工號(hào)、教師姓名、教師科目、密碼、微信號(hào),以供教師綁定微信號(hào)。</p><p>  調(diào)整過(guò)后的數(shù)據(jù)庫(kù)關(guān)系模型如下圖:</p><p&

65、gt;  圖4.2 數(shù)據(jù)庫(kù)結(jié)構(gòu)圖</p><p>  4.2.3 具體功能模塊實(shí)現(xiàn)</p><p>  4.2.3.1 ACCESS_TOKEN使用方式</p><p>  ACCESS_TOKEN是微信調(diào)用通用接口的通行證,必須通過(guò)ACCESS_TOKEN驗(yàn)證才能調(diào)用通用接口。驗(yàn)證ACCESS_TOKEN的方法是在向微信服務(wù)器發(fā)起調(diào)用通用接口請(qǐng)求時(shí),將ACCESS

66、_TOKEN一起發(fā)送到微信服務(wù)器。通用接口是微信已經(jīng)定義好的一些常用接口,包括更改用戶所在分組、文件上傳等等。調(diào)用微信已經(jīng)規(guī)定好的通用接口的好處是一些涉及微信服務(wù)器端的操作減少代碼失誤的可能,還可以減少編程的工作量。</p><p>  獲取ACCESS_TOKEN的方法是以http協(xié)議攜帶幾個(gè)參數(shù)發(fā)送get請(qǐng)求到固定網(wǎng)址(https://api.weixin.qq.com/cgi-bin/token?grant

67、_type={0}&appid={1}&secret={2}),參數(shù)通過(guò)驗(yàn)證之后,微信服務(wù)器會(huì)返回一個(gè)JSON數(shù)據(jù)包給公共平臺(tái)接口,格式為{“access_token”:”ACCESS_TOKEN”,”expires_in”:7200}。其中access_token就是獲取到的憑證,expires_in為憑證的有效時(shí)間,單位是秒。得到數(shù)據(jù)包之后進(jìn)行解析,之后每次調(diào)用通用接口都需要使用這個(gè)ACCESS_TOKEN進(jìn)行驗(yàn)證[

68、7]。</p><p>  圖4.3 驗(yàn)證ACCESS_TOKEN流程圖</p><p>  ACCESS_TOKEN是調(diào)用通用接口的通行證,而一個(gè)ACCESS_TOKEN的有效時(shí)間是兩小時(shí),在憑證有效期內(nèi)不需要重復(fù)獲取,重復(fù)獲取會(huì)導(dǎo)致之前獲取的憑證失效。所以為了保證通用接口能夠正常的調(diào)用,必須保證ACCESS_TOKEN通過(guò)驗(yàn)證。在進(jìn)行ACCESS_TOKEN驗(yàn)證的時(shí)候,有兩種使用方法,

69、一種是每次進(jìn)行ACCESS_TOKEN驗(yàn)證都重新獲取一次,這種方法的好處是操作簡(jiǎn)單,運(yùn)行速度快,占用內(nèi)存較小,缺點(diǎn)是ACCESS_TOKEN每日獲取次數(shù)有上限,頻繁獲取可能會(huì)導(dǎo)致ACCESS_TOKEN不可用;另一種方法是將獲取到的ACCESS_TOKEN儲(chǔ)存在數(shù)據(jù)庫(kù)或者臨時(shí)文件中,保證獲取到的憑證能最大效率的利用,缺點(diǎn)是每次調(diào)用ACCESS_TOKEN都要訪問(wèn)數(shù)據(jù)庫(kù)或者臨時(shí)文件,速度慢且程序復(fù)雜。</p><p&g

70、t;  兩種方法適用范圍不同,后者適用于訪問(wèn)人數(shù)眾多、調(diào)用通用接口頻繁、以主動(dòng)推送消息為主的微信公共平臺(tái)(例如媒體新聞?dòng)嗛喬?hào)),前者適用于以特定功能為主導(dǎo)、用戶群體特殊的公共平臺(tái)(例如網(wǎng)店微信平臺(tái)支付)。以高校教學(xué)為目的的微信公共平臺(tái)的用戶群體主要為學(xué)生,功能以查詢教學(xué)信息、發(fā)布教學(xué)通知為主,公共平臺(tái)主動(dòng)推送消息的頻率低,調(diào)用通用接口的頻率不高,可以選擇第一種方式。</p><p>  4.2.3.2 用戶請(qǐng)求消

71、息初處理與分配</p><p>  因?yàn)樗械挠脩粽?qǐng)求都是以http post方式發(fā)送到公共平臺(tái)的,而xml格式的消息對(duì)于操作來(lái)說(shuō)有極大的不便,因此,接收到用戶發(fā)送過(guò)來(lái)的xml消息后,首先要對(duì)xml消息進(jìn)行初步處理,將xml消息轉(zhuǎn)化為自定義的消息對(duì)象,才能進(jìn)行進(jìn)一步的分析反饋。將xml消息轉(zhuǎn)換成消息對(duì)象的優(yōu)點(diǎn)是充分利用面向?qū)ο蟮乃枷氲奶攸c(diǎn),將對(duì)消息的判斷和處理全都轉(zhuǎn)變?yōu)閷?duì)消息實(shí)體對(duì)象的特征的判斷和處理,一方面在操

72、作時(shí)保證更加快捷和清晰,另一方面對(duì)象在不同模塊之間的傳遞也變得更為簡(jiǎn)單。</p><p>  圖4.4 用戶請(qǐng)求消息初處理流程圖</p><p>  首先聲明一個(gè)ReceiveMessageBase的基類,包含所有類型的消息所含的共同變量:MsgType(消息類型)、FromUserName(發(fā)送方id)、ToUserName(接收方id)、CreatTime(創(chuàng)建時(shí)間)、MsgBody(

73、消息原文)等。其中MsgType為枚舉類型,包含text(文本)、imge(圖片)、voice(聲音)、link(超鏈接)、event(事件)等類型。創(chuàng)建基類的目的是將所有消息類型中共通的內(nèi)容提前定義,在之后繼承基類的子類中不需要重復(fù)聲明共通的變量,在之后進(jìn)行修改和添加時(shí)也變得更為簡(jiǎn)單。</p><p>  然后根據(jù)不同的消息類型,分別聲明繼承了ReceiveMessageBase類的子類,增加具體類型所對(duì)應(yīng)的變

74、量。例如文本消息類TextReceiveMessage類在繼承的同時(shí),增加了Content變量,儲(chǔ)存文本消息的消息內(nèi)容。</p><p>  接收到微信服務(wù)器發(fā)來(lái)的xml消息后,首先找到MsgType節(jié)點(diǎn),判斷消息類型,然后聲明對(duì)應(yīng)的對(duì)象,將解析后的xml節(jié)點(diǎn)內(nèi)容分別賦給對(duì)應(yīng)的變量。為了之后的函數(shù)調(diào)用操作方便,將消息中最主要的內(nèi)容(文本消息中的消息文本、圖片消息中的圖片url等)全部存放在MsgBody變量中。之

75、后將完成的消息對(duì)象傳遞給下一個(gè)模塊,詳細(xì)的消息處理都對(duì)這個(gè)對(duì)象進(jìn)行。</p><p>  4.2.3.3 用戶微信賬號(hào)綁定與解除綁定</p><p>  用戶使用微信公共平臺(tái)的功能之前,首先要將微信賬號(hào)與數(shù)據(jù)庫(kù)中的學(xué)生信息或者教師信息綁定。綁定學(xué)生信息的用戶才能使用公共平臺(tái)的功能,保證了數(shù)據(jù)庫(kù)中信息的安全性和用戶的唯一性,即每個(gè)學(xué)生只能使用一個(gè)微信賬號(hào)來(lái)訪問(wèn)公共平臺(tái),每個(gè)微信賬號(hào)也只能訪問(wèn)

76、自己的數(shù)據(jù),無(wú)法查閱其他學(xué)生的資料;而教師類用戶可以對(duì)數(shù)據(jù)庫(kù)中具體課程的數(shù)據(jù)進(jìn)行增、刪、查、改的多種操作,因此在使用微信公共平臺(tái)的功能之前首先綁定賬號(hào)保證了數(shù)據(jù)的安全性。</p><p>  圖4.5 用戶賬號(hào)綁定流程圖</p><p>  因?yàn)榻壎ㄎ⑿刨~號(hào)需要提交學(xué)號(hào)/工號(hào)和密碼,所以選擇用戶發(fā)送文本消息方式進(jìn)行綁定。當(dāng)用戶發(fā)送“綁定/解綁 學(xué)號(hào) 密碼”形式的文本消息到公共平臺(tái),公共平臺(tái)

77、接口即可接收到用戶發(fā)來(lái)的綁定請(qǐng)求,在將xml消息轉(zhuǎn)換成TextReceiveMessage消息對(duì)象的時(shí)候,就能執(zhí)行綁定操作了。</p><p>  xml信息中的Content節(jié)點(diǎn)即消息的主體內(nèi)容,在TextReceiveMessage對(duì)象中存放在string格式的MsgBody變量里。對(duì)這個(gè)變量進(jìn)行字符串分割,分離得到“綁定/解綁”、“學(xué)號(hào)”和“密碼”三個(gè)字符串。對(duì)第一個(gè)字符串判定確保當(dāng)前執(zhí)行的是賬號(hào)綁定(或解

78、除綁定)操作。賬號(hào)和密碼則用于與數(shù)據(jù)庫(kù)中信息相匹配。</p><p>  在綁定操作之前,首先在數(shù)據(jù)庫(kù)中查詢請(qǐng)求用戶的微信號(hào)是否存在,即是否已經(jīng)綁定到某個(gè)學(xué)號(hào),若尚未綁定,則判斷請(qǐng)求消息中的學(xué)號(hào)是否已經(jīng)有微信號(hào)綁定,若沒(méi)有微信號(hào)綁定則判斷密碼是否正確。全部信息匹配完畢之后若沒(méi)有錯(cuò)誤,則將請(qǐng)求用戶的微信號(hào)儲(chǔ)存在數(shù)據(jù)庫(kù)中,與對(duì)應(yīng)學(xué)號(hào)綁定完畢;若綁定步驟中出現(xiàn)問(wèn)題,則將具體問(wèn)題的信息返回給請(qǐng)求用戶。</p>

79、<p>  解除綁定的操作類似,請(qǐng)求用戶發(fā)送來(lái)的學(xué)號(hào)、密碼、微信號(hào)必須與數(shù)據(jù)庫(kù)中的信息一一對(duì)應(yīng),之后將請(qǐng)求消息發(fā)來(lái)的學(xué)號(hào)對(duì)應(yīng)的微信號(hào)清空,即解除綁定完畢。教師賬號(hào)和學(xué)生賬號(hào)的操作基本類同。</p><p>  4.2.3.4 用戶查詢資料</p><p>  綜合微信手機(jī)版的操作局限性與查詢數(shù)據(jù)類型的多樣化,用戶使用微信公共平臺(tái)查詢時(shí),仍然是以發(fā)送文本消息的方式進(jìn)行查詢。用戶

80、發(fā)送“查詢 內(nèi)容 附加條件(可省略)”的文本消息到公共平臺(tái),經(jīng)過(guò)消息初處理之后,將得到的消息示例傳遞給業(yè)務(wù)處理模塊。</p><p>  圖4.6 用戶資料查詢流程圖</p><p>  在業(yè)務(wù)處理模塊,先使用split函數(shù)對(duì)消息實(shí)體內(nèi)容,即MsgBody變量中儲(chǔ)存的字符串以空格字符為界限進(jìn)行切割處理,得到一個(gè)新的字符串。當(dāng)判斷切割后的字符串?dāng)?shù)組中的第一個(gè)值為“查詢”時(shí),即可進(jìn)入查詢功能的

81、分支模塊。</p><p>  進(jìn)入查詢模塊后,即可根據(jù)用戶請(qǐng)求中的查詢內(nèi)容和查詢條件,編寫(xiě)SQL語(yǔ)句。若是用戶沒(méi)有提交查詢條件,則按照默認(rèn)的查詢條件進(jìn)行處理。編寫(xiě)查詢語(yǔ)句時(shí),直接使用用戶的微信號(hào),也就是消息對(duì)象中的FromUserName作為關(guān)鍵的查詢條件。因此,使用查詢功能之前,必須先進(jìn)行微信號(hào)綁定,才能確保查詢到的數(shù)據(jù)準(zhǔn)確完整。將標(biāo)準(zhǔn)SQL語(yǔ)句傳遞到數(shù)據(jù)庫(kù)連接模塊,從數(shù)據(jù)庫(kù)返回SqlDataReader數(shù)據(jù)

82、之后,再對(duì)返回?cái)?shù)據(jù)做進(jìn)一步處理。</p><p>  根據(jù)查詢內(nèi)容的不同,對(duì)SqlDataReader數(shù)據(jù)的處理也不同。若查詢的數(shù)據(jù)是以行方式返回結(jié)果的,例如作業(yè)列表,則將返回?cái)?shù)據(jù)按照順序排列即可;若查詢的數(shù)據(jù)是以列方式返回結(jié)果的,例如個(gè)人資料,則還要將列名所對(duì)應(yīng)的中文含義與列中的信息一一匹配。將返回?cái)?shù)據(jù)處理后得到一個(gè)字符串,最后在數(shù)據(jù)前后分別添加友好的客服內(nèi)容,即可將數(shù)據(jù)傳遞到文本消息發(fā)送模塊。對(duì)返回?cái)?shù)據(jù)進(jìn)行細(xì)

83、致處理的目的是提高用戶友好性,因?yàn)閿?shù)據(jù)庫(kù)中儲(chǔ)存的數(shù)據(jù)的可讀性不高,直接返回給用戶會(huì)造成極大地閱讀困難,經(jīng)過(guò)處理后的數(shù)據(jù)則十分利于閱讀,方便用戶獲得有效信息和進(jìn)一步操作。</p><p>  文本消息發(fā)送模塊是一個(gè)封裝好的xml生成類,將發(fā)送方與接收方的微信號(hào)(即用戶請(qǐng)求中的接收方與發(fā)送方)、發(fā)送內(nèi)容一起傳遞到發(fā)送模塊,即可生成符合微信數(shù)據(jù)規(guī)范的xml文件,然后提交到微信服務(wù)器,由微信服務(wù)器發(fā)送給微信用戶。作為xm

84、l節(jié)點(diǎn)中必須的消息生成時(shí)間,則在發(fā)送模塊中由時(shí)間生成函數(shù)自動(dòng)生成。因?yàn)椴煌愋偷奈⑿畔⒌膞ml格式不同,所以發(fā)送圖片、圖文、音頻、視頻、超鏈接等格式的消息時(shí),要調(diào)用其他的消息發(fā)送模塊。所有消息發(fā)送模塊可以被隨意調(diào)用,保證其他業(yè)務(wù)消息發(fā)送時(shí)不必再考慮復(fù)雜的格式問(wèn)題。</p><p>  4.2.3.5 教師用戶信息管理與群發(fā)消息</p><p>  為了保證信息的安全性,學(xué)生用戶大多數(shù)情況

85、下都只能使用查詢功能,只能修改自己的個(gè)人資料。而與學(xué)生用戶相對(duì)應(yīng)的,教師用戶可以修改所負(fù)責(zé)的科目的課程信息、作業(yè)信息、成績(jī)表等等數(shù)據(jù),這些數(shù)據(jù)的插入和修改也可以通過(guò)微信公共平臺(tái)來(lái)實(shí)現(xiàn)。</p><p>  圖4.7 教師功能流程圖</p><p>  與學(xué)生用戶查詢類似,教師用戶綁定微信號(hào)之后,即可通過(guò)發(fā)送關(guān)鍵詞的方式操作公共平臺(tái)。發(fā)送“插入/修改 項(xiàng)目 值 條件(可省略)”的文本消息到微

86、信公共平臺(tái),經(jīng)過(guò)消息初處理后,將MsgBody中的字符串切割,之后根據(jù)用戶請(qǐng)求的功能是插入或者修改分別轉(zhuǎn)至不同的功能模塊。轉(zhuǎn)移到具體的功能模塊后,再根據(jù)用戶附加的請(qǐng)求條件填寫(xiě)SQL語(yǔ)句,調(diào)用數(shù)據(jù)庫(kù)連接模塊執(zhí)行SQL語(yǔ)句。</p><p>  執(zhí)行插入或者修改功能時(shí),數(shù)據(jù)庫(kù)連接模塊將會(huì)返回SQL語(yǔ)句所影響的行數(shù),若返回行數(shù)是0,則證明插入數(shù)據(jù)失敗或者沒(méi)有符合修改條件的數(shù)據(jù)。將返回的影響行數(shù)包裝后回饋給用戶,即可使用

87、戶清晰地了解數(shù)據(jù)操作是否成功,若操作失敗會(huì)提醒用戶可能出現(xiàn)的問(wèn)題,方便用戶進(jìn)行修改。同時(shí),用戶也可以再次發(fā)送查看的關(guān)鍵詞,來(lái)查看數(shù)據(jù)是否已經(jīng)更新到數(shù)據(jù)庫(kù)。</p><p>  對(duì)于教師用戶而言,發(fā)送群通知是經(jīng)常使用的一項(xiàng)功能,可以用來(lái)發(fā)送通知和公告,所以在微信公共平臺(tái)接口中向教師用戶提供群發(fā)消息的功能是必要的。教師用戶利用微信公共平臺(tái)發(fā)送群發(fā)消息的方法仍然是向微信公共平臺(tái)發(fā)送“群發(fā) 消息內(nèi)容”的文本信息,微信公共

88、平臺(tái)接收到經(jīng)過(guò)微信服務(wù)器轉(zhuǎn)發(fā)來(lái)的xml文件后,仍舊按照消息處理流程,將xml消息轉(zhuǎn)化為TextReceiveMessage對(duì)象,然后轉(zhuǎn)入文本消息處理模塊。在文本消息處理模塊,將MsgBody中的文本使用split函數(shù)切割后,得到一個(gè)字符串?dāng)?shù)組。當(dāng)判斷字符串?dāng)?shù)組的第一個(gè)值為“群發(fā)”時(shí),即可轉(zhuǎn)入群發(fā)消息模塊,進(jìn)行群發(fā)消息的操作。</p><p>  在群發(fā)消息模塊,首先調(diào)用數(shù)據(jù)庫(kù)連接模塊,查詢發(fā)起群發(fā)請(qǐng)求的教師用戶的

89、姓名與教授的全部學(xué)生用戶的微信號(hào),得到教師姓名后對(duì)教師發(fā)來(lái)的群發(fā)消息進(jìn)行包裝,增加發(fā)起請(qǐng)求的教師用戶的姓名和發(fā)送時(shí)間。最后進(jìn)入一個(gè)循環(huán),在循環(huán)中調(diào)用文本消息發(fā)送模塊,依次向數(shù)據(jù)庫(kù)連接模塊返回的學(xué)生用戶的微信號(hào)發(fā)送消息。消息全部發(fā)送完畢后,向發(fā)起請(qǐng)求的教師用戶回饋發(fā)送結(jié)果,包括是否發(fā)送成功以及接收信息的學(xué)生人數(shù)。</p><p>  4.2.3.6 自定義菜單事件響應(yīng)</p><p>  微

90、信公共平臺(tái)提供自定義菜單的功能,使用自定義菜單在一定程度上擺脫了只能靠發(fā)送文字等待公共平臺(tái)反饋的互動(dòng)方式,直接點(diǎn)擊菜單即可實(shí)現(xiàn)相關(guān)功能。將一些常用的功能轉(zhuǎn)換為自定義菜單,能夠?qū)崿F(xiàn)更好的用戶友好性,也節(jié)省了響應(yīng)用戶請(qǐng)求的條件判斷程序。</p><p>  微信公共平臺(tái)的自定義菜單有click和view兩種觸發(fā)方式,前者為用戶點(diǎn)擊菜單時(shí),向公共平臺(tái)發(fā)送一個(gè)事件消息,后者則是直接跳轉(zhuǎn)到事先確定的網(wǎng)址。兩者有不同的應(yīng)用。

91、一般來(lái)說(shuō),在微信范疇內(nèi)的菜單事件或者需要提交部分?jǐn)?shù)據(jù)的外網(wǎng)觸發(fā)事件多數(shù)以click方式進(jìn)行,在代碼編寫(xiě)時(shí)有更大的自由度和完善性;普通的外網(wǎng)觸發(fā)事件可以選擇view方式,比起click方式的跳轉(zhuǎn)連接,view方式更加快捷,減少了在服務(wù)器與公共平臺(tái)之間的消息交互和接口調(diào)用,缺點(diǎn)是自主性不足,局限性很大。</p><p>  菜單在使用之前首先要?jiǎng)?chuàng)建。創(chuàng)建菜單要在微信網(wǎng)頁(yè)版的開(kāi)發(fā)者模式中執(zhí)行,使用微信提供的網(wǎng)頁(yè)工具,按

92、照規(guī)定的數(shù)據(jù)格式提交創(chuàng)建菜單的代碼,將菜單名、菜單類別(click或view)、菜單關(guān)鍵值(若是click類型的菜單則為菜單點(diǎn)擊事件的判別關(guān)鍵詞,若是view類型的菜單則為直接跳轉(zhuǎn)的網(wǎng)頁(yè)鏈接)。</p><p>  圖4.8 自定義菜單流程圖</p><p>  在高校教學(xué)微信公共平臺(tái)中,click方式的自定義菜單主要用于查看幫助和個(gè)人信息確認(rèn)。點(diǎn)擊查看菜單,就會(huì)發(fā)送一個(gè)xml格式的事件信

93、息到微信公共平臺(tái)。經(jīng)過(guò)消息初處理后,xml消息會(huì)轉(zhuǎn)換為EventReceiveMessage類的消息對(duì)象,然后會(huì)轉(zhuǎn)入事件處理模塊。在事件處理模塊,根據(jù)用戶請(qǐng)求中的菜單關(guān)鍵值(仍然儲(chǔ)存在MsgBody中),判斷用戶點(diǎn)擊的具體菜單,從而實(shí)現(xiàn)用戶請(qǐng)求。若是點(diǎn)擊“幫助”菜單,則直接調(diào)用文本消息發(fā)送模塊,向用戶發(fā)送詳細(xì)的關(guān)于微信公共平臺(tái)的功能介紹與使用說(shuō)明,方便用戶熟悉和使用;若是點(diǎn)擊“個(gè)人信息”菜單,則首先要調(diào)用數(shù)據(jù)庫(kù)連接模塊,在數(shù)據(jù)庫(kù)中查詢用

94、戶的個(gè)人信息,將返回結(jié)果進(jìn)行修飾后,調(diào)用文本消息發(fā)送模塊將內(nèi)容發(fā)送給用戶。其他click類型的菜單響應(yīng)流程均類似。</p><p>  View方式的自定義菜單則用來(lái)做快速連接,包括學(xué)院官網(wǎng)、教務(wù)處官網(wǎng)等超鏈接,方便用戶快速訪問(wèn)。點(diǎn)擊view方式的菜單,向微信服務(wù)器直接發(fā)起請(qǐng)求,即可跳轉(zhuǎn)到具體網(wǎng)址,不需要經(jīng)過(guò)公共平臺(tái),減少了程序運(yùn)行時(shí)間和接口調(diào)用時(shí)間。</p><p>  第五章、總結(jié)與進(jìn)

95、一步工作</p><p><b>  5.1 總結(jié)</b></p><p>  在當(dāng)前信息交互頻繁的互聯(lián)網(wǎng)時(shí)代背景下,微信以其快捷、便利、迅速的特點(diǎn),占據(jù)了信息傳播和交互的一個(gè)重要方面。而作為微信這個(gè)載體的一個(gè)重要應(yīng)用,微信公共平臺(tái)在交互的實(shí)時(shí)性、快捷性等方面相比于論壇、貼吧等網(wǎng)頁(yè)信息平臺(tái)和傳統(tǒng)管理系統(tǒng)有著無(wú)與倫比的優(yōu)勢(shì)。本文所實(shí)現(xiàn)的面向高校師生的微信公共平臺(tái),就是利

96、用微信公共平臺(tái)為載體,結(jié)合SQL server數(shù)據(jù)庫(kù)技術(shù),以為師生快速、便捷的提供實(shí)時(shí)的成績(jī)、課表、作業(yè)、通知等信息的查詢和更改操作為目的所設(shè)計(jì)的。面向高校教學(xué)的微信公共平臺(tái),連接課程信息數(shù)據(jù)庫(kù),當(dāng)用戶需要查詢或者更新某些數(shù)據(jù)時(shí),只需要發(fā)送對(duì)應(yīng)的關(guān)鍵詞到微信公共平臺(tái),微信公共平臺(tái)根據(jù)關(guān)鍵詞判斷用戶所需求的服務(wù),之后在數(shù)據(jù)庫(kù)執(zhí)行相關(guān)操作,將結(jié)果處理之后返回給用戶。</p><p>  5.2 存在不足與改進(jìn)方向&l

97、t;/p><p>  本次課題也存在一些不足之處:頻繁訪問(wèn)數(shù)據(jù)庫(kù)容易給數(shù)據(jù)庫(kù)帶來(lái)負(fù)載。由于所有的操作都需要直接對(duì)數(shù)據(jù)庫(kù)進(jìn)行操作,當(dāng)并行用戶過(guò)多時(shí),數(shù)據(jù)庫(kù)訪問(wèn)和更新就成了系統(tǒng)瓶頸,由此可能帶來(lái)數(shù)據(jù)庫(kù)負(fù)載過(guò)大,信息反饋延誤等性能問(wèn)題;視頻、音頻、菜單等消息互動(dòng)方式?jīng)]有充分利用。盡管在結(jié)構(gòu)中設(shè)計(jì)了多種格式的消息類與消息發(fā)送模塊,但是在實(shí)際開(kāi)發(fā)中并沒(méi)有充分利用。</p><p>  在之后的改進(jìn)中,會(huì)

98、結(jié)合數(shù)據(jù)庫(kù)管理技術(shù)進(jìn)一步完善微信公共平臺(tái)與數(shù)據(jù)庫(kù)之間的互動(dòng),同時(shí)也可以考慮進(jìn)一步利用微信公共平臺(tái)的素材實(shí)現(xiàn)例如群發(fā)語(yǔ)音通知等更加強(qiáng)大的功能等。</p><p><b>  參考文獻(xiàn)</b></p><p>  [1][中]陸鋼,朱培軍,李慧云.等智能終端跨平臺(tái)應(yīng)用開(kāi)發(fā)技術(shù)研究[J].電信科學(xué).2012</p><p>  [2][中]劉歡,盧蓓

99、蓉,陳穎.高校微信平臺(tái)簡(jiǎn)潔之道[J].中國(guó)教育網(wǎng)絡(luò),2013</p><p>  [3][中]魏超.微信的功能和屬性分析[J].《出版廣角》2014年12期,2014</p><p>  [4][美]Fabio Claudio Ferracchiati ,Jay Glynn.毛堯飛譯.NET數(shù)據(jù)服務(wù)C#高級(jí)編程[ M].北京:清華大學(xué)出版社,2002.</p><p&g

100、t;  [5][美]Dan Rahmel.天宏工作室譯.使用Visual Studio 6開(kāi)發(fā)Web數(shù)據(jù)庫(kù)應(yīng)用程序[M].北京:清華大學(xué)出版社,2002.</p><p>  [6][美]Miller T H ,BERGER D W.Totally Integrated Enterprises[M].New York: St.Lucie Press,2001.</p><p>  [7][

101、中]微信公共平臺(tái)開(kāi)發(fā)者文檔.http://mp.weixin.qq.com/wiki/home/index.html.2015</p><p><b>  致謝</b></p><p>  本人的學(xué)位論文是在我的導(dǎo)師蒲鵬老師的認(rèn)真指導(dǎo)和耐心幫助下完成的。蒲老師嚴(yán)肅的科學(xué)態(tài)度,風(fēng)趣的交流方式,嚴(yán)謹(jǐn)?shù)闹螌W(xué)精神,親切的關(guān)懷都深深地感染著我。從課題的選擇到程序的開(kāi)發(fā)再到項(xiàng)目的

102、最終完成,蒲老師都始終給予我耐心、認(rèn)真的指導(dǎo)和幫助。在此謹(jǐn)向蒲老師致以誠(chéng)摯的謝意和崇高的敬意。</p><p>  在此,還要感謝一起度過(guò)大學(xué)生活、給予我團(tuán)結(jié)幫助的同學(xué)和給予我知識(shí)水平及治學(xué)精神的老師,正是由于他們的幫助和支持,我才能克服一個(gè)一個(gè)的困難,直至本文的順利完成。</p><p>  從開(kāi)始進(jìn)入課題到論文的順利完成,許多可敬的師長(zhǎng)、同學(xué)、朋友給了我很多的幫助,在這里請(qǐng)接受我誠(chéng)摯的

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論