- 相關推薦
PowerBuilder的分布式計算技術及其應用
PowerBuilder的分布式計算技術及其應用 浙江大學計算機系 梁榮華 浙江大學計算機系 史濟建 杭州電子工業(yè)學院計算機系 周其力摘要: 本文分析了客戶機/服務器的二級體系結構缺點與不足,介紹了客戶機/服務器的分布式計算體系結構的優(yōu)點,重點論述了分布式計算體系結構在PowerBuider6中的實現(xiàn),并給出了具體的應用實例,最后給出了結論。
關鍵詞:客戶機/服務器 分布式計算 二級體系結構 三級體系結構 客戶應用程序 服務器應用程序
引言
90年代,人們開發(fā)MIS系統(tǒng)大都采用客戶機/服務器結構,客戶機/服務器結構既是硬件結構又是軟件結構。即數(shù)據(jù)放在服務器上,程序在客戶機上。進行數(shù)據(jù)訪問時,由客戶機提出請求(一般是SQL語句),服務器執(zhí)行并給出結果?蛻魴C/服務器對于優(yōu)化了網(wǎng)絡,提高了系統(tǒng)的利用率。客戶機/服務器體系結構的發(fā)展經(jīng)歷了從二級體系結構模式到三級體系結構模式。
1 二級體系結構模式
傳統(tǒng)的客戶機/服務器的模式是二級體系結構(Two-tier model)模式。結構圖如圖1
用戶界面與邏輯事務駐留在客戶計算機上,將大部分的數(shù)據(jù)存放在數(shù)據(jù)庫中,對數(shù)據(jù)的操作如查詢、修改等由客戶機提出請求,數(shù)據(jù)庫服務器完成并返回給客戶機結果,這種體系結構雖然可以系統(tǒng)的性能,但它們具有明顯的缺點:
缺乏安全性
在客戶機上存取敏感性數(shù)據(jù)時,由于邏輯事務放在服務器中,所以用戶可以訪問邏輯事務的核心部分,這使得未授權用戶容易侵入系統(tǒng),有安全漏洞。
重的客戶機負荷
隨著客戶機要求處理的事務的數(shù)目增多,系統(tǒng)的任務日益繁重,導致系統(tǒng)的吞吐量下降,使得客戶機不能滿足系統(tǒng)的要求,當然可以買一臺更大的機器來替代舊的客戶機器,但在經(jīng)濟方面不如買一臺機器來分擔客戶機的某些任務。
鑒于此,人們提出了三級體系結構模式(見圖2)。
2分布式計算體系結構
在該模式中,用戶界面保存在客戶端,事務邏輯保存在應用服務器中,數(shù)據(jù)保存在數(shù)據(jù)庫服務器中。客戶機只負責提供用戶界面,當需要進行數(shù)據(jù)訪問時或復雜計算時,客戶機向應用服務器發(fā)出請求,應用服務器響應客戶機的請求,完成復雜的計算或者向數(shù)據(jù)庫服務器發(fā)送SQL語句由數(shù)據(jù)庫服務器完成相應的數(shù)據(jù)操作,最后由應用服務器將結果返回給客戶機。該模式也稱三級體系結構模式,PowerBuilder對于該模式是支持的。需要說明的是,三級體系結構模式的三級是指邏輯上的三級(即用戶界面、事務邏輯、數(shù)據(jù))而不是物理的三級。(具體見圖二)
對于二級模式,分布式計算體系結構提供了解決方式,分布式計算技術通過將用戶界面與事務邏輯分開,這使得未授權用戶很難侵入系統(tǒng),保證了系統(tǒng)的安全性;同時由于客戶機只處理用戶界面,大量的事務處理在服務器應用程序?qū)崿F(xiàn),大大減輕了客戶機的負荷,使瘦客戶成為可能。
二、分布式應用的體系結構在PowerBuidler中的實現(xiàn)
分布式PowerBuilder 應用程序典型使用兩個應用程序,即服務器應用程序和客戶應用程序,分別在兩臺機器上實現(xiàn)。
服務器與客戶應用程序一起實現(xiàn)事務應用,客戶應用程序處理用戶界面,與用戶交互,服務器應用程序提供給客戶應用程序提供必要的數(shù)據(jù)包,應用程序?qū)蛻魬贸绦蛲该。結構圖見圖3。
盡管服務應用通常提供數(shù)據(jù)包給客戶應用程序,但服務器應用程序本身也可以作客戶應用程序功能,換言之,服務器應用程序能作為客戶應用程序與另一服務器應用程序連結,這時,這個服務應用程序作為客戶應用程序與另一應用程序的中介等。
2.1服務器應用程序
服務器應用程序提供了兩個主要的組件:傳送對象(Transport object)、遠程對象(Remote object)。
傳送對象使之能為服務器應用程序收到客戶連接并處理客戶請求。
在分布式應用中,客戶能調(diào)用服務器提供的服務,通過遠程對象提供,一般地,一個遠程對象是一個NVO(nonvisual user object)-----不可視用戶對象,包含在遠程服務器上,一個客戶能調(diào)用遠程對象提供的功能,就好象他們被定義在本地的對象一樣,也就是說,客戶應用程序能調(diào)用遠程的對象,與同一臺計算機或另一臺網(wǎng)絡上的計算機各自執(zhí)行程序完成某項功能,PowerBuiler對遠程對象的調(diào)用有同步與異步調(diào)用。當同步調(diào)用時,客戶等待直到服務器處理完成,當異步調(diào)用時,服務器只在自己的隊列中增加一個請求隊列,以后處理之,同時,客戶機去做其他的事情,直到服務器處理該請求。
2.2客戶端應用程序
客戶端應用程序有三個組件
用戶界面(user interface)
連接對象(Connection object)
遠程對象的類定義(remote object class definitions)
結構圖見圖5
用戶界面
客戶應用程序包含與用戶的交互,除此之外,客戶包含執(zhí)行腳本,對于客戶采取的反應。例如,這些腳本能規(guī)定當用戶點了按紐會發(fā)生什么事件等。
連接對象
該對象提供了客戶應用程序連接到服務器應用程序,并要求服務.
遠程對象的類定義
每個服務器應用程序的遠程對象在客戶應在程序中有相關的類定義。遠程對象定義的本地的拷貝與服務器應在程序的定義有一個相同的名字,執(zhí)行期間,本地定義的對象允許客戶訪問,就如遠程對象實例就象在本地一樣。
類定義在客戶應在程序中包含了遠程對象的完全或部分功能,Proxy(代理) 對象提供了遠程對象界面的表示,對分布式處理,只有Proxy對象在客戶應在程序是必須的。在客戶應在程序中,對象透明,當你在客戶應在程序利用遠程對象類定義,客戶端的定義與服務器端的定義一致。考慮到這兩個定義有相同的名字,PowerBuiler提供了這種透明技術。用這個類定義的變量能保持本地對實例的引用。執(zhí)行時,你能初始化本地的對象或遠程對象,這依賴你的應用要求。
2.3通訊方式
PowerBuiler的分布式技術中支持以下幾個通訊協(xié)議
Winsock
在支持TCP/IP的網(wǎng)絡中,利用WINDOWS SOCKETS工具通訊。只要支持TCP/IP的網(wǎng)絡都可以用該方式。
Names pipes, 通過命名的管道進行通訊。
local, 指在分布式應用程序可在本地運行。
不同的運行平臺支持不同的通訊方式.
三、 應用程序舉例(PowerBuiler的實例)
在客戶機/服務器中,一個比較典型的例子是實現(xiàn)服務器推拉(Sever Push)
,客戶機請求服務器稱為拉,服務器響應客戶機請求并將消息發(fā)回給客戶機稱為推。
本例子功能是這樣的,由客戶機應用程序向服務器應用程序發(fā)出請求(為簡單起見,請求服務是一條消息),服務器應用程序收到消息后,做一些數(shù)據(jù)處理或其他的工作,完成之后,給客戶機應用程序返回一條消息告知請求服務完成。
本例子代碼解釋如下:首先建立即兩個NVO,一個是Uo_Custdata, 一個是Uo_response_Object, 在 Uo_response_object中,有一個用戶對象函數(shù)Doneprocessing(),該函數(shù)執(zhí)行一個提示窗口,給客戶機發(fā)布消息,說明處理數(shù)據(jù)完畢。在Uo_Custdata中建立一個處理數(shù)據(jù)的函數(shù)process_data,其參數(shù)包含Uo_response_Object。將包含該用戶對象的文件編譯成proxy,如a.pbl在客戶應用程序中包含a.pbl即可。在客戶機應用程序中,先建立connection對象,定義connection的屬性,然后創(chuàng)建 remote object(用Create Instance),本例子是Uo_Custdata,再調(diào)用remote object的一個函數(shù)(也就是process_data);在服務器應用程序中,先建立transport對象,定義transport對象的屬性,然后等待客戶提出請求(用listen函數(shù))。
源程序如下:
// ------------------客戶機應用程序
//定義connection
connection myconnect
long ll_rc
//用Create建立實例
myconnect = create connection
//設置Connect屬性
myconnect.driver = "WinSock"
myconnect.application = "70000"
myconnect.location = "server01"
ll_rc = myconnect.ConnectToSe ver()
IF ll_rc <> 0 THEN MessageBox(“警告”,"連結錯誤")
END If
// 調(diào)用remote object(服務器應用程序提供)
// Mycustdata 是服務器應用程序的NVO,將包含該user object的文件編譯成//proxy,在客戶應用程序中包含proxy的pbl文件。
Uo_custdata Mycustdata
Uo_response_object Myresponseobject
…….
Myconnect.createInstance(Mycustdata)
Myresponceobject=Create.Uo_response_object
Mycustdata.post process_data(Myresponceobject)
// ---------用戶對象
// uo_custdata的函數(shù)process_data
參數(shù):Uo_response_object.responceobject
…….//做一些數(shù)據(jù)處理的工作
給客戶發(fā)布消息,說明處理數(shù)據(jù)完畢
Responceobject.post Doneprocessing()
// Uo_response_object 的函數(shù)Doneprocessing
Messagebox(“提示”,“處理完畢”);
//----------服務器應用程序
TransPort myTransPort
//建立transport對象
myTransProt=create TransPort
//定義transport對象的屬性,
myTransPort.Driver='WinSock'
myTransPort.application='70000'
//然后等待客戶提出請求。
MyTransPort.listen()
當然,在基于一般中大型數(shù)據(jù)庫系統(tǒng),基于WEB方式體系統(tǒng)結構,客戶應用程序?qū)τ跀?shù)據(jù)庫的操作都可以用通過應用服務器程序,這樣客戶程序就很瘦了,不需要安裝如Open Client之類的軟件;另外,應用服務器程序可同時運行在幾臺計算機上,它對于系統(tǒng)的安全性,平衡網(wǎng)絡負載都具有重要的現(xiàn)實意義,在PowerBuilder中都是能實現(xiàn)的。
四、結論
PowerBuider5就已經(jīng)提出了分布式計算技術,但使用起來較為煩瑣,這主要表現(xiàn)在編寫Proxy,PowerBuilder6 通過程序直接編譯成proxy,并且功能增強了許多,使分布式計算技術更為方便,剛出來的PowerBuider7更為方便、完善,這對于解決網(wǎng)絡瓶頸,優(yōu)化網(wǎng)絡具有重大的現(xiàn)實意義。
[參考文獻]
1.Simmon Gallegher 、simmon Herbert 《PowerBuilder6.0程序設計大全》 機械工業(yè)出版社 1998、8
2.鐘虎林等新一代客戶機/服務器體系結構計算機系統(tǒng)應用 1998第一期
3.Paul E.Renaud 《客戶機/服務器系統(tǒng)入門必讀》電子工業(yè)出版社 1995、6
4、Application Techniques------PowerBuider version6Document number AA0518 SYBASE 1997.10
5 、湯子瀛等 《計算機實用網(wǎng)絡技術教程》杭州大學出版社 1998.8
6 、黃允聰?shù)取毒W(wǎng)絡安全基礎》清華大學出版社 1999.2
【PowerBuilder的分布式計算技術及其應用】相關文章:
淺談云計算技術_分布式08-18
分布式對象技術及其在Web上的應用08-09
分布式對象技術及其在Web上的應用08-06
利用PowerBuilder開發(fā)WEB應用08-06
利用PowerBuilder開發(fā)WEB應用08-06
利用PowerBuilder開發(fā)WEB應用08-06
利用PowerBuilder開發(fā)WEB應用08-06
Powerbuilder6.5應用實例08-12