採用Sybase、PowerBuilder、Notes構建B/S應用系統

採用Sybase、PowerBuilder、Notes構建B/S應用系統

(加入日期:2001-4-25)

保存文章至硬盤】【打印文章】【字體:

分享到: 0
華中理工大學計算機學院 黃保華 胡和平

---- 採用B/S(瀏覽器/服務器)模式是目前應用系統設計開發的主要特徵,採用Sybase、PowerBuilder、Notes共同實現B/S模式能夠滿足各種應用功能要求,開發效率高,便於原有C/S(客戶/服務器)模式應用向B/S模式應用平滑過渡,是一種經濟適用的B/S模式實現新穎方法。

---- 1、 從C/S到B/S

---- 傳統的C/S模式下應用系統一般由服務器(Server)和客戶端應用程序(App)組成,如圖1(略)。數據(Data)一般存放在服務器上,應用程序一般存放在客戶端計算機上。這樣的系統雖然解決了數據共享等問題,但卻具有不易維護、操作風格不一致、能夠處理的數據類型不易擴展等缺點。隨着網絡應用系統的發展,傳統C/S模式應用系統的缺點不斷暴露出來,促使B/S模式應用系統的產生和發展。

---- B/S模式應用系統由瀏覽器(Browser)和服務器(Web Server、Other Server、Middle Ware)組成。數據(data)和應用程序(App)都存放在服務器上,瀏覽器功能可以通過下載服務器上應用程序得到動態擴展,服務器具有多層結構,B/S系統處理的數據類型可以動態擴展。以B/S模式開發的系統維護工作集中在服務器上,客戶端不用維護,操作風格比較一致,只要有瀏覽器的合法用戶都可以十分容易地使用。

---- 2、 實現概述

---- Sybase是一種成熟的商品化數據庫管理系統,PowerBuilder是業界公認的數據庫應用最優開發工具之一,Notes是目前最著名的羣件系統,用這三個產品共同構建B/S模式應用,Sybase完成結構化數據管理,PowerBuilder開發的應用完成數據庫結構化數據的維護, Notes完成數據流的管理和非結構化複合文檔管理。這樣的B/S實現方法可以重用原有C/S原代碼,重用開發人員經驗和知識,具有很高的開發效率。

---- 3、 技術細節

---- 3.1、 Sybase與Web

---- Sybase與Web雖然可以通過Sybase提供的工具(如Web.SQL等)進行交互,但很多情況下需要更經濟實用的解決辦法。這裏介紹一種利用Sybase固有工具Isql進行交互的方法,這種方法對傳統C/S開發人員很有用,因爲他們可以利用已有知識進行Web編程。本方法實現思路爲Web Server調用CGI腳本,在CGI腳本中遠行Isql,Isql在Sybase SQL Server 中運行存儲過程,存儲過程使用Print語句通過標準輸入/輸出向Web Server返回需要的數據。下面是一個在Sun Solaris環境下Web與Sybase交互的例子

URL:http://www.cggc.com/cgi-bin/test.cgi?abced
Test.cgi內容爲
#!$                        #用Unix Shell執行CGI
Echo “html/plain”        #CGI返回html文本
Echo “”
Echo “< html >< title >Test < /title >”
Echo pweb_test  > $REMOTE_ADDR   
#將存儲過程名寫入用請求者IP地址爲名創建的文件
Echo $QUERY_STRING  > > $REMOTE_ADDR  
#將參數追加到創建的文件中
Echo go  > > $REMOTE_ADDR             
Isql –Uhttpuser –Phttpuserpassword < $REMOTE_ADDR  
#運行Isql並以創建的文件爲輸入
Rm $REMOTE_ADDR                     
#刪除創建的文件
Echo “-- >”                         
#與“< !--”配合將存儲過程執行結果狀態屏蔽
Echo “< /html >”
Pweb_test的創建腳本內容爲
create procedure pweb_test @qstr char(100)
As
Declare @stmp char(100)
Select @stmp = field2 from test where field1=@qstr     
--數據庫數據處理
Print “< body >”
Print “The result from Sybase sql server is ”
Print @stmp
Print “< /body >”
Print  “< !—”                   
--與“— >”配合將存儲過程執行結果狀態屏蔽

---- 3.2、 PowerBuilder與Web
---- PowerBuilder可以採用插件及ActiveX控件、Web.pb 等與Web交互。插件及ActiveX控件都要求在客戶端安裝PowerBuilder運行時刻動態連接庫和連接數據庫。Web.pb沒有這些要求,但不能直接處理複雜用戶界面,因爲Web.pb一般返回HTML。

---- 3.2.1、使用插件

---- PowerBuilder提供Window插件和Datawindow插件。使用Window插件要在HTML中使用如下格式標記

< EMBED SRC=test.pbd WIDTH=300 HEIGHT=200 WINDOW=w_test >
---- SRC屬性指定插件使用的pbd位置,利用Window插件的應用必須編譯成pbd。Window屬性指定在瀏覽器中嵌入窗體的名字,這個窗體必須是ChildWindow類型,但通過本窗體可打開Popup和response類型窗體。標記還有可選的LIBRARY和COMMANDPAM屬性,前者用於指定附加的pbd,後者用於向嵌入的窗體傳遞參數。
---- 使用Datawindow插件要在HTML中使用如下格式標記

< EMBED src=test.psr WIDTH=370 HEIGHT=320 >
---- src指定所用psr所在的位置,spr由Datawindow保存得到,因而只能處理靜態數據。
---- 3.2.2、使用Window ActiveX控件

---- 與Window插件相比,Window ActiveX控件與HTML具有更好的互操作性,在HTML中可以通過script對Window ActiveX控件進行操縱,在Window ActiveX控件中也可以觸發script運行。以下是一個使用Window ActiveX的實例:

< OBJECT NAME="PBRXtest" WIDTH=225 HEIGHT=83
CLASSID="CLSID:CEC58653-C842-11CF-A6FB-00805FA8669E"
PARAM NAME="PBWindow" VALUE="w_test"  PARAM NAME="LibList" VALUE="test.pbd;"  …  >

---- 參數LibList指定使用的pbd列表,pbd間用逗號分隔,採用Window ActiveX控件的PowerBuilder應用必須編譯成pbd。參數Pbwindow指定要嵌入的窗體名。
---- 3.2.3、使用Web.pb

---- Web.pb是一種應用服務器技術,Web.pb以CGI/ISAPI/NSAPI的形式充當Web Server與應用服務器之間的接口,HTML將要調用的應用服務器處理過程以參數的形式傳遞給Web.pb,Web.pb調用應用服務器中的相應處理過程並將處理結果返回給Web Server。在這種集成模式中,數據庫連接發生在應用服務器,客戶端可以做得很“瘦”。應用服務器是用PowerBuilder編程實現的,編程過程中與數據庫的交互與通常PowerBuilder編程方法相同,與Web.pb交互要用到Transport對象,被Web.pb調用的用戶對象成員函數要聲明爲接口。具體的實現過程可以參考PowerBuilder IT目錄下的實例。

---- 3.3、 Notes與Web

---- Notes通過其Dominal Web Server實現與Web的無縫連接,Web用戶可以直接通過Domianl Web Server打開Notes數據庫、導航器、視圖、文檔等。實現Notes與Web交互的過程如下:

---- 3.3.1、 配置Dominal Web Server

---- 打開服務器通信錄,選擇“Server”下的“服務器”項,打開服務器文檔,選擇“Http服務器”節,設置TCP/IP端口(如“8888”)、缺省字符集(如“簡體中文”)等,保存服務器文檔。修改Notes.ini,在“ServerTasks=”行最末尾加入“,http”,重新啓動Notes服務器。

---- 3.3.2、 B/S模式下Notes數據庫設計

---- Notes數據庫設計包括視圖、導航器、表單設計及相應編程。爲便於瀏覽器訪問,Notes數據庫的啓動屬性可以設爲“打開一指定導航器”。

---- 瀏覽器可以訪問的Notes導航器必須包含一個背景圖片,然後可以放其它導航部件。爲使導航器在瀏覽器中能夠正確顯示,要爲導航器創建導航器模板表單,起名爲$$NavigatorTemplate for navname,navname爲導航器別名,在本表單中包含一個表格行,本行分兩列,一列含$$NavigatorBody域,另一列含$$ViewBody域,各列寬度將代表導航行部分和視圖部分所佔的寬度,將導航器所用視圖名稱作爲$$ViewBody域缺省值。

---- Web訪問對視圖和表單設計沒有特殊要求,按通常Notes設計方法設計既可。

---- 3.3.3、 Html中連接Notes資源

---- 通過Notes Dominal Web Server可以直接訪問Notes數據庫、導航器、視圖和文檔,方法如下,URL中test.nsf爲Notes庫名稱。

---- 打開數據庫:

---- http://www.cggc.com:8888/test.nsf?OpenDatabase,OpenDatabase爲Dominal Web Server命令。Dominal Web Server將根據Notes數據庫啓動屬性的設置確定打開導航器或視圖。

---- 打開導航器

---- http://www.cggc.com:8888/test.nsf/navtest?OpenNavigator,test.navtest爲導航器名稱,OpenNaviagtor爲Dominal Web Server命令

---- 打開視圖:

---- http://www.cggc.com:8888/test.nsf/testview?Openview,testview爲視圖名,OpenView爲Dominal Web Server命令。

---- 打開文檔:

---- http://www.cggc.com:8888/test.nsf/testdocument?OpenDocument,testdocument爲Notes文檔編號,這個編號通常很長,所以一般不直接使用這種方式打開文檔,而是通過Notes視圖打開文檔。

---- Notes Dominal Web Server還支持其他一些命令,如OpenServer,OpenForm,OpenAgent等,有關這些命令的使用可具體參考Notes連機文檔。

---- 4、 結束語

---- B/S應用在近兩年得到了長足發展,各種新的B/S技術不斷涌現,但在此之前許多單位已經利用Sybase、PowerBuilder、Notes等開發了大量C/S模式應用,以Sybase、PowerBuilder、Notes爲基礎的B/S模式實現方法使這些應用只需稍作修改就可以移植到B/S模式,保護了這些單位的投資,同時也使熟悉這些系統的開發人員可以輕鬆開發B/S應用。另外這種方法從較高層次充分利用各種產品優勢進行開發,具有很高的開發效率。 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章