- 論壇徽章:
- 0
|
************轉(zhuǎn)載自<軟件世界>; 孫彬、王東 ****************
【摘要】本文主要論述Powerbuilder6.0實現(xiàn) Browser/Server結(jié)構(gòu)的Internet解決方案和工作方式,對實現(xiàn)該方式的幾種重要模塊的數(shù)據(jù)流程進(jìn)行論述,最后給出實例。
PowerBuilder 6.0實現(xiàn)“Web瀏覽器-數(shù)據(jù)庫服務(wù)器”方案的前提條件是構(gòu)建分布式應(yīng)用體系。將 Powerbuilder6.0應(yīng)用分布到Internet結(jié)構(gòu)下,也就是把PowerBuilder 6.0客戶端應(yīng)用分布到Web服務(wù)器上,當(dāng)瀏覽器客戶端向Web 服務(wù)器發(fā)出服務(wù)請求時,Web服務(wù)器自動調(diào)用Powerbuilder應(yīng)用軟件系統(tǒng), 從而實現(xiàn)各種業(yè)務(wù)軟件的Internet結(jié)構(gòu)功能。
一、組成Browser/Server結(jié)構(gòu)的模塊結(jié)構(gòu)。
由上圖所示, 用 Powerbuilder6. 0 開發(fā)的各種基于Internet的應(yīng)用,是利用PowerBuilder6.0 提供的分布式應(yīng)用技術(shù)及PowerScripts編程技術(shù)來實現(xiàn)的,相當(dāng)于編寫分布式應(yīng)用環(huán)境下的服務(wù)器應(yīng)用。例如采用PowerScripts語言環(huán)境、數(shù)據(jù)窗口技術(shù)等。其制作流程及工作原理是:
1. 建立及配置 Web 服務(wù)器。 PowerBuilder 中自帶O'Reilly公司基于WindowsNT 3.51以上版本和Win 95/98平臺的32位多線程個人Web服務(wù)器WebSite 1.1版。該Web 服務(wù)器提供了完整的Web服務(wù)創(chuàng)建、管理環(huán)境和安全機(jī)制。
2.在Web服務(wù)器上建立可執(zhí)行程序(Web.Pb)。Web.pb(Pbcgi60.exe)程序主要功能是調(diào)用PowerBuilder應(yīng)用服務(wù)器中預(yù)置的處理程序,包括分析執(zhí)行用戶對象中的用戶函數(shù),反饋HTML控制流和生成解釋插入件程序等。
Web.PB是用來開發(fā)基于Web應(yīng)用的基本部件,該部件本身就是Web上的一個網(wǎng)關(guān)應(yīng)用程序。該工具提供從 Web服務(wù)器到PowerBuilder應(yīng)用服務(wù)器的訪問,允許用戶在 Internet以及Intranet下,通過Web對數(shù)據(jù)庫進(jìn)行近于完全的操縱。同時,通過Web.PB,動態(tài)創(chuàng)建HTML文檔亦成為可能。Web.PB程序是Web服務(wù)器和 PowerBuilder應(yīng)用服務(wù)器相連接的橋梁。使用Web.PB構(gòu)建Web應(yīng)用有如下優(yōu)點:
a.支持CGI、ISAPI、NSAPI、MSAPI等多種網(wǎng)關(guān)程序接口。
b.支持PowerBuilder中數(shù)據(jù)窗口的引用。
c.易于將以前編寫的PowerBuilder應(yīng)用移植到Web環(huán)境下。
d.易于創(chuàng)建嵌入PowerBuilder應(yīng)用程序的HTML文件,應(yīng)用服務(wù)器在運(yùn)行環(huán)境下,將根據(jù)用戶需求, 動態(tài)生成HTML語法,發(fā)布完全動態(tài)的信息。
e.支持?jǐn)?shù)據(jù)庫連接。PowerBuilder所能夠連接到的數(shù)據(jù)庫都可以被瀏覽器用戶訪問到,使得 Web服務(wù)與數(shù)據(jù)庫服務(wù)通過Powerbuilder 6.0完整地結(jié)合起來。
3.建立PowerBuilder應(yīng)用服務(wù)器。PowerBuilder應(yīng)用服務(wù)器主要是一些用于激活Powerbuilder6.0 業(yè)務(wù)應(yīng)用的類庫程序組成。創(chuàng)建上圖所示的PowerBuilder應(yīng)用服務(wù)器時,須引用Powerbuilder6.0 Web類庫,類庫中定義了五種定制的類用戶對象,封裝了創(chuàng)建HTML語法及事務(wù)管理所需的函數(shù)、結(jié)構(gòu)和實例等多種實體,可用來創(chuàng)建HTML語法、管理客戶瀏覽器連接的狀態(tài)等。PowerBuilder 6.0應(yīng)用服務(wù)器相當(dāng)于分布式應(yīng)用中客戶端應(yīng)用,用于向PowerBuilder6.0業(yè)務(wù)應(yīng)用發(fā)出調(diào)用請求。執(zhí)行方法是:當(dāng)Powerbuilder6.0 應(yīng)用服務(wù)器監(jiān)聽到Web.PB的請求后,則啟動PowerBuilder應(yīng)用服務(wù)器中已預(yù)定義的業(yè)務(wù)處理程序。
例如,當(dāng)用戶在瀏覽器端使用Web瀏覽器(IE或Netscape)瀏覽頁面時,通過在HTML頁面中嵌入的 〈A〉或〈FORM〉元素,Web服務(wù)器可自動激活Web.PB應(yīng)用。活動的Web服務(wù)器首先調(diào)用PowerBuilder6.0的Web.PB類程序,作為PowerBuilder 分布式應(yīng)用中的客戶端應(yīng)用,建立與PowerBuilder 6.0應(yīng)用服務(wù)器的連接,然后調(diào)用PowerBuilder6.0應(yīng)用服務(wù)器中定義的各個業(yè)務(wù)功能,也就是用戶自定義對象中封裝的用戶函數(shù),包括數(shù)據(jù)庫訪問和文件處理等數(shù)據(jù)處理功能。
4.建立PowerBuilder業(yè)務(wù)應(yīng)用程序。在用戶自定義對象中,創(chuàng)建用戶自定義函數(shù)。功能要求是根據(jù)瀏覽器端用戶的需求,進(jìn)行業(yè)務(wù)數(shù)據(jù)處理,把處理結(jié)果以HTML頁格式,反饋給web.pb程序,經(jīng)常用于人事管理、財務(wù)管理、信息數(shù)據(jù)處理和系統(tǒng)管理等業(yè)務(wù)工作。
PowerBuilder業(yè)務(wù)應(yīng)用程序有插入件(Plug_ins)和嵌入HTML文件兩種風(fēng)格。Plug-ins(插入件)的使用方法又分成Window plug-ins和Datawindow plug-ins兩種。
Window plug-ins 插入件編制業(yè)務(wù)程序的的方法是 : 在HTML頁面上,嵌入并顯示PowerBuilder6.0中Child 類型的窗口對象,可放置數(shù)據(jù)窗口(DataWindow)、樹狀瀏覽(TreeView)、Tab頁等豐富多彩的控件類型, 豐富HTML頁面的表現(xiàn)形式。當(dāng)客戶端用瀏覽器瀏覽頁面時,Web服務(wù)器將PSR文件或PBD文件卸載給客戶,客戶瀏覽器接收到PSR文件和PBD文件,將Child窗口對象嵌入在Web 頁面中,如果嵌入的是窗口對象,則窗口上定義的功能在瀏覽器環(huán)境下同樣能使用,如窗口上定義了數(shù)據(jù)庫操縱的功能,則在瀏覽器客戶端能直接連接操縱數(shù)據(jù)庫。Plug-ins起到了將PowerBuilder6.0對象嵌入到頁面中的作用,數(shù)據(jù)窗口具有豐富的顯示風(fēng)格,用戶比較歡迎瀏覽器上“Powerbuilder Child類數(shù)據(jù)窗口”的數(shù)據(jù)表現(xiàn)形式。
Window ActiveX的使用方法與Window plug-ins類似,用來在HTML頁面中嵌入并顯示PowerBuilder中Child 類型的窗口對象。該組件可以和HTML中的VBScripts和JavaScripts交互使用。
單純嵌入HTML文件的方法是流行的編程趨勢, 也就是說根本不用插入件產(chǎn)品,客戶端只需安裝常規(guī)的Web瀏覽器,便能實現(xiàn)真正“瘦”的 Browser/Client/Server 結(jié)構(gòu)體系。
總之,Powerbuilder6.0 應(yīng)用服務(wù)器將業(yè)務(wù)處理程序的執(zhí)行結(jié)果以HTML格式返回給Web服務(wù)器。Web服務(wù)器再將HTML發(fā)布給用戶,客戶瀏覽器端在瀏覽器上接收到結(jié)果。
二、簡單的Internet應(yīng)用實例
1.選用Web服務(wù)器,配置Web.pb程序。Web服務(wù)器種類很多,在此選用Websuit1.1服務(wù)器,其它種類的Web 服務(wù)器類似。Web.pb程序包括pbcgi60.exe、psisa60.dll、pbnsl60.dll、pbns260.dll、webbagent.dll和pbweb.ini等文件。 注意:設(shè)置映射目錄/scripts/為c:\ website\ cgi-shl;將上述Web.pb文件復(fù)制到/scripts/目錄下;將pbweb.ini文件拷貝到WINDOWS NT或WINDOWS 95 的系統(tǒng)目錄下;在webpb.ini文件中加入以下內(nèi)容:
[pb60]
driver=winsock
application=10082
location=202.201.208.6
2.在Powerbuilder6.0開發(fā)平臺上,選取Internet選項,創(chuàng)建 Powerbuilder6. 0 應(yīng)用服務(wù)器。 技術(shù)要點是:建立Internet應(yīng)用,加入webpb.pbl 類庫文件并作啟動服務(wù)器的腳本,內(nèi)容是:
transport.mytransport
mytransport=create transport
mytransport="winsock"
my transport.location="202.201.208.6"
//PowerBuilder6.0應(yīng)用服務(wù)器監(jiān)聽地址
mytransport.application="10082"
//服務(wù)端口號
mytransport.listen()
//啟動監(jiān)聽服務(wù)
return
3、設(shè)置業(yè)務(wù)數(shù)據(jù)庫服務(wù)器和sybase SQL Anywhere本地庫wedpb.db的連接。其中業(yè)務(wù)數(shù)據(jù)存放到數(shù)據(jù)庫服務(wù)器,例如:SQL6.5、Sybase 11、Informix 6.0、Ingres和DB2等類型的數(shù)據(jù)庫;本地庫webpb.db中,只存放PowerBuilder 6.0應(yīng)用服務(wù)器的控制信息。
4、創(chuàng)建用戶對象,并為該用戶對象編寫處理腳本。例如:創(chuàng)建用戶對象ur,并給constructor事件編寫如下腳本:
mytransaction=create transaction
mytransaction.dbms='ODBC"
mytransaction.dbparm="Connectstring='DSN=WebPb'"
Connect using mytransaction;
if mytransaction.sqlcode〈〉0 then
messagebox("mytransaction.error="+string(mytransaction. &
sql_dbcode),mytransaction.sqlerrtext)
end if
sqlca.dbms="MSS (Msoft) SQL Server 6.5"
sqlca.DataBase="xyw"
sqlca.Userid="sa"
sqlca.ServerName="Server"
sqlca.logid="sa"
Connect using sqlca;
if sqlca.sqlcode〈〉0 then
messagebox("sqlca.error="+string(sqlca.sql_dbcode),sqlca.sqlerrtext)
end if
給destructor事件編寫如下腳本:
disconnect using mytransaction
disconnect using sqlca
目的是:當(dāng)Web.pb調(diào)用Powerbuilder6.0服務(wù)器時,用戶對象自動先建立與數(shù)據(jù)庫的連接,調(diào)用結(jié)束后斷開連接。
5、編寫用戶自定義函數(shù),各種業(yè)務(wù)工作的數(shù)據(jù)處理都由該類函數(shù)來完成。例如,在用戶對象UR上,創(chuàng)建一查詢功能的函數(shù)fp(),其內(nèi)容是:
string return_html
long ii
datastore data_fp
data_fp=create datastore
data_fp.dataobject="dw_fp"
//dw_fp為已經(jīng)做好的查詢數(shù)據(jù)窗口
data_fp.settransobject(mytransaction)
ii=date_fp.retrieve()
//檢索到的記錄數(shù)存入變量ii
if ii〉=1 then
return_html+=data_fp.object.datawindow.data.htmltable
else
return_html="沒有檢索到滿足條件的數(shù)據(jù)"
end if
return return_html
7、啟動服務(wù)器,再啟動Powerbuilder6.0應(yīng)用服務(wù)器; 在客戶瀏覽器端瀏覽含有如下HTML語法的頁面:
〈h2〉查詢頁面實例〈/h2〉
〈A href="/scripts/pbcgi60.exe/pb60/ur/fp?"〉 查詢開始〈/A〉
這樣Powerbuilder6.0數(shù)據(jù)窗口dw_fp的內(nèi)容就可以通過點擊超文本鏈接“查詢開始”而顯示在客戶瀏覽器界面上,完成一個簡單的“瘦”的browser/server應(yīng)用。 |
|