powerbuilder7.0:PowerBuilder7.0在Internet中的应用

随着Internet /Intranet发展和万维网(www)出现传统客户机/服务器方式(c/s)逐渐向浏览器-Web服务器-数据库(bwd)方式过渡后者和前者相比易学易用操作性强可扩充和维护性好文章主要就Powerbuilder在互联网和企业内部网应用开发中可采用几种方式:最简单Web应用Sybase EA StudioWEB.PB Plugin 和ActiveX等从基本原理和交互过程开发思路方法主要特点和不足作了较详细介绍说明在具体应用中根据需求和使用环境状况灵活选择

  作为目前世界上使用最广泛数据库应用综合开发环境以及MIS开发工具的Sybase公司PowerBuilder以其卓越应用在开发人员当中赢得了经久不衰盛誉近来随着Internet应用日益普及推动下对于目前流行基于Web浏览器和瘦客户端应用系统(即浏览器如IE不安装任何插件)PowerBuilderSysbase公司提供了系列解决思路方法

  .最简单Web应用仅仅展示某个数据窗口中数据从Powerbuilder5.0以上支持将数据窗口(Data Window)中数据保存为HTML表格形式具体做法可以是在数据窗口画笔中/预览/文件/保存行作为/保存类型/HTML表格评价:只能静态地展示某个数据窗口

   2.Sysbase公司提供企业级Web、分布式和客户/服务器应用解决方案利用Sybaese最新产品Sybase Enterprise Application Studio它是整套为用户提供全面企业级Web、分布式和客户/服务器应用解决方案应用开发和提交工具包Sybase Enterprise Application Studio主要包括如下产品:Powerbuilder7.0PowerSite3.0PowerDynamo3.0Jaguar CTS3.0

  Internet分布式体系已经将企业业务活动越过公司防火墙推广到企业外部Web技术已经被证明在动态信息发布方面既简单又有效但是动态页面服务器(通常又被称为Web应用服务器)在保证事务处理数据完整性方面能力有限不能很好地可重用业务逻辑Web应用服务器本身也不能满足个完整业务应用系统在可伸缩性、运行效率、可互操作性和安全性方面要求 Sybase EA Studio 3.0是Sybase最新推出面向分布式计算和Web计算多层混合计算环境产品方案支持各种标准组件和接口具有强大而灵活开发能力和很高开发效率 EA Studio 3.0核心产品的--Sybase EA Server 3.0是为充分发挥基于组件和多层体系结构应用特点而专门设计高性能提交环境它集成了操作方便且功能强大Web应用服务器PowerDynamo 3.0和高性能组件事务处理服务器Jaguar CTS 3.0使用PowerDynamo企业可以用HTML和JavaScript创建简单瘦客户应用当被浏览器PowerDynamo可以有效地处理包含展示逻辑和数据库连接信息模板快速生成HTML页面PowerDynamo模板和脚本语言能够处理任何数据和业务逻辑并按客户端请求生成相应HTML页面送到Web服务器PowerDynamo通过嵌入模板中SQL指令访问数据通过Jaguar CTS组件思路方法访问复杂业务逻辑PowerDynamoActiveX事务处理组件运行在Jaguar CTS中EA Server通过它们来执行企业业务操作 使用Jaguar CTS可减少分布式应用开发复杂性消除开发者对线索(threading)、加锁(locking)、事务处理和内存管理顾虑

  典型制作过程可为:

  1.建立数据窗口用PowerBuilder建立数据窗口或者PowerSite中DataWindow Builde建立数据窗口

  2.在PowerSite中插入DataWindow DTC或者在PowerSite中插入HTML DataWindow DTC选择某个数据窗口并建立数据库连接从而将数据窗口显示在Web页上

  具体操作步骤是:在PowerSite中在菜单中选择插入/成分/ActiveX/Design-Time命令就可选择插入DataWindow DTC或者插入HTML DataWindow DTC在DTC属性对话框中按…按钮选择某个数据窗口选择菜单命令工程/数据库连接设置好连接参数即可  

  需要指出是:DataWindow DTC和HTML DataWindow DTC都是基于服务器组件在客户端开发过程中无法对其进行预览和测试就是说暂时无法将数据窗口真正显示在Web中如果想窥其面貌则只能等到工程调试阶段将工程提交给个支持调试服务器然后才能在浏览器中将它显示出来(做了大量工作后在Web页中竟还看不到数据窗口中数据未能享受成功喜悦不能不说是种遗憾)

  3.若想在Web页中增加更多交互性则要在PowerSiteWeb页中插入些ActiveXControl控件并编写通用JavaScript脚本运行ActiveXControl控件需要安装事务处理服务器Jaguar CTS 3.0支持如:想在Web中用按钮组合来选择去某个Web页则要在Web页中增加选择按钮Control控件或表单并编写JavaScript脚本;也可编写脚本让用户通过填写表单或Control控件来更新数据库中数据

  4.设置PowerDynamo应用服务器提交工程并调试工程调试工程般只能用PowerDynamo应用服务器提交是个将完成应用中文件从开发环境中迁移到适当运行环境(般指个Web应用服务器)过程在PowerSite中回到服务提供者工程视图中在工程名称项目上单击鼠标右键并在弹出菜单中选择Deploy Setup命令进行提交设置选择好服务器类型这里是PowerDynamo网站WebSite配置信息表后在工程视图中工程项目名称上单击右键并从菜单中Deploy命令即可

  调试:在PowerSite中在菜单是选择Debug/Project Go命令将打开IE浏览器窗口装入工程起始页面

  5.正式提交将调试好Web应用工程提交给应用服务器这里应用服务器是在Internet上定是PowerDynamo应用服务器也可能是Microsoft公司ASP应用服务器微软Active Service Pages即ASP是集成在Web服务器IIS中提交工程需要网络管理员权限

  评价:种瘦客户机方式客户机端除浏览器外无须添加其它任何软件Software功能强大能在Web页中实现PowerBuilder应用几乎所有功能如在Web页面下数据库添加更新数据库多条件组合进行过滤查询等适合企业进行信息处理但需要Jaguar CTS3.0服务器(国内免费网站WebSite中目前尚未提供)PowerDynamo或ASP支持增加更多交互性要编写JavaScript脚本工程提交要有网络管理员权限

   3.WEB.PB方式

  WEB.PB是以多层分布式应用(客户机-应用服务器-数据库服务器)为基础它将客户机端应用即(WEB.PB专用客户端)分布到Web服务器上作为个网关(CGI)Web通过它来Powerbuilder应用服务器中定义思路方法实现相关业务逻辑和数据处理

  浏览器浏览嵌入WEB.PBHTML 文档时(主要是通过数据采集表和超文本链接),Web服务器激活WEB.PBWEB.PB作为Powerbuilder分布式应用客户端建立和Powerbuilder服务器应用的间连接然后其中已定义功能和思路方法(如数据库访问和文件处理等 )进行数据处理 并将处理结果将以超文本(HTML)语法格式返回给Web服务器由它再将结果返回给用户

  另外由于多个浏览器可同时访问Web服务器单独个用户也可跨越多个页面而HTTP协议本身无记忆性因此为了保证业务逻辑致性和用户访问连续性Powerbuilder专门提供了Webpb.pbl类库和webpb数据库,利用其中定义Usession,Utransaction用户对象来进行会话和事务管理

  用WEB.PB方式进行开发时主要是根据业务需求开发服务器应用然后选择合适通信机制(如TCP/IP,无名管道等),并修改PB.INI文件,以便WEB.PB能和的进行通信下面我们以个简单例子来简要介绍说明此例中用户在FORM表中选择产品类型用SUBMIT 提交表后WEB.PB将返回具体产品

  首先开发服务器应用分成以下几步进行:

  a. 用application 画笔创建个新应用purchase在其Library 属性页中将Web.PB Library 类库文件webpb.pbl加入查找路径中

  b.用window画笔创建窗口对象wserver,用于启动服务器应用,对WEB.PB进行服务在其上加入"启动服务器","关闭服务器"命令按钮,在"启动服务器"click事件中定义transport类型例子变量并赋值,监听来自Web.PB请求

  Transport cotransport  

  cotransport = create transport

  cotransport.driver="winsock"  //使用TCP/IP协议,和WEB.PB通信

  cotransport.location="136.158.188.12"  //服务器应用IP地址

  cotransport.application="12560"   //服务器应用TCP端口号

  cotransport.Listen( )  //开始启动服务器应用,监听来自WEB.PB请求

  c.用user object 画笔创建非可视(NvO)用户对象uoproduct,在其construct事件中用两个事务对象型全局变量通过ODBC分别和webpb数据库(用于WEB.PB会话和事务管理),应用数据库进行连接在destructor事件中,断开连接并销毁事务对象(此处略)

  d.创建用户对象fretrieveproduct

  ① 创建fretrieveproduct在查询时所需用数据窗口对象dwproduct用datawindow 画笔选择select数据源和grid显示方式

  ② 定义用户对象fretrieveproduct,参数为sproducttype (型,传值,)  

  返回值为

   html

  long lldwrow

  datastore datastore

  datastore .dataobject="dwproduct"

  datastore.transobject(utransaction)

  lldwrow=datastore.retrieve( sproducttype)

   lldwrow>0 then  

  html=html+datastore.object.datawindow.data.htmltable

  

   html="没有检索到数据"

  end

   html

  作用是根据用户选择产品类型来数据窗口进行数据查询,并将结果以 HTML形式返回

  至此我们已完成了服务器应用开发,下面修改Pbweb.ini文件,添加有关此服务器应用位置信息节purchase如下:  

  [purchase]

  driver=winsock

  application=12560

  location=136.158.188.12

  最后用FRONTPAGE,文本编辑器等来定制web页,在其上加入    <FORM  ACTION="//scripts/pbisa60.dll/purchase/uoproduct/fretrieveproduct">

  <P>请选择产品类型:

  <SELECT NAME="sproducttype">

  <OPTION> 针式打印机

  <OPTION> 喷墨打印机

  <OPTION> 激光打印机 </SELECT>

  <P> <INPUT TYPE="submit"><INPUT TYPE="re"> </FORM>

  至此,全部工作完毕在实际运行时启动Web服务器和purchase服务器,用户查询时即可得到所需结果

  评价:WEB.PB是种瘦客户机方式客户机端除浏览器外无须添加其它任何软件Software支持Window,Unix,,Maconish等多种平台适合于Internet/Intranet开发但是相对来讲其功能有限无法发挥Powerbuilder所有特点用户界面不太友好业务逻辑也较简单如以此进行较为复杂应用开发必须和JavaJava Applet等结合起来

   4.PLUG_IN方式

  插入件最早是由网景公司提出后来得到了众多浏览器开发厂商认可插入件以多种方式扩展浏览器功能NPPBA60.DLL和NPPBS60.DLL是Powersoft 公司开发插入件文件它分为窗口(Window)和数据窗口(Datawindow)两种从安全角度还可分为普通模式和安全模式安全模式插入件限制了Powerbuilder 应用在客户机上除打印以外几乎所有活动在插入件方式下我们可以使用Powerbuilder里所有Control控件和思路方法发挥它几乎全部功能实际上插入件方式只是传统客户机/服务器结构应用在Web上种表现形式

  浏览器访问Web服务器得到嵌有窗口插入件HTML文档后,浏览器识别出EMBED元素按它WIDTH和HEIGHT属性在页面上为插入件预留所需空间并向Web服务器请求卸载.PBD文件Web服务器先后向浏览器传递PBD文件MIME类型(application /vnd. powerbuilder6)和PBD文件浏览器在其Plugin子目录下查找并NPPBA60.DLL再由其Powerbuilder运行动态库这样,被插入子窗口就显示在浏览器规定位置并执行其Open事件处理然后开始响应用户动作进行事件处理当用户转到其他Web文档时PBD文件从内存中被清除

  用插入件方式开发和普通Client/Server开发过程大致相同只是要做些调整主要包括:① 嵌入窗口必须是Child 类型在编程时必须用this,parent等来引用它而不能直接引用它名字;② 可以使用应用对象内定义全局变量,但不能使用应用对象事件;③ 外部文件和所使用oleControl控件必须保证在浏览器客户端存在生成.PBD文件后,挂在Web目录合适位置仍以上面例子为例介绍说明开发过程首先开发 Powerbuilder应用:

  ① 用application画笔创建个新应用purchase

  ② 用window 画笔创建个child类型窗口wchildpurchase,上面有数据窗口dwproduct用于浏览数据,下拉列表ddlbtype 选择产品类型,按扭cbretrieve来数据检取

  ③ 数据窗口对象和WEB.PB相同

  ④ 在wchildpurchaseopen 事件中,和应用数据库进行连接

  Sqlca.database="odbc"

  Sqlca.dbparm="connectstrng='DSN=purchase;UID=dba;PWD=sql"

  Connect using sql;

  ⑤ 在cbretrieveclicked事件中,进行查询

  parent.dwproduct.retrieve(ddlb1.text)

  完成上述工作后,用project画笔生成purchase..pbd文件,将其移入Web目录中(如..\pbembed目录下),然后编辑HTML文档嵌入如下代码:

  <P><EMBED SRC="../pbembed/purchase.pbd" WIDTH=400 HEIGHT=250

  WINDOW="wchildpurchase"

  APPLICATION="purchase">

  最后在Web服务器上为插入件设置MIME类型Web服务器所在操作系统区别注册思路方法也不以Windows NT为例启动注册表编辑器(regedt32.exe)并打开HKEYLOCALMACHINE \SYSTEM\CurrentControlSet \Services\InetInfo\Parameters\MimeMa-p,为MIME映射添加值: application/vnd. powerbuilder,5.这样PBD文件就能被正确得传送和下载到浏览器端

  为了和浏览器环境相协调最好不要或少从child 子窗口再打开其它窗口通常在使用中可以多用几个插件(即child 窗口)每个插件完成功能少对于比较复杂应用还可以使用Javascript 来协调插入件的间同步[3]

  插入件方式是种胖客户机方式客户机端除浏览器外还必须装有Powerbuilder 动态运行库 因此访问受限对于Internet来说不太合适而对于工作环境和要求都已知Intranet来说较为合适功能较强实现起来简便易行可维护性好

   5.ActiveX

  Powerbuilder ActiveX方式和Plugin方式原理基本相同,为简便起见,在这里主要介绍说明它们的间差异当浏览器从服务器中下载嵌有ActiveXHTML文档遇到OBJECT标记时先预留给定空间然后浏览器将查找本地注册ActiveXControl控件是否有此注册号如有就将其直接显示否则视其安全需要从Web服务器中下载ActiveXControl控件(在OBJECT CODEBASE属性中给出)并在本地机中注册然后使用用ActiveX方式进行开发和Plugin 也基本在编辑HTML文档时所用元素区别(为OBJECT)以上例为例:  

  <P>〈OBJECT ID="purchase" WIDTH=400 HEIGHT=250

  CLASSID="CLSID:CEC58653-C842-11CF-A6FB-0805FA8669E>

  <PARAM NAME="Version",VALUE="65536">

  <PARAM NAME="Extentx",VALUE="9440">

  <PARAM NAME="Extenty" VALUE="7112">

  <PARAM NAME="StockProps" VALUE="0">

  <PARAM NAME="PBWindow" VALUE ="wchildpurchase">

  <PARAM NAME="LibList",VALUE="../pbembed/purchase.pbd>

  <PARAM NAME="PBApplication" VALUE="purchase">

  最后,在Windows 95,Windows NT上使用以下命令注册OCXControl控件: Regsvr32.exe pbrx60.ocx

  ActiveX 也是种胖客户机方式客户机方除浏览器外还要有PBRX60.OCX和Powerbuilder 动态运行库支持此外目前ActiveX仅有Windows 平台支持因此ActiveX 目前还不适合用于Internet 开发而对需求和应用环境已知Intranet应用比较合适它和Plugin相比我们还可以使用pbrx60.ocx思路方法TriggerPbevent和InvokePbfunction等通过Javascipt和vbscipt和其它ActiveXControl控件交互进行更为复杂控制和开发在开发中还要注意对浏览器安全选项设置不能太高否则无法通过安全检查另外目前PBRX60.ocx是针对IE3.0开发在IE4.0上使用有跳框现象

  结束语

  在以上分析和介绍说明中主要阐述了几种开发思路方法原理,开发思路方法和使用特点,注意事项,在使用时可根据要求和开发环境来进行选择
Tags:  powerbuilder9.0 powerbuilder powerbuilder powerbuilder7.0

延伸阅读

最新评论

发表评论