摘 要:電信服務系統(tǒng)具有業(yè)務訪問量大、業(yè)務變更頻繁、公眾訪問方式多樣等特點,本文介紹了該系統(tǒng)的設計與實現(xiàn)。該系統(tǒng)采用了先進的三層架構(gòu):數(shù)據(jù)庫采用Informix數(shù)據(jù)庫,中間層的電信服務業(yè)務邏輯則用C語言封裝成服務部署在應用服務器上,前臺應用程序通過這些服務的調(diào)用實現(xiàn)具體的業(yè)務操作,這種設計保證了該系統(tǒng)具有良好的執(zhí)行效率和可擴展性。另外,該系統(tǒng)提供了多應用接口,對中間層的服務調(diào)用包括delphi、VB、VC、Java等多種不同的應用程序,這些應用程序滿足了客戶對系統(tǒng)的多種不同訪問方式。
關鍵詞:三層體系結(jié)構(gòu) 客戶機/服務器 數(shù)據(jù)庫
中圖分類號:TP3 文獻標識碼:A 文章編號:1672-3791(2013)01(b)-0020-02
隨著計算機技術(shù)的發(fā)展,在實際應用的驅(qū)動下,人們在設計計算機相關的系統(tǒng)時廣泛采用客戶機/服務器(client/server)體系結(jié)構(gòu)。在這種體系結(jié)構(gòu)中,服務器一般都是文件服務器或者數(shù)據(jù)庫服務器,還包括應用服務器。不過,這時服務器一般只能提供數(shù)據(jù),因此客戶端必須完成應用所要求的功能。目前,這種體系結(jié)構(gòu)仍然占主導地位。但是,兩層體系結(jié)構(gòu)具有明顯的缺點:“胖客戶端”、網(wǎng)絡負擔重、應用邏輯不能被重復使用、管理的改變會產(chǎn)生巨大的影響等。
三層體系結(jié)構(gòu)則努力解決這一問題,辦法就是把應用邏輯從客戶端移到服務器端。三層結(jié)構(gòu)出現(xiàn)于1998年。圖1從原理上給出了3層體系結(jié)構(gòu)的簡化形式。
在圖1中,各層的功能如下。表示層:負責表示數(shù)據(jù)、接受用戶事件、控制用戶接口。表示層可以使用多種方式來實現(xiàn),可以使用web形式,也可以使用圖形用戶接口。功能層又叫業(yè)務邏輯層,實現(xiàn)業(yè)務規(guī)則,表示層可以訪問該層,該層保護了數(shù)據(jù),避免了客戶對數(shù)據(jù)的直接訪問。數(shù)據(jù)層負責數(shù)據(jù)存儲,該層使用常見的關系數(shù)據(jù)庫系統(tǒng)。必須注意的是,層之間的邊界是邏輯上的。因此,有可能所有的三層都運行在同一臺物理機器上。這里重要的是系統(tǒng)的結(jié)構(gòu)是清晰的,不同層之間的軟件邊界是事先定義好的。
三層體系結(jié)構(gòu)具有負載均衡、良好可伸縮性、業(yè)務修改容易等特點,因此目前很多應用系統(tǒng)的開發(fā)正在由傳統(tǒng)的兩層結(jié)構(gòu)向三層結(jié)構(gòu)過渡。本文將三層體系結(jié)構(gòu)技術(shù)應用于電信服務系統(tǒng)上,下面介紹該系統(tǒng)的具體設計和實現(xiàn)。
1 電信服務系統(tǒng)組成
由于電信發(fā)展已經(jīng)較為成熟,這里對其業(yè)務需求和特點只進行粗略的描述。電信服務的業(yè)務需求包括話費查詢、投訴申告、業(yè)務咨詢、業(yè)務受理等多種業(yè)務。電信對社會公眾提供的服務具有訪問量大、業(yè)務變更頻繁、客戶訪問方式多樣等特點。電信服務系統(tǒng)在功能上必須滿足業(yè)務需求,在具體實現(xiàn)上必須能夠體現(xiàn)自身特點。一個電信服務系統(tǒng)的總體結(jié)構(gòu)主要包括如下三個組成部分。
第一,客戶接口部分,包括語音和web兩種接口。Web接口:客戶可以通過email進入系統(tǒng)的email服務器,從而使用系統(tǒng)的服務;也可以通過網(wǎng)站的方式訪問系統(tǒng),同時該網(wǎng)站使用了web協(xié)同的功能,即可以由web坐席對客戶進行服務,因此系統(tǒng)使用了web服務器和web協(xié)同服務器以及TrailHead服務器,共同完成web坐席與客戶的協(xié)同功能;為了保護系統(tǒng),系統(tǒng)增加了防火墻。語音接口:客戶還可以通過電話或者傳真的方式接入系統(tǒng),采用我國的七號新令接入到系統(tǒng)的pbx交換機上,即北電的Meridian1交換機。
第二,系統(tǒng)處理部分。這部分完成對接入到系統(tǒng)的客戶提供服務。這部分主要由CTI服務器、數(shù)據(jù)庫服務器、自動語音應答系統(tǒng)(IVR)、坐席、網(wǎng)管工作站等組成。圖2中的CTI/ACD PG、IVR PG、Media Blender服務器用于將電話、web等接入到服務系統(tǒng)中的客戶進行統(tǒng)一的排隊,從而由坐席為隊列中的客戶提供服務。
第三,其他業(yè)務系統(tǒng)的接口。本系統(tǒng)為客戶提供服務需要其他系統(tǒng)的支持,例如投訴要涉及到投訴的部門,話費查詢涉及到計費系統(tǒng)等。該接口通過路由器連接到其他的業(yè)務系統(tǒng)。
2 軟件實現(xiàn)關鍵
在前面的總體結(jié)構(gòu)基礎上,要對客戶提供服務,還需要進行軟件的開發(fā)。本系統(tǒng)的軟件在結(jié)構(gòu)上采用了先進的三層架構(gòu)技術(shù),并提供多個應用接口,從而滿足該系統(tǒng)訪問方式多樣的需求。下面結(jié)合話費查詢介紹本系統(tǒng)軟件實現(xiàn)的關鍵技術(shù)。用戶根據(jù)自己的電話號碼和密碼進行月費查詢。系統(tǒng)提供三種查詢方式:營業(yè)廳查詢、網(wǎng)上查詢、電話客服中心查詢,其中電話客服中心包括語音導航自動查詢和客服中心話務員人工查詢。
如果采用傳統(tǒng)的兩層結(jié)構(gòu)開發(fā),那么上面提到的每一種查詢方式都需要對數(shù)據(jù)庫進行訪問,因此對系統(tǒng)性能、安全性、開發(fā)工作量、維護都帶來巨大的不方便之處。因此,為了避免這些問題,本系統(tǒng)采用了三層結(jié)構(gòu)的技術(shù)來實現(xiàn)。
第一,數(shù)據(jù)層:本系統(tǒng)的數(shù)據(jù)庫服務器采用了Unix環(huán)境下的informix數(shù)據(jù)庫。
第二,業(yè)務邏輯層:本系統(tǒng)件采用了BEA Tuxedo中間件進行業(yè)務邏輯的開發(fā)。本系統(tǒng)的業(yè)務邏輯就是根據(jù)電話號碼和密碼,訪問數(shù)據(jù)庫,得到話費,然后返回話費的值。業(yè)務邏輯采用Informix數(shù)據(jù)庫的ESQL語言進行數(shù)據(jù)庫訪問,Tuxedo的系統(tǒng)調(diào)用形成業(yè)務邏輯。業(yè)務邏輯生成后作為服務部署在服務器端,系統(tǒng)根據(jù)資源和訪問量來調(diào)整啟動的服務個數(shù)。如果系統(tǒng)內(nèi)存和CPU處理能力很強,而且請求該業(yè)務邏輯(即服務)的應用很多,則在UNIX環(huán)境下啟動多個該服務。
第三,表示層:本系統(tǒng)要求話費查詢以多種方式提供—營業(yè)廳、web、客戶服務中心等,由于歷史的原因,不同的訪問方式所采用的開發(fā)工具也不同。營業(yè)廳系統(tǒng)采用delphi編程,所以必須在delphi中調(diào)用前面的服務來實現(xiàn);對于網(wǎng)上查詢,系統(tǒng)采用jsp程序?qū)崿F(xiàn),因此要在jsp中調(diào)用該服務;對于電話自主查詢,則將話費查詢封裝成dll在IVR中進行調(diào)用;對于客服中心話務員人工查詢,由于客服業(yè)務有多種,且是用VB開發(fā),所以在VB中調(diào)用該服務。圖2是本系統(tǒng)的軟件框架(見圖1)。
下面具體介紹本系統(tǒng)在各層重涉及到的關鍵技術(shù)。
2.1 服務器端
服務器端的實現(xiàn)包括三個部分,依次是創(chuàng)建數(shù)據(jù)庫,編寫業(yè)務邏輯即服務,最后是使用UNIX命令部署這些服務。由于創(chuàng)建數(shù)據(jù)庫工作非常成熟,因此本文不在對此進行介紹。重點介紹如何創(chuàng)建服務和部署服務。
3.1 用EC語言(在C語言重加入Informix的數(shù)據(jù)庫操作功能)編寫服務,例如取話費服務我們定義為服務M3006。對于該服務的實現(xiàn)描述采取類C語言(其他服務在原理上是一致的),算法實現(xiàn)描述如下:
2.2 客戶端
(1)通過客服中心進行話費查詢。
(2)通過營業(yè)廳進行話費查詢。
3 結(jié)論
數(shù)據(jù)庫應用系統(tǒng)正在由兩層結(jié)構(gòu)向三層結(jié)構(gòu)過渡,本文具體介紹了三層結(jié)構(gòu)在電信服務系統(tǒng)上的設計與實現(xiàn),本系統(tǒng)具有如下特點。
(1)開發(fā)效率高:話費查詢等業(yè)務邏輯只開發(fā)了一次,但是在多個地方使用,使用時只是簡單的系統(tǒng)調(diào)用,不涉及到數(shù)據(jù)庫操作,因此開發(fā)效率非常高。
(2)系統(tǒng)性能好:例如話費查詢對電信服務系統(tǒng)是一個非常普遍的操作,但是本系統(tǒng)的查詢不是直接訪問數(shù)據(jù)庫,因此數(shù)據(jù)庫的性能不會因為訪問量的變大而下降。
(3)系統(tǒng)維護非常方便:如果數(shù)據(jù)庫表結(jié)構(gòu)改變了,則只須更改用E C寫的業(yè)務邏輯,而對于應用而言,無論是delphi開發(fā)的營業(yè)廳,還是VB開發(fā)的客服中心,還是jsp開發(fā)的web應用,都不需做任何的改動。
(4)本系統(tǒng)提供了多應用接口,客戶可以使用電話、web、等多種不同的接入方式,從而極大地方便了客戶對系統(tǒng)的訪問。
參考文獻
[1]蔡黃輝,馬文濤.架構(gòu)實戰(zhàn):軟件架構(gòu)設計的過程[M].機械工業(yè)出版社,2010,4.
[2]陸川.IBM Informix11.x系統(tǒng)管理與開發(fā)指南[M].電子工業(yè)出版社,2012,9.
[3]徐春晶.Tuxedo中間件開發(fā)與配置[M].中國電力出版社,2003,7.