用户名: 密码: 验证码: gdcode 注册

用PowerBuilder6.0建立B/S结构的应用程序

时间:2007-06-15 来源: 作者: 【字体: 减小 增大点击: 收藏 | 投稿
  

  一、组成Browser/Server结构的模块结构。

财,软联盟,fs119.net

  由上图所示,用Powerbuilder6.0开发的各种基于Internet的应用,是利用PowerBuilder6.0提供的分布式应用技术及PowerScripts编程技术来实现的,相当于编写分布式应用环境下的服务器应用。例如采用PowerScripts语言环境、数据窗口技术等。其制作流程及工作原理是: 财管,家园,fs119.net

  1.建立及配置Web服务器。PowerBuilder中自带O'Reilly公司基于WindowsNT3.51以上版本和Win95/98平台的32位多线程个人Web服务器WebSite1.1版。该Web服务器提供了完整的Web服务创建、管理环境和安全机制。 财软联盟.fs119.net

  2.在Web服务器上建立可执行程序(Web.Pb)。Web.pb(Pbcgi60.exe)程序主要功能是调用PowerBuilder应用服务器中预置的处理程序,包括分析执行用户对象中的用户函数,反馈HTML控制流和生成解释插入件程序等。

财.软联盟.fs119.net

  Web.PB是用来开发基于Web应用的基本部件,该部件本身就是Web上的一个网关应用程序。该工具提供从Web服务器到PowerBuilder应用服务器的访问,允许用户在Internet以及Intranet下,通过Web对数据库进行近于完全的操纵。同时,通过Web.PB,动态创建HTML文档亦成为可能。Web.PB程序是Web服务器和PowerBuilder应用服务器相连接的桥梁。使用Web.PB构建Web应用有如下优点:

财软,联盟,fs119.net

  a.支持CGI、ISAPI、NSAPI、MSAPI等多种网关程序接口。

财管.家园.fs119.net

  b.支持PowerBuilder中数据窗口的引用。 财管家.园.fs119.net

  c.易于将以前编写的PowerBuilder应用移植到Web环境下。

财软联.盟.fs119.net

  d.易于创建嵌入PowerBuilder应用程序的HTML文件,应用服务器在运行环境下,将根据用户需求,动态生成HTML语法,发布完全动态的信息。 财软联盟 fs119.net

  e.支持数据库连接。PowerBuilder所能够连接到的数据库都可以被浏览器用户访问到,使得Web服务与数据库服务通过Powerbuilder6.0完整地结合起来。 财软 联盟 fs119.net

  3.建立PowerBuilder应用服务器。PowerBuilder应用服务器主要是一些用于激活Powerbuilder6.0业务应用的类库程序组成。创建上图所示的PowerBuilder应用服务器时,须引用Powerbuilder6.0Web类库,类库中定义了五种定制的类用户对象,封装了创建HTML语法及事务管理所需的函数、结构和实例等多种实体,可用来创建HTML语法、管理客户浏览器连接的状态等。PowerBuilder6.0应用服务器相当于分布式应用中客户端应用,用于向PowerBuilder6.0业务应用发出调用请求。执行方法是:当Powerbuilder6.0应用服务器监听到Web.PB的请求后,则启动PowerBuilder应用服务器中已预定义的业务处理程序。 财软,联盟,fs119.net

  例如,当用户在浏览器端使用Web浏览器(IE或Netscape)浏览页面时,通过在HTML页面中嵌入的<A>或<FORM>元素,Web服务器可自动激活Web.PB应用。活动的Web服务器首先调用PowerBuilder6.0的Web.PB类程序,作为PowerBuilder分布式应用中的客户端应用,建立与PowerBuilder6.0应用服务器的连接,然后调用PowerBuilder6.0应用服务器中定义的各个业务功能,也就是用户自定义对象中封装的用户函数,包括数据库访问和文件处理等数据处理功能。

财管家,园,fs119.net

  4.建立PowerBuilder业务应用程序。在用户自定义对象中,创建用户自定义函数。功能要求是根据浏览器端用户的需求,进行业务数据处理,把处理结果以HTML页格式,反馈给web.pb程序,经常用于人事管理、财务管理、信息数据处理和系统管理等业务工作。PowerBuilder业务应用程序有插入件(Plug_ins)和嵌入HTML文件两种风格。Plug-ins(插入件)的使用方法又分成Windowplug-ins和Datawindowplug-ins两种。

财软联盟,fs119.net

  Windowplug-ins插入件编制业务程序的的方法是:在HTML页面上,嵌入并显示PowerBuilder6.0中Child类型的窗口对象,可放置数据窗口(DataWindow)、树状浏览(TreeView)、Tab页等丰富多彩的控件类型,丰富HTML页面的表现形式。当客户端用浏览器浏览页面时,Web服务器将PSR文件或PBD文件卸载给客户,客户浏览器接收到PSR文件和PBD文件,将Child窗口对象嵌入在Web页面中,如果嵌入的是窗口对象,则窗口上定义的功能在浏览器环境下同样能使用,如窗口上定义了数据库操纵的功能,则在浏览器客户端能直接连接操纵数据库。Plug-ins起到了将PowerBuilder6.0对象嵌入到页面中的作用,数据窗口具有丰富的显示风格,用户比较欢迎浏览器上“PowerbuilderChild类数据窗口”的数据表现形式。 财管,家园,fs119.net

  WindowActiveX的使用方法与Windowplug-ins类似,用来在HTML页面中嵌入并显示PowerBuilder中Child类型的窗口对象。该组件可以和HTML中的VBScripts和JavaScripts交互使用。 财软联,盟,fs119.net

  单纯嵌入HTML文件的方法是流行的编程趋势,也就是说根本不用插入件产品,客户端只需安装常规的Web浏览器,便能实现真正“瘦”的Browser/Client/Server结构体系。 财软联盟.fs119.net

  总之,Powerbuilder6.0应用服务器将业务处理程序的执行结果以HTML格式返回给Web服务器。Web服务器再将HTML发布给用户,客户浏览器端在浏览器上接收到结果。

财 软联盟 fs119.net

财软,联盟,fs119.net

财管家.园.fs119.net


财管家.园.fs119.net

财 管家园 fs119.net

  二、简单的Internet应用实例 财.管家园.fs119.net

财软联盟,fs119.net

  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文件拷贝到WINDOWSNT或WINDOWS95的系统目录下;在webpb.ini文件中加入以下内容: 财管家园,fs119.net

[pb60] 财软联 盟 fs119.net

driver=winsock 财软联 盟 fs119.net

application=10082

财管.家园.fs119.net

location=202.201.208.6

财管家园 fs119.net

财管家园,fs119.net

  2.在Powerbuilder6.0开发平台上,选取Internet选项,创建Powerbuilder6.0应用服务器。技术要点是:建立Internet应用,加入webpb.pbl类库文件并作启动服务器的脚本,内容是: 财软联盟 fs119.net

transport.mytransport 财 管家园 fs119.net

mytransport=createtransport 财 软联盟 fs119.net

mytransport="winsock" 财 管家园 fs119.net

mytransport.location="202.201.208.6" 财,软联盟,fs119.net

//PowerBuilder6.0应用服务器监听地址

财管家园,fs119.net

mytransport.application="10082"

财软联盟 fs119.net

//服务端口号

财 软联盟 fs119.net

mytransport.listen() 财软联 盟 fs119.net

//启动监听服务

财管家园.fs119.net

return 财软联 盟 fs119.net

财软.联盟.fs119.net

  3、设置业务数据库服务器和sybaseSQLAnywhere本地库wedpb.db的连接。其中业务数据存放到数据库服务器,例如:SQL6.5、Sybase11、Informix6.0、Ingres和DB2等类型的数据库;本地库webpb.db中,只存放PowerBuilder6.0应用服务器的控制信息。

财软联 盟 fs119.net

  4、创建用户对象,并为该用户对象编写处理脚本。例如:创建用户对象ur,并给constructor事件编写如下脚本: 财软联.盟.fs119.net

mytransaction=createtransaction 财软联盟,fs119.net

mytransaction.dbms='ODBC" 财 软联盟 fs119.net

mytransaction.dbparm="Connectstring='DSN=WebPb'"

财管家 园 fs119.net

Connectusingmytransaction; 财管家.园.fs119.net

ifmytransaction.sqlcode<>0then

财管 家园 fs119.net

messagebox("mytransaction.error="string(mytransaction.& 财软联盟.fs119.net

sql_dbcode),mytransaction.sqlerrtext) 财软,联盟,fs119.net

endif

财软联盟 fs119.net

sqlca.dbms="MSS(Msoft)SQLServer6.5" 财软,联盟,fs119.net

sqlca.DataBase="xyw" 财软联盟.fs119.net

sqlca.Userid="sa" 财软 联盟 fs119.net

sqlca.ServerName="Server" 财管 家园 fs119.net

sqlca.logid="sa"

财,管家园,fs119.net

Connectusingsqlca; 财管家,园,fs119.net

ifsqlca.sqlcode<>0then

财软联 盟 fs119.net

messagebox("sqlca.error="string(sqlca.sql_dbcode),sqlca.sqlerrtext) 财软,联盟,fs119.net

endif 财 软联盟 fs119.net

给destructor事件编写如下脚本: 财,软联盟,fs119.net

disconnectusingmytransaction 财,管家园,fs119.net

disconnectusingsqlca 财管家园.fs119.net

财管 家园 fs119.net

  目的是:当Web.pb调用Powerbuilder6.0服务器时,用户对象自动先建立与数据库的连接,调用结束后断开连接。 财管家,园,fs119.net

  5、编写用户自定义函数,各种业务工作的数据处理都由该类函数来完成。例如,在用户对象UR上,创建一查询功能的函数fp(),其内容是:

财 管家园 fs119.net

stringreturn_html

财软联,盟,fs119.net

longii

财软联 盟 fs119.net

datastoredata_fp

财管家,园,fs119.net

data_fp=createdatastore

财管家.园.fs119.net

data_fp.dataobject="dw_fp"

财管家园,fs119.net

//dw_fp为已经做好的查询数据窗口

财软联 盟 fs119.net

data_fp.settransobject(mytransaction) 财软联,盟,fs119.net

ii=date_fp.retrieve() 财管家园,fs119.net

//检索到的记录数存入变量ii

财,软联盟,fs119.net

ifii>=1then

财管家,园,fs119.net

return_html=data_fp.object.datawindow.data.htmltable

财软 联盟 fs119.net

else 财软联,盟,fs119.net

return_html="没有检索到满足条件的数据"

财软,联盟,fs119.net

endif 财软.联盟.fs119.net

returnreturn_html 财软联,盟,fs119.net

财软,联盟,fs119.net

  6、启动服务器,再启动Powerbuilder6.0应用服务器;在客户浏览器端浏览含有如下HTML语法的页面: 财管.家园.fs119.net

  <h2>查询页面实例</h2> 财软.联盟.fs119.net

  <Ahref="/scripts/pbcgi60.exe/pb60/ur/fp?">查询开始</A>

财管家.园.fs119.net

  这样Powerbuilder6.0数据窗口dw_fp的内容就可以通过点击超文本链接“查询开始”而显示在客户浏览器界面上,完成一个简单的“瘦”的browser/server应用。

财软联盟 fs119.net

财 软联盟 fs119.net

财,软联盟,fs119.net


文章摘自网络,如有侵权,请与我们联系.
数据统计中!!
上一篇:在POWERBUILDER中使用WINSOCK控件的方法
下一篇:Powerbuilder中利用API实现动画特效

精品课程推荐



用户名: 密码: 匿名? 注册