1. <code id="ya7qu"><span id="ya7qu"><label id="ya7qu"></label></span></code>

    <b id="ya7qu"><bdo id="ya7qu"></bdo></b>
    <wbr id="ya7qu"><optgroup id="ya7qu"><strike id="ya7qu"></strike></optgroup></wbr>
  2. <u id="ya7qu"><bdo id="ya7qu"></bdo></u>
    現在位置:范文先生網>理工論文>計算機論文>PowerBuilder的分布式計算技術及其應用

    PowerBuilder的分布式計算技術及其應用

    時間:2023-02-20 22:42:19 計算機論文 我要投稿
    • 相關推薦

    PowerBuilder的分布式計算技術及其應用

    PowerBuilder的分布式計算技術及其應用

    浙江大學計算機系  梁榮華

    浙江大學計算機系  史濟建

    杭州電子工業學院計算機系  周其力

    摘要: 本文分析了客戶機/服務器的二級體系結構缺點與不足,介紹了客戶機/服務器的分布式計算體系結構的優點,重點論述了分布式計算體系結構在PowerBuider6中的實現,并給出了具體的應用實例,最后給出了結論。

    關鍵詞:客戶機/服務器 分布式計算 二級體系結構 三級體系結構 客戶應用程序 服務器應用程序

    引言
    90年代,人們開發MIS系統大都采用客戶機/服務器結構,客戶機/服務器結構既是硬件結構又是軟件結構。即數據放在服務器上,程序在客戶機上。進行數據訪問時,由客戶機提出請求(一般是SQL語句),服務器執行并給出結果。客戶機/服務器對于優化了網絡,提高了系統的利用率。客戶機/服務器體系結構的發展經歷了從二級體系結構模式到三級體系結構模式。

    1 二級體系結構模式

    傳統的客戶機/服務器的模式是二級體系結構(Two-tier model)模式。結構圖如圖1

    用戶界面與邏輯事務駐留在客戶計算機上,將大部分的數據存放在數據庫中,對數據的操作如查詢、修改等由客戶機提出請求,數據庫服務器完成并返回給客戶機結果,這種體系結構雖然可以系統的性能,但它們具有明顯的缺點:

    缺乏安全性
    在客戶機上存取敏感性數據時,由于邏輯事務放在服務器中,所以用戶可以訪問邏輯事務的核心部分,這使得未授權用戶容易侵入系統,有安全漏洞。

    重的客戶機負荷
    隨著客戶機要求處理的事務的數目增多,系統的任務日益繁重,導致系統的吞吐量下降,使得客戶機不能滿足系統的要求,當然可以買一臺更大的機器來替代舊的客戶機器,但在經濟方面不如買一臺機器來分擔客戶機的某些任務。

    鑒于此,人們提出了三級體系結構模式(見圖2)。

    2分布式計算體系結構

    在該模式中,用戶界面保存在客戶端,事務邏輯保存在應用服務器中,數據保存在數據庫服務器中。客戶機只負責提供用戶界面,當需要進行數據訪問時或復雜計算時,客戶機向應用服務器發出請求,應用服務器響應客戶機的請求,完成復雜的計算或者向數據庫服務器發送SQL語句由數據庫服務器完成相應的數據操作,最后由應用服務器將結果返回給客戶機。該模式也稱三級體系結構模式,PowerBuilder對于該模式是支持的。需要說明的是,三級體系結構模式的三級是指邏輯上的三級(即用戶界面、事務邏輯、數據)而不是物理的三級。(具體見圖二)

    對于二級模式,分布式計算體系結構提供了解決方式,分布式計算技術通過將用戶界面與事務邏輯分開,這使得未授權用戶很難侵入系統,保證了系統的安全性;同時由于客戶機只處理用戶界面,大量的事務處理在服務器應用程序實現,大大減輕了客戶機的負荷,使瘦客戶成為可能。

    二、分布式應用的體系結構在PowerBuidler中的實現

    分布式PowerBuilder 應用程序典型使用兩個應用程序,即服務器應用程序和客戶應用程序,分別在兩臺機器上實現。

    服務器與客戶應用程序一起實現事務應用,客戶應用程序處理用戶界面,與用戶交互,服務器應用程序提供給客戶應用程序提供必要的數據包,應用程序對客戶應用程序透明。結構圖見圖3。

    盡管服務應用通常提供數據包給客戶應用程序,但服務器應用程序本身也可以作客戶應用程序功能,換言之,服務器應用程序能作為客戶應用程序與另一服務器應用程序連結,這時,這個服務應用程序作為客戶應用程序與另一應用程序的中介等。

    2.1服務器應用程序

    服務器應用程序提供了兩個主要的組件:傳送對象(Transport object)、遠程對象(Remote object)。


    傳送對象使之能為服務器應用程序收到客戶連接并處理客戶請求。

    在分布式應用中,客戶能調用服務器提供的服務,通過遠程對象提供,一般地,一個遠程對象是一個NVO(nonvisual user object)-----不可視用戶對象,包含在遠程服務器上,一個客戶能調用遠程對象提供的功能,就好象他們被定義在本地的對象一樣,也就是說,客戶應用程序能調用遠程的對象,與同一臺計算機或另一臺網絡上的計算機各自執行程序完成某項功能,PowerBuiler對遠程對象的調用有同步與異步調用。當同步調用時,客戶等待直到服務器處理完成,當異步調用時,服務器只在自己的隊列中增加一個請求隊列,以后處理之,同時,客戶機去做其他的事情,直到服務器處理該請求。

    2.2客戶端應用程序

    客戶端應用程序有三個組件

    用戶界面(user interface)
    連接對象(Connection object)
    遠程對象的類定義(remote object class definitions)
    結構圖見圖5

    用戶界面
    客戶應用程序包含與用戶的交互,除此之外,客戶包含執行腳本,對于客戶采取的反應。例如,這些腳本能規定當用戶點了按紐會發生什么事件等。

    連接對象
    該對象提供了客戶應用程序連接到服務器應用程序,并要求服務.

    遠程對象的類定義
    每個服務器應用程序的遠程對象在客戶應在程序中有相關的類定義。遠程對象定義的本地的拷貝與服務器應在程序的定義有一個相同的名字,執行期間,本地定義的對象允許客戶訪問,就如遠程對象實例就象在本地一樣。

    類定義在客戶應在程序中包含了遠程對象的完全或部分功能,Proxy(代理) 對象提供了遠程對象界面的表示,對分布式處理,只有Proxy對象在客戶應在程序是必須的。在客戶應在程序中,對象透明,當你在客戶應在程序利用遠程對象類定義,客戶端的定義與服務器端的定義一致。考慮到這兩個定義有相同的名字,PowerBuiler提供了這種透明技術。用這個類定義的變量能保持本地對實例的引用。執行時,你能初始化本地的對象或遠程對象,這依賴你的應用要求。

    2.3通訊方式

    PowerBuiler的分布式技術中支持以下幾個通訊協議

    Winsock
    在支持TCP/IP的網絡中,利用WINDOWS SOCKETS工具通訊。只要支持TCP/IP的網絡都可以用該方式。

    Names pipes, 通過命名的管道進行通訊。
    local, 指在分布式應用程序可在本地運行。
    不同的運行平臺支持不同的通訊方式.

    三、 應用程序舉例(PowerBuiler的實例)

    在客戶機/服務器中,一個比較典型的例子是實現服務器推拉(Sever Push)

    ,客戶機請求服務器稱為拉,服務器響應客戶機請求并將消息發回給客戶機稱為推。

    本例子功能是這樣的,由客戶機應用程序向服務器應用程序發出請求(為簡單起見,請求服務是一條消息),服務器應用程序收到消息后,做一些數據處理或其他的工作,完成之后,給客戶機應用程序返回一條消息告知請求服務完成。

    本例子代碼解釋如下:首先建立即兩個NVO,一個是Uo_Custdata, 一個是Uo_response_Object, 在 Uo_response_object中,有一個用戶對象函數Doneprocessing(),該函數執行一個提示窗口,給客戶機發布消息,說明處理數據完畢。在Uo_Custdata中建立一個處理數據的函數process_data,其參數包含Uo_response_Object。將包含該用戶對象的文件編譯成proxy,如a.pbl在客戶應用程序中包含a.pbl即可。在客戶機應用程序中,先建立connection對象,定義connection的屬性,然后創建 remote object(用Create Instance),本例子是Uo_Custdata,再調用remote object的一個函數(也就是process_data);在服務器應用程序中,先建立transport對象,定義transport對象的屬性,然后等待客戶提出請求(用listen函數)。

    源程序如下:

    // ------------------客戶機應用程序

    //定義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

    // 調用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的函數process_data

    參數:Uo_response_object.responceobject

    …….//做一些數據處理的工作


    給客戶發布消息,說明處理數據完畢

    Responceobject.post Doneprocessing()

    // Uo_response_object 的函數Doneprocessing

    Messagebox(“提示”,“處理完畢”);

    //----------服務器應用程序

    TransPort myTransPort

    //建立transport對象

    myTransProt=create TransPort

    //定義transport對象的屬性,

    myTransPort.Driver='WinSock'

    myTransPort.application='70000'

    //然后等待客戶提出請求。

    MyTransPort.listen()

    當然,在基于一般中大型數據庫系統,基于WEB方式體系統結構,客戶應用程序對于數據庫的操作都可以用通過應用服務器程序,這樣客戶程序就很瘦了,不需要安裝如Open Client之類的軟件;另外,應用服務器程序可同時運行在幾臺計算機上,它對于系統的安全性,平衡網絡負載都具有重要的現實意義,在PowerBuilder中都是能實現的。

    四、結論

    PowerBuider5就已經提出了分布式計算技術,但使用起來較為煩瑣,這主要表現在編寫Proxy,PowerBuilder6 通過程序直接編譯成proxy,并且功能增強了許多,使分布式計算技術更為方便,剛出來的PowerBuider7更為方便、完善,這對于解決網絡瓶頸,優化網絡具有重大的現實意義。

    [參考文獻]

    1.Simmon Gallegher 、simmon Herbert 《PowerBuilder6.0程序設計大全》 機械工業出版社 1998、8

    2.鐘虎林等新一代客戶機/服務器體系結構計算機系統應用 1998第一期

    3.Paul E.Renaud 《客戶機/服務器系統入門必讀》電子工業出版社 1995、6

    4、Application Techniques------PowerBuider version6Document number AA0518 SYBASE 1997.10

    5 、湯子瀛等 《計算機實用網絡技術教程》杭州大學出版社 1998.8

    6 、黃允聰等《網絡安全基礎》清華大學出版社 1999.2


    【PowerBuilder的分布式計算技術及其應用】相關文章:

    淺談云計算技術_分布式08-18

    分布式對象技術及其在Web上的應用08-09

    分布式對象技術及其在Web上的應用08-06

    利用PowerBuilder開發WEB應用08-06

    利用PowerBuilder開發WEB應用08-06

    利用PowerBuilder開發WEB應用08-06

    利用PowerBuilder開發WEB應用08-06

    Powerbuilder6.5應用實例08-12

    Powerbuilder中樹形視圖的實現與應用08-06

    国产福利萌白酱精品tv一区_日韩亚洲中字无码一区二区三区_亚洲欧洲高清无码在线_全黄无码免费一级毛片
    1. <code id="ya7qu"><span id="ya7qu"><label id="ya7qu"></label></span></code>

      <b id="ya7qu"><bdo id="ya7qu"></bdo></b>
      <wbr id="ya7qu"><optgroup id="ya7qu"><strike id="ya7qu"></strike></optgroup></wbr>
    2. <u id="ya7qu"><bdo id="ya7qu"></bdo></u>
      亚洲国产精品高清线久久AV | 综合亚洲日本日日摸夜夜添 | 日本一区二区三区精品道不卡 | 亚洲性爱图一区二区三区 | 亚洲真实迷奷系列在线播放 | 亚洲A∨电影免费在线 |