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