當前位置:編程學習大全網 - 源碼下載 - 如何用pb開發基於c\s模式的系統

如何用pb開發基於c\s模式的系統

用PowerBuilder6建立browser/server結構應用程序

1998.10.20 新疆財院計算中心 孫彬 王東

摘要本文主要論述Powerbuilder6.0實現 Browser/Server結構的Internet解決方案和工作方式,對實現該方式的幾種重要模塊的數據流程進行論述,最後給出實例。

PowerBuilder 6.0實現“Web瀏覽器-數據庫服務器”方案的前提條件是構建分布式應用體系。將 Powerbuilder6.0應用分布到Internet結構下,也就是把PowerBuilder 6.0客戶端應用分布到Web服務器上,當瀏覽器客戶端向Web 服務器發出服務請求時,Web服務器自動調用Powerbuilder應用軟件系統, 從而實現各種業務軟件的Internet結構功能。

壹、組成Browser/Server結構的模塊結構。

由上圖所示, 用 Powerbuilder6. 0 開發的各種基於Internet的應用,是利用PowerBuilder6.0 提供的分布式應用技術及PowerScripts編程技術來實現的,相當於編寫分布式應用環境下的服務器應用。例如采用PowerScripts語言環境、數據窗口技術等。其制作流程及工作原理是:

1. 建立及配置 Web 服務器。 PowerBuilder 中自帶O'Reilly公司基於WindowsNT 3.51以上版本和Win 95/98平臺的32位多線程個人Web服務器WebSite 1.1版。該Web 服務器提供了完整的Web服務創建、管理環境和安全機制。

2.在Web服務器上建立可執行程序(Web.Pb)。Web.pb(Pbcgi60.exe)程序主要功能是調用PowerBuilder應用服務器中預置的處理程序,包括分析執行用戶對象中的用戶函數,反饋HTML控制流和生成解釋插入件程序等。

Web.PB是用來開發基於Web應用的基本部件,該部件本身就是Web上的壹個網關應用程序。該工具提供從 Web服務器到PowerBuilder應用服務器的訪問,允許用戶在 Internet以及Intranet下,通過Web對數據庫進行近於完全的操縱。同時,通過Web.PB,動態創建HTML文檔亦成為可能。Web.PB程序是Web服務器和 PowerBuilder應用服務器相連接的橋梁。使用Web.PB構建Web應用有如下優點:

a.支持CGI、ISAPI、NSAPI、MSAPI等多種網關程序接口。

b.支持PowerBuilder中數據窗口的引用。

c.易於將以前編寫的PowerBuilder應用移植到Web環境下。

d.易於創建嵌入PowerBuilder應用程序的HTML文件,應用服務器在運行環境下,將根據用戶需求, 動態生成HTML語法,發布完全動態的信息。

e.支持數據庫連接。PowerBuilder所能夠連接到的數據庫都可以被瀏覽器用戶訪問到,使得 Web服務與數據庫服務通過Powerbuilder 6.0完整地結合起來。

3.建立PowerBuilder應用服務器。PowerBuilder應用服務器主要是壹些用於激活Powerbuilder6.0 業務應用的類庫程序組成。創建上圖所示的PowerBuilder應用服務器時,須引用Powerbuilder6.0 Web類庫,類庫中定義了五種定制的類用戶對象,封裝了創建HTML語法及事務管理所需的函數、結構和實例等多種實體,可用來創建HTML語法、管理客戶瀏覽器連接的狀態等。PowerBuilder 6.0應用服務器相當於分布式應用中客戶端應用,用於向PowerBuilder6.0業務應用發出調用請求。執行方法是:當Powerbuilder6.0 應用服務器監聽到Web.PB的請求後,則啟動PowerBuilder應用服務器中已預定義的業務處理程序。

例如,當用戶在瀏覽器端使用Web瀏覽器(IE或Netscape)瀏覽頁面時,通過在HTML頁面中嵌入的 <A>或<FORM>元素,Web服務器可自動激活Web.PB應用。活動的Web服務器首先調用PowerBuilder6.0的Web.PB類程序,作為PowerBuilder 分布式應用中的客戶端應用,建立與PowerBuilder 6.0應用服務器的連接,然後調用PowerBuilder6.0應用服務器中定義的各個業務功能,也就是用戶自定義對象中封裝的用戶函數,包括數據庫訪問和文件處理等數據處理功能。

4.建立PowerBuilder業務應用程序。在用戶自定義對象中,創建用戶自定義函數。功能要求是根據瀏覽器端用戶的需求,進行業務數據處理,把處理結果以HTML頁格式,反饋給web.pb程序,經常用於人事管理、財務管理、信息數據處理和系統管理等業務工作。

PowerBuilder業務應用程序有插入件(Plug_ins)和嵌入HTML文件兩種風格。Plug-ins(插入件)的使用方法又分成Window plug-ins和Datawindow plug-ins兩種。

Window plug-ins 插入件編制業務程序的的方法是 : 在HTML頁面上,嵌入並顯示PowerBuilder6.0中Child 類型的窗口對象,可放置數據窗口(DataWindow)、樹狀瀏覽(TreeView)、Tab頁等豐富多彩的控件類型, 豐富HTML頁面的表現形式。當客戶端用瀏覽器瀏覽頁面時,Web服務器將PSR文件或PBD文件卸載給客戶,客戶瀏覽器接收到PSR文件和PBD文件,將Child窗口對象嵌入在Web 頁面中,如果嵌入的是窗口對象,則窗口上定義的功能在瀏覽器環境下同樣能使用,如窗口上定義了數據庫操縱的功能,則在瀏覽器客戶端能直接連接操縱數據庫。Plug-ins起到了將PowerBuilder6.0對象嵌入到頁面中的作用,數據窗口具有豐富的顯示風格,用戶比較歡迎瀏覽器上“Powerbuilder Child類數據窗口”的數據表現形式。

Window ActiveX的使用方法與Window plug-ins類似,用來在HTML頁面中嵌入並顯示PowerBuilder中Child 類型的窗口對象。該組件可以和HTML中的VBScripts和JavaScripts交互使用。

單純嵌入HTML文件的方法是流行的編程趨勢, 也就是說根本不用插入件產品,客戶端只需安裝常規的Web瀏覽器,便能實現真正“瘦”的 Browser/Client/Server 結構體系。

總之,Powerbuilder6.0 應用服務器將業務處理程序的執行結果以HTML格式返回給Web服務器。Web服務器再將HTML發布給用戶,客戶瀏覽器端在瀏覽器上接收到結果。

二、簡單的Internet應用實例

1.選用Web服務器,配置Web.pb程序。Web服務器種類很多,在此選用Websuit1.1服務器,其它種類的Web 服務器類似。Web.pb程序包括pbcgi60.exe、psisa60.dll、pbnsl60.dll、pbns260.dll、webbagent.dll和pbweb.ini等文件。 註意:設置映射目錄/scripts/為c:\ website\ cgi-shl;將上述Web.pb文件復制到/scripts/目錄下;將pbweb.ini文件拷貝到WINDOWS NT或WINDOWS 95 的系統目錄下;在webpb.ini文件中加入以下內容:

[pb60]

driver=winsock

application=10082

location=202.201.208.6

2.在Powerbuilder6.0開發平臺上,選取Internet選項,創建 Powerbuilder6. 0 應用服務器。 技術要點是:建立Internet應用,加入webpb.pbl 類庫文件並作啟動服務器的腳本,內容是:

transport.mytransport

mytransport=create transport

mytransport="winsock"

my transport.location="202.201.208.6"

//PowerBuilder6.0應用服務器監聽地址

mytransport.application="10082"

//服務端口號

mytransport.listen()

//啟動監聽服務

return

3、設置業務數據庫服務器和sybase SQL Anywhere本地庫wedpb.db的連接。其中業務數據存放到數據庫服務器,例如:SQL6.5、Sybase 11、Informix 6.0、Ingres和DB2等類型的數據庫;本地庫webpb.db中,只存放PowerBuilder 6.0應用服務器的控制信息。

4、創建用戶對象,並為該用戶對象編寫處理腳本。例如:創建用戶對象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

目的是:當Web.pb調用Powerbuilder6.0服務器時,用戶對象自動先建立與數據庫的連接,調用結束後斷開連接。

5、編寫用戶自定義函數,各種業務工作的數據處理都由該類函數來完成。例如,在用戶對象UR上,創建壹查詢功能的函數fp(),其內容是:

string return_html

long ii

datastore data_fp

data_fp=create datastore

data_fp.dataobject="dw_fp"

//dw_fp為已經做好的查詢數據窗口

data_fp.settransobject(mytransaction)

ii=date_fp.retrieve()

//檢索到的記錄數存入變量ii

if ii>=1 then

return_html+=data_fp.object.datawindow.data.htmltable

else

return_html="沒有檢索到滿足條件的數據"

end if

return return_html

6、啟動服務器,再啟動Powerbuilder6.0應用服務器; 在客戶瀏覽器端瀏覽含有如下HTML語法的頁面:

<h2>查詢頁面實例</h2>

<A href="/scripts/pbcgi60.exe/pb60/ur/fp?"> 查詢開始</A>

這樣Powerbuilder6.0數據窗口dw_fp的內容就可以通過點擊超文本鏈接“查詢開始”而顯示在客戶瀏覽器界面上,完成壹個簡單的“瘦”的browser/server應用。

  • 上一篇:經濟gtp是什麽意思
  • 下一篇:我打算去菲律賓工作,如何選擇壹個更好的公司呢?
  • copyright 2024編程學習大全網