黃美璇
(黎明職業(yè)大學(xué)信息與電子工程學(xué)院,福建泉州362000)
微信是騰訊推出的一款跨平臺的免費(fèi)即時通訊應(yīng)用(APP)。[1]微信公眾平臺是基于微信的功能模塊。個人或者企業(yè)都可申請一個公眾賬號群發(fā)推送、自動回復(fù)以及一對一實(shí)現(xiàn)和特定群體的信息交流。[2]微信銀行是銀行基于微信公眾平臺向微信用戶提供各類銀行服務(wù)。目前,多數(shù)銀行一般采用瀑布模型開發(fā)微信銀行應(yīng)用系統(tǒng),這種方法導(dǎo)致每當(dāng)微信發(fā)布新的接口API時,系統(tǒng)就需要進(jìn)行大量的改造或者重構(gòu)。針對此問題,本文提出一種模塊化的分層設(shè)計(jì)方法,運(yùn)用UML建模技術(shù)構(gòu)建一個系統(tǒng)穩(wěn)定、擴(kuò)展性能好的微信銀行應(yīng)用系統(tǒng),該系統(tǒng)能在微信公眾平臺接口發(fā)生變化時,不調(diào)整或者簡單調(diào)整即可使用。
瀑布模型將系統(tǒng)開發(fā)過程嚴(yán)格規(guī)定為固定次序聯(lián)接的若干階段工作。該模型是一種理想化的線性模型,適用于需求明確且很少變化的系統(tǒng)開發(fā)。[3]采用瀑布模型開發(fā)微信銀行應(yīng)用系統(tǒng),當(dāng)微信公眾平臺接口發(fā)生變化時,微信銀行應(yīng)用系統(tǒng)就需要進(jìn)行大量改造或者重構(gòu),造成開發(fā)周期過長和開發(fā)資源浪費(fèi)。顯然采用瀑布模型開發(fā)微信銀行應(yīng)用系統(tǒng)無法克服接口變化引發(fā)的問題。
通過分析銀行的業(yè)務(wù)特點(diǎn)及銀行客戶的需求,確定微信銀行應(yīng)用系統(tǒng)的業(yè)務(wù)功能包括查詢類業(yè)務(wù)、金融類業(yè)務(wù)和營銷類業(yè)務(wù)三大功能。其中查詢類業(yè)務(wù)功能包括產(chǎn)品和網(wǎng)點(diǎn)信息查詢、優(yōu)惠活動查詢等常見問題的查詢功能;金融類業(yè)務(wù)功能包括賬戶綁定、匯款繳費(fèi)、銀行卡掛失、信用卡還款、服務(wù)預(yù)約、微客服等功能;營銷類業(yè)務(wù)功能包括營銷廣告推送、活動推廣等功能。系統(tǒng)用例設(shè)計(jì)如圖1所示。
圖1 微信銀行應(yīng)用系統(tǒng)用例圖
設(shè)計(jì)該系統(tǒng)的基本思想是:將微信銀行應(yīng)用系統(tǒng)進(jìn)行分層設(shè)計(jì),并將功能進(jìn)行合理劃分、封裝成不同模塊。各模塊、各層之間采用XML定義接口,利用接口的自描述特征保證其松耦合,使得微信銀行應(yīng)用系統(tǒng)穩(wěn)定和易于擴(kuò)展。系統(tǒng)總體架構(gòu)如圖2所示。
圖2 微信銀行應(yīng)用系統(tǒng)架構(gòu)圖
2.2.1 內(nèi)部接口設(shè)計(jì)
鑒于XML語言具有很強(qiáng)的可擴(kuò)展性、可重用性、自解釋性以及在HTML頁面中嵌入可大大擴(kuò)展HTML在網(wǎng)上的應(yīng)用范圍等優(yōu)勢。[4]微信銀行應(yīng)用系統(tǒng)各模塊、各層之間均使用XML+HTTP的方式進(jìn)行數(shù)據(jù)交互。為了保證內(nèi)部接口的穩(wěn)定性和可擴(kuò)展性,內(nèi)部接口設(shè)計(jì)采用XML自描述語言。利用這類語言定義接口可使接口獨(dú)立于應(yīng)用系統(tǒng),降低系統(tǒng)內(nèi)各個程序之間的耦合,從而實(shí)現(xiàn)系統(tǒng)的穩(wěn)定和可擴(kuò)展性。
2.2.2 外部接口設(shè)計(jì)
根據(jù)騰訊公司已公布的接口進(jìn)行設(shè)計(jì),接口主要包括:基礎(chǔ)接口、發(fā)送消息接口、自定義菜單接口、賬號管理接口、數(shù)據(jù)統(tǒng)計(jì)接口、微信智能接口、多客服接口。[5]
2.2.3 可擴(kuò)展性設(shè)計(jì)
鑒于微信銀行未來交易的快速增長,除了內(nèi)部接口采用自描述語言XML設(shè)計(jì),實(shí)現(xiàn)系統(tǒng)的擴(kuò)展外,還可采用集群技術(shù)來擴(kuò)展系統(tǒng)性能。即通過增加服務(wù)器或者虛擬服務(wù)器,同時在服務(wù)器之間接入負(fù)載均衡器或者安裝負(fù)載均衡軟件達(dá)到負(fù)載分流實(shí)現(xiàn)擴(kuò)展功能,并通過會話復(fù)制技術(shù)實(shí)現(xiàn)各服務(wù)器節(jié)點(diǎn)會話數(shù)據(jù)同步。[6]
接入模塊主要對來自微信服務(wù)器的HTTP請求進(jìn)行簽名驗(yàn)證,驗(yàn)證url是否有效,并把處理結(jié)果返回給微信服務(wù)器。程序片段如下:
一般微信用戶通過輸入關(guān)鍵字進(jìn)行查詢,微信服務(wù)器會立即呈現(xiàn)相應(yīng)回答,但是無論建立多大的詞庫,有時還是不能滿足微信用戶的查詢,這時候系統(tǒng)就應(yīng)該自動切換到人工服務(wù)。微信5.0以后開放了多客服的接口,使得系統(tǒng)轉(zhuǎn)人工變成可能。[7]實(shí)現(xiàn)多客服功能的程序片段如下:
客服管理模塊實(shí)現(xiàn)了:通過獲取微信用戶發(fā)過來的文本消息,如果滿足if里面的條件,會自動做出回答;如果不滿足,就會向微信服務(wù)器返回一條消息,微信服務(wù)器自動把該消息轉(zhuǎn)到多客服,這時候銀行客服人員只需要在電腦端安裝一個多客服客戶端,或者微信客戶端,即可接收消息,對用戶進(jìn)行一對一的溝通。
本文針對傳統(tǒng)的瀑布模型開發(fā)微信銀行存在的問題,提出了一種模塊化的分層設(shè)計(jì)方法。將微信銀行應(yīng)用系統(tǒng)進(jìn)行分層設(shè)計(jì),并將功能進(jìn)行合理劃分、封裝成不同模塊。各模塊、各層之間采用XML定義接口,利用接口的自描述特征保證其松耦合,構(gòu)建一個系統(tǒng)穩(wěn)定、擴(kuò)展性能好的微信銀行應(yīng)用系統(tǒng)。具體方案實(shí)施及將關(guān)鍵技術(shù)整合實(shí)現(xiàn)一個微信銀行應(yīng)用系統(tǒng)是該研究工作的下一步重點(diǎn)。
[1]林澤斐.基于微信公眾平臺API的移動OPAC設(shè)計(jì)與實(shí)現(xiàn)[J].農(nóng)業(yè)圖書情報(bào)學(xué)刊,2015,27(2):44-46.
[2]甘宇健,毛靈芝,向龍蓮.銀行智能微信公眾平臺設(shè)計(jì)與實(shí)現(xiàn)[J].軟件導(dǎo),.2014,13(2):6-8.
[3]閆帥,許鵬翔.基于瀑布模型與敏捷開發(fā)相結(jié)合的項(xiàng)目管理方法探討[J].電子技術(shù)與軟件工程,2013(18):67.
[4]徐進(jìn)強(qiáng).XML語言在Web開發(fā)中的應(yīng)用研究[J].軟件導(dǎo)刊,2013,12(12):33-35.
[5]騰訊.微信公眾平臺開發(fā)者文檔{EB/OL].{2014-3-26}.http://mp.weixin.qq.com/wiki/home/index.html.
[6]甘榮石.基于微信平臺的移動銀行應(yīng)用架構(gòu)研究[D].廣州:華南理工大學(xué),2013.
[7]微信開發(fā).微時代微信咨詢網(wǎng)[EB/OL].{2014-6-11}.http://www.wechatstyle.com/weixinkaifa/,