web前端

位置:IT落伍者 >> web前端 >> 浏览文章

用Powerbuilder开发WEB数据库


发布日期:2023年01月19日
 
用Powerbuilder开发WEB数据库

引言

我们知道现在随着Internet应用的不断深化人们对Web服务器所查询的信息就不仅仅限于以文件方式存放于服务器端的静态超文本文件有时需要借助关系新数据库来存放变化的数据并在Web服务器于数据库服务器之间以CGI等方法建立两者的连接使Web服务器能够实现对数据库的动态的及时的查询并将最新的数据(结果)返回给浏览器

于是在Internet应用中就出现了如图所示的这样一种结构

客户浏览器—Web服务器—数据库服务器三级结构

当然这一结构的实现用ASP等开发网络数据库的软件也能够实现并且正在成为日益流行的趋势但是对于已经拥有大量用户的PB来说其对Internet的支持就可以让PB用户迅速转移到Web的开发上来而不需要再重新学习一门语言

另外我们如果稍稍留心的话就不难发现现在用PB开发出来的所谓的MIS系统千篇一律几乎都是一个模式用户先登录进入系统后出现一个MDI窗口带有数项菜单菜单下面又有若干菜单通过菜单打开一个个窗口……当然并不是说这种传统的方式有什么缺点只是它和当今正日益流行的网页的形式比较起来还是逊色不少网页的友好形式更受广大用户的欢迎而PB的Web方式正是迎合了当今Internet时代发展的潮流——可以用网页的形式再现PB的传统强大功能

而且随着越来越多的企事业单位上网很多单位不仅仅要有自己的一套MIS系统而且还迫切需要开发自己的网络数据库系统来向外界更好的宣传自己这时候一般的选择往往是这两种系统各自独立的开发一套不可避免地造成了一定程度的浪费并且这两种系统的开发商是同一家还好若是两家开发商那么在不同的时候还要进行不断的协商这不能不说又是一种浪费如果能有一种方法可以把两种系统最大限度的把两种系统结合起来就能够节约各种财力人力和物力还会大大提高办公效率

PB/的Internet Developer Toolkit(IDT)

经典的开发工具PB/对Internet支持可以说是它的一个主要特性可以说这是在IDT基础上的一个全新的飞跃通过将IDT(Internet Developer Toolkit)工具集成到PB的开发环境中通过这些工具开发人员可以将现有的一些应用移植到Internet中也可以开发新的面向Internet的应用

在图所示的的结构下PB提供了Internet应用的两种访问方式这两种访问方式是

·基于Plugin(插入件)的Client/Server方式

·基于WebPB的Browser/Server方式

对应于这两种方式主要是在IDT上选择的不同

采用PB的IDT开发应用的方法和PB的一般应用的开发方法是类似的通过这些工具可以将现有的一些应用移植到Internet中也可以开发新的面向Internet的应用

在PB/提供了WebPBDataWindow PluginWindow Plugin和Window Active等一系列面向Internet的工具每个工具所实现的功能所依赖的平台都不尽相同PB的IDT主要有三种部件

.DataWindow Plugin

使用该Plugin可以在IE或者Netscape等浏览器中直接查看用PowerBuilder的Datawindow生成的报表PSR格式的文件当然不能直接修改了也不是动态生成的而是阅读已经生成好并存下来的文件

Window Plugin

这个Plugin可就不是仅仅显示静态数据了它在浏览器中中运行PB生成的Child Window而这个Child Window是包含在PB的动态连接库(PBD)中传送过来的用起来就象独立的PB程序一样可以有数据窗口OLEOCX等各种各样的控制可以远程操作数据库可以极大的发挥PB的功能

WEBPB

WebPB是用来开发基于Web应用的基本部件该部件本身就是Web上的一个网关应用程序该工具提供从 Web服务器到PowerBuilder应用服务器的访问允许用户在 Internet以及Intranet下通过Web对数据库进行近于完全的操纵同时通过WebPB动态创建HTML文文件亦成为可能WebPB程序是Web服务器和 PowerBuilder应用服务器相连接的桥梁它支持CGIISAPINSAPIMSAPI等多种网关程序接口

不管怎么样必须要明确这样一个结论PB的Internet应用开发是由两个部分组成的一个是面向服务器的应用程序主要采用的是WebPB技术另外一个是面向客户端的技术包括各种内插件和ActiveX技术这是两种不同的技术路线在实施的时候必须加以充分的考虑从另外一个角度可以看出各种内插件和ActiveX技术是为了将现有的应用扩展到Internet中去而WebPB主要是面向新应用的开发当然这也不是绝对的Plugin技术照样可以开发新的应用特别是Intranet的应用

开发策略的选择

.PB的Internet/Intranet总体计划实施策略选择

现在好象一直存在着瘦客户端胖客户端的争论这里不评价这两者的优劣但是这肯定是实施策略时要考虑到的问题如果希望采用纯的瘦客户端那么两种Pugin技术和Active技术就不是最好的选择

采用瘦客户机 策略——即WebPB方式能够减少在客户端软件方面的投资因为这种瘦客户机一般只需要浏览器这种核心部件另外瘦客户机对计算机的性能要求也比较低不需要客户机承担多少运算的负载大量的运算任务都由服务器来承担

如果采用中间策略那么可以在客户端加载Plugin和ActiveX(现在的浏览器一般都支持这种技术)并且支持MINE格式的内容这样一来客户即便能够承担一些表现逻辑方面的任务但是业务逻辑的大部分运算任务仍然在服务器端完成这种其实就是Window Plugin方式它尤其适用于Intranet网中

最后一种是传统的C/S策略其实就是胖客户方式由于大部分程序都驻留在客户端它对客户机的要求也很高这种方式在现在的Intranet中估计迟早要被淘汰

在具体的IDT工具的选择策略上主要有三个方面的选择

)如果是需要实现客户端访问数据库并在客户机上进行业务处理最好使用Window Plugin它不仅可以最大限度地发挥PB的强大功能而且对用户非常友好告别老套的菜单走向了丰富多彩的网页形式

)如果客户端需要预先编制好的报表应采用DataWindow Plugin为上佳它能够在浏览器内显示已经生成并存储在Web服务器上的PSR报表因为这个报表是预先生成的所以不需要访问数据库用户可以在浏览器内查看打印和保存报表PSR报表的格式多样能够给WWW浏览增添不少风采

)如果需要使用集中控制的数据库和业务逻辑程序那么最好使用WebPB

.开发系统具体策略的考虑及分布式的介绍

由于要建立的Web方式的图书馆系统主要是基于Intranet的结合上面所说的几种考虑因此大部分应用就采用了Window Plugin的方式这不仅能体现PB一向的强大功能而且能充分让你去发挥其功能把MIS系统管理和丰富多彩的网页结合起来了

Web服务器用的是微软的PWS(Personal Web Server)WebPB用的是PBCGIEXE(表示是CGI标准)Sybase数据库NT平台

开发过程中大量使用了数据库连接多条件数据查询以及各种控件的Visible属性尤其是在Tab控件中用到了selectionchanged事件的newindex属性(以便每重新点击一个Tabpage可以重新操作而不受以前操作的影响)大大增强了表现效果

还要补充一点的是在建立应用的过程中要注意的一点是不要使用全局对象特别是在child窗口不能用SQLCA作为事物对象(它应该算一个全局变量Window Plugin方式不支持全局变量)一定要重新自定义一个事物对象mytransaction若使用SQLCA单独运行窗口还可以一旦要在客户端浏览器中出现肯定会报错而在这儿几乎没有哪本参考书特意强调过初学者创建自己的应用时很容易在此走弯路

以上只算是建立了PB的应用程序还要做的有生成PBD文件并放到web共享目录下编写HTML语句嵌入窗口放到服务器目录下这里的关键性的HTML语句是

<body> <embed src=cgipbd/bookspbd width= height= window=w_bugao> </body>

WebPB是基于PowerBuilder分布式应用技术之上的WebPB替代了客户端的代理而已在PB分布式应用中PB客户应用和PB服务器应用程序之间的对象分布如所图所示

使用WebPB进行基于服务器的开发可以让PB建立基于服务器的Web应用允许Web浏览器访问分布式PB应用程序的服务这些分布式的基于服务器的应用程序可以动态生成HTML页或将HTML发送到Web浏览器这允许用户支持真正的客户机体系也就是在客户机上只需一个浏览器这种方式也可以称为纯的Browser/Server方式

如图所示客户端通过Proxy对象定义服务器应用程序之中的应用对象而WebPB不同于传统的客户端应用WebPB不同于传统的客户端应用WebPB文件取代了客户端的应用程序起作用相当于访问服务器应用程序的接口在浏览器中用户可以访问分布式PB应用程序中的任何不可视对象的属性和方法用户还可以向方法传递参数Web服务器与WebPB通信将这些信息发送给分布式PB应用程序应用程序会执行方法并将结果以动态HTML的形式返回给浏览器

建立WebPB应用的过程如下

a 建立并测试服务应用(这里是pb_net)

·创建应用对象

·创建应用启动窗口

·创建传输对象

·创建不可视用户对象

·编写用户对象函数

b 编写可调用服务应用的HTML页面这可通过FrontPage等主页编辑器也可通过WebPB的编程WIZARD来做

c 将应用编译成可执行文件

d 编辑WebPB的几个初始化文件

e 设置Web服务器(主要是文件类型和Web目录的设置等)

f 启动服务应用和Web服务器

g 用浏览器访问应用

服务应用的编写和分布式应用类似就不再赘述这里需要补充一点的是编写用户对象是WebPB应用中的头等大事并且WebPB中的数据窗口一般用的都是Datastore这里创建了一个用户对象uo_pbdemo实际上用户对象应该尽量要创建的多才好特别是在那些大型的应用中

WebPB方式的应用都是通过HTML中的锚点Anchor(<A>)定义的超链接或者是FORM(<FORM>)元素的可输入域中键入信息后单击Submit按钮(定义的也有超链接)来激活WebPB实现的而这些超链接的对象形式上都是指向各个用户对象中的函数的(这些函数的返回值均是一系列的HTML文文件)这一点务必要明确其实这一点也是WebPB方式的核心思想概念所在

这里uo_pbdemo建立了数个函数挑出颇具代表性的一个的描述如下

//从数据库中提取新书介绍

//f_retrieve_newbooks()无参数返回值是string类型的

string ls_html

string ls_search_arg

long ll_rows_retrieved

ds_names = CREATE datastore

ds_namesdataobject=d_newbooks

ds_namessettransobject(gtr_trans)

ll_rows_retrieved= ds_namesretrieve()

IF ll_rows_retrieved > THEN

ls_html=ds_namesobjectdatawindowdatahtmltable

ELSE

ls_html = 此次找不到新书!

END IF

RETURN ls_html

这是非常关键的一段代码其实就是调用了数据窗口的htmltable属性而已要知道这种思想可以说是贯穿了整个WebPB应用的全过程

启动浏览器就可以检索到新书了当然还有一个前提是服务器确定是在监听即刚建立的pb_inet应用必须在运行中

最后还要在服务器端配置几个INI文件Hosts文件services文件和PBWEBINI文件当然这项工作实际上应该在整个工作之前所做的

对三种开发方式的总结

.关于Window Plugin的几点体会

)Window Plugin最适用于Intranet网前面提到过原因因为需要浏览器的支持而且需要在浏览器端安装程序文件另外一个原因就是Window Plugin主要的执行环境还是浏览器本身所在的本地机环境只有在内部网的情况下才能够对应用执行的环境进行比较好的控制避免出错

)Window Plugin适用于在浏览器端有比较复杂的用户接口的情况可避免编写大量的HTML和CGI程序开发Internet经常遇到的一个难题就是在客户端没有足够的组件现在有了Window Plugin只要愿意就能把独立的PB应用程序转移到浏览器中来执行

)并且Window Plugin移植和修改现有的应用程序到Web上也可以说是不费什么力气还可以充分享受数据窗口的强大功能

)在Intranet环境下安全等因素就不是那么重要了可允许应用程序访问客户机的磁盘使用户能够将本地的资源和服务器的资源结合起来应用

)笔者看来这三种IDT中Window Plugin方式是最值得用的

关于DataWindow Plugin的几点体会

)DataWindow Plugin可以在Web上发布复杂的报表加快向Web用户的发布

)它克服了HTML的限制提供复杂的报表包括列表形式交叉表形式和图形方式等

)它没有安全限制因为PSR文件是制度的而这个报表并不在本地

运行PSR报表在浏览器中除了显示之外只能够运行保存数据和打印两种功能因此是十分安全的

)DataWindow Plugin时静态显示报表的一种方法无法直接修改这种方法显示的数据和报表格式但可以在一个中央位置更新报表

)PSR格式的报表能够包含多种显示风格的数据窗口但在DataWindow Plugin中不支持Rich Text格式的报表

.WebPB构建Web应用有如下优点

a 支持CGIISAPINSAPIMSAPI等多种网关程序接口

b 支持PowerBuilder中数据窗口的引用

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

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

e 支持数据库连接PowerBuilder所能够连接到的数据库都可以被浏览器用户访问到使得 Web服务与数据库服务通过Powerbuilder 完整地结合起来

另外谈一点对WebPB的不足之处虽然说Sybase公司极力地让PB支持Web方式并且采取了很多方案其中一种就是其引以为豪的WebPB的确WebPB在网络数据库方面确实有不小的成绩可以采用集中式数据库管理但它在开发网络数据库方面也绝不会成为流行的趋势它开发初衷就是主要面对广大PB的老用户的(老用户更容易上手)而且它在页面的开发上过于单调且不说动态性不强光是一大堆类库函数加上每个函数还有数个参数而且创建页面其实比手写HTML语言还要辛苦(因为它要返回一个完整的字符串到浏览器)联想到当今的社会发展非常注重效率很难设想从头单纯学习PB的IDT而仅仅为了编辑过于普通的网页和开发网络数据库因此在这方面也就是说WebPB广泛推广的价值不大但是对于已经掌握了PB的开发用户来说如果不想学习新的语言或工具用WebPB开发也是一个很好的选择

虽然当今PB已经发展到版本但是仍然有很多的开发者依旧用着他们认为是最为经典的/版本本文基本上是在版本上运行的笔者认为却一点都不过时因为友好的web风格的窗口肯定是大势所趋

上一篇:怎样用PowerBuilder开发WEB应用

下一篇:RH9下最简单的WebMail的实现方案