powerbuilder开发:用Powerbuilder开发WEB数据库

流星雨  

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

图1 客户浏览器—Web服务器—数据库服务器 3级结构
当然这结构实现用ASP等开发网络数据库软件Software也能够实现并且正在成为日益流行趋势但是对于已经拥有大量用户PB来说其对Internet支持就可以让PB用户迅速转移到Web开发上来而不需要再重新学习门语言
另外我们如果稍稍留心话就不难发现现在用PB开发出来所谓MIS系统千篇律几乎都是个模式:用户先登录进入系统后出现个MDI窗口带有数项菜单,菜单下面又有若干菜单通过菜单打开个个窗口……当然并不是说这种传统方式有什么缺点只是它和当今正日益流行网页形式比较起来还是逊色不少网页友好形式更受广大用户欢迎而PBWeb方式正是迎合了当今Internet时代发展潮流——可以用网页形式再现PB传统强大功能
而且随着越来越多企事业单位上网很多单位不仅仅要有自己套MIS系统而且还迫切需要开发自己网络数据库系统来向外界更好宣传自己这时候选择往往是这两种系统各自独立开发不可避免地造成了定程度浪费并且这两种系统开发商是同家还好若是两家开发商那么在区别时候还要进行不断协商这不能不说又是种浪费如果能有种思路方法可以把两种系统最大限度把两种系统结合起来就能够节约各种财力、人力和物力还会大大提高办公效率  
2、PB6.0/6.5Internet Developer Toolkit(IDT)
经典开发工具PB6.0/6.5对Internet支持可以说是它个主要特性可以说这是在IDT基础上个全新飞跃通过将IDT(Internet Developer Toolkit)工具集成到PB开发环境中通过这些工具开发人员可以将现有些应用移植到Internet中也可以开发新面向Internet应用
在图1所示结构下PB提供了Internet应用两种访问方式这两种访问方式是:
基于Plugin(插入件)Client/Server方式
基于Web.PBBrowser/Server方式
对应于这两种方式主要是在IDT上选择区别
采用PBIDT开发应用思路方法和PB般应用开发思路方法是类似通过这些工具可以将现有些应用移植到Internet中也可以开发新面向Internet应用
在PB6.0/6.5中提供了Web.PB、DataWindow Plug-in、Window Plug-in和Window Active等系列面向Internet工具每个工具所实现功能、所依赖平台都不尽相同PBIDT主要有 3种部件:
1.DataWindow Plugin
使用该Plugin可以在IE或者Netscape等浏览器中直接查看用PowerBuilderDatawindow生成报表--PSR格式文件当然不能直接修改了也不是动态生成而是阅读已经生成好并存下来文件
2. Window Plugin
这个Plugin可就不是仅仅显示静态数据了它在浏览器中中运行PB生成Child Window,而这个Child Window是包含在PB动态连接库(PBD)中传送过来用起来就象独立PB可以有数据窗口、OLE、OCX等各种各样控制可以远程操作数据库可以极大发挥PB功能
3. WEB.PB
Web.PB是用来开发基于Web应用基本部件该部件本身就是Web上个网关应用该工具提供从 Web服务器到PowerBuilder应用服务器访问允许用户在 Internet以及Intranet下通过Web对数据库进行近于完全操纵同时通过Web.PB动态创建HTML文文件亦成为可能Web.PB是Web服务器和 PowerBuilder应用服务器相连接桥梁它支持CGI、ISAPI、NSAPI、MSAPI等多种网关接口
不管如何样必须要明确这样个结论PBInternet应用开发是由两个部分组成个是面向服务器应用主要采用是Web.PB技术另外个是面向客户端技术包括各种内插件和ActiveX技术这是两种区别技术路线在实施时候必须加以充分考虑从另外个角度可以看出各种内插件和ActiveX技术是为了将现有应用扩展到Internet中去而Web.PB主要是面向新应用开发当然这也不是绝对Plug-in技术照样可以开发新应用特别是Intranet应用
3、开发策略选择
1.PB6.5Internet/Intranet总体计划实施策略选择
现在好象直存在着“瘦客户端”和“胖客户端”争论这里不评价这两者优劣但是这肯定是实施策略时要考虑到问题如果希望采用纯“瘦客户端”那么两种Pug-in技术和Active技术就不是最好选择
采用“瘦客户机” 策略——即Web.PB方式能够减少在客户端软件Software方面投资这种瘦客户机般只需要浏览器这种核心部件另外瘦客户机对计算机性能要求也比较低不需要客户机承担多少运算负载大量运算任务都由服务器来承担
如果采用“中间”策略那么可以在客户端加载Plug-in和ActiveX(现在浏览器般都支持这种技术)并且支持MINE格式内容这样客户即便能够承担些表现逻辑方面任务但是业务逻辑大部分运算任务仍然在服务器端完成这种其实就是Window Plug-in方式它尤其适用于Intranet网中
最后种是传统C/S策略其实就是“胖客户”方式由于大部分都驻留在客户端它对客户机要求也很高这种方式在现在Intranet中估计迟早要被淘汰
在具体IDT工具选择策略上主要有 3个方面选择:
1)如果是需要实现客户端访问数据库并在客户机上进行业务处理最好使用Window Plug-in它不仅可以最大限度地发挥PB强大功能而且对用户非常友好告别老套菜单走向了丰富多彩网页形式
2)如果客户端需要预先编制好报表应采用DataWindow Plug-in为上佳它能够在浏览器内显示已经生成并存储在Web服务器上PSR报表这个报表是预先生成所以不需要访问数据库用户可以在浏览器内查看、打印和保存报表PSR报表格式多样能够给WWW浏览增添不少风采
3)如果需要使用集中控制数据库和业务逻辑那么最好使用Web.PB
2.开发系统具体策略考虑及分布式介绍
由于要建立Web方式图书馆系统主要是基于Intranet结合上面所说几种考虑因此大部分应用就采用了Window Plug-in方式这不仅能体现PB强大功能而且能充分让你去发挥其功能把MIS系统管理和丰富多彩网页结合起来了
Web服务器用是微软PWS(Personal Web Server)Web.PB用是PBCGI60.EXE(表示是CGI标准)Sybase数据库NT平台
开发过程中大量使用了数据库连接单、多条件数据查询以及各种Control控件.Visible属性尤其是在TabControl控件中用到了selectionchanged事件index属性(以便每重新点击个Tabpage可以重新操作而不受以前操作影响)大大增强了表现效果
还要补充在建立应用过程中要注意点是不要使用全局对象特别是在child窗口不能用SQLCA作为事物对象(它应该算个全局变量Window Plug-in方式不支持全局变量)定要重新自定义个事物对象mytransaction若使用SQLCA单独运行窗口还可以旦要在客户端浏览器中出现肯定会报错而在这儿几乎没有哪本参考书特意强调过初学者创建自己应用时很容易在此走弯路
以上只算是建立了PB应用还要做有:生成.PBD文件并放到web共享目录下;编写HTML语句嵌入窗口放到服务器目录下这里关键性HTML语句是:
<body> <embed src=cgi-pbd/books.pbd width=700 height=600 window=w_bugao> </body>
Web.PB是基于PowerBuilder分布式应用技术的上Web.PB替代了客户端代理而已在PB分布式应用中PB客户应用和PB服务器应用的间对象分布如所图2所示

图 2
使用Web.PB进行基于服务器开发可以让PB建立基于服务器Web应用允许Web浏览器访问分布式PB应用服务这些分布式基于服务器应用可以动态生成HTML页或将HTML发送到Web浏览器这允许用户支持真正“瘦”客户机体系也就是在客户机上只需个浏览器这种方式也可以称为纯Browser/Server方式
如图2所示客户端通过Proxy对象定义服务器应用的中应用对象而Web.PB区别于传统客户端应用Web.PB区别于传统客户端应用Web.PB文件取代了客户端应用起作用相当于访问服务器应用接口在浏览器中用户可以访问分布式PB应用任何不可视对象属性和思路方法用户还可以向思路方法传递参数Web服务器和Web.PB通信将这些信息发送给分布式PB应用应用会执行思路方法并将结果以动态HTML形式返回给浏览器
建立Web.PB应用过程如下:
a. 建立并测试服务应用(这里是pb_net)
·创建应用对象
·创建应用启动窗口
·创建传输对象
·创建不可视用户对象
·编写用户对象
b. 编写可服务应用HTML页面这可通过FrontPage等主页编辑器也可通过Web.PB编程WIZARD来做
c. 将应用编译成可执行文件
d. 编辑Web.PB几个化文件
e. 设置Web服务器(主要是文件类型和Web目录设置等)
f. 启动服务应用和Web服务器
g. 用浏览器访问应用
服务应用编写和分布式应用类似就不再赘述这里需要补充编写用户对象是Web.PB应用中头等大事并且Web.PB中数据窗口般用都是Datastore这里创建了个用户对象uo_pbdemo实际上用户对象应该尽量要创建多才好特别是在那些大型应用中
Web.PB方式应用都是通过HTML中锚点Anchor(<A>)定义超链接或者是FORM(<FORM>)元素可输入域中键入信息后单击Submit按钮(定义也有超链接)来激活Web.PB实现而这些超链接对象形式上都是指向各个用户对象中(这些返回值均是系列HTML文文件)点务必要明确其实这点也是Web.PB方式核心思想概念所在
这里uo_pbdemo建立了数个挑出颇具代表性描述如下:
//从数据库中提取新书介绍
//f_retrieve_books无参数返回值是类型
ls_html
ls_search_arg
long ll_rows_retrieved

ds_names = CREATE datastore
ds_names.dataobject="d_books"
ds_names.transobject(gtr_trans)
ll_rows_retrieved= ds_names.retrieve
IF ll_rows_retrieved > 0 THEN
ls_html=ds_names.object.datawindow.data.htmltable
ELSE
ls_html = '此次找不到新书!'
END IF
RETURN ls_html
这是非常关键段代码其实就是了数据窗口htmltable属性而已要知道这种思想可以说是贯穿了整个Web.PB应用全过程
启动浏览器就可以检索到新书了当然还有个前提是:服务器确定是在监听即刚建立pb_inet应用必须在运行中
最后还要在服务器端配置几个INI文件:Hosts文件、services文件和PBWEB.INI文件当然这项工作实际上应该在整个工作的前所做
4、对 3种开发方式整理总结
1.有关Window Plug-in几点体会
1)Window Plug-in最适用于Intranet网前面提到过原因需要浏览器支持而且需要在浏览器端安装文件另外个原因就是Window Plug-in主要执行环境还是浏览器本身所在本地机环境只有在内部网情况下才能够对应用执行环境进行比较好控制避免出错
2)Window Plug-in适用于在浏览器端有比较复杂用户接口情况可避免编写大量HTML和CGI开发Internet经常遇到个难题就是在客户端没有足够组件现在有了Window Plug-in只要愿意就能把独立PB应用转移到浏览器中来执行
3)并且Window Plug-in移植和修改现有应用到Web上也可以说是不费什么力气还可以充分享受数据窗口强大功能
4)在Intranet环境下安全等原因就不是那么重要了可允许应用访问客户机磁盘使用户能够将本地资源和服务器资源结合起来应用
5)笔者看来这 3种IDT中Window Plug-in方式是最值得用
2. 有关DataWindow Plug-in几点体会
1)DataWindow Plug-in可以在Web上发布复杂报表加快向Web用户发布
2)它克服了HTML限制提供复杂报表包括列表形式、交叉表形式和图形方式等
3)它没有安全限制PSR文件是制度而这个报表并不在本地
运行PSR报表在浏览器中除了显示的外只能够运行保存数据和打印两种功能因此是十分安全
4)DataWindow Plug-in时静态显示报表种思路方法无法直接修改这种思路方法显示数据和报表格式但可以在个中央位置更新报表
5)PSR格式报表能够包含多种显示风格数据窗口但在DataWindow Plug-in中不支持Rich Text格式报表
3.Web.PB构建Web应用有如下优点:
a. 支持CGI、ISAPI、NSAPI、MSAPI等多种网关接口
b. 支持PowerBuilder中数据窗口引用
c. 易于将以前编写PowerBuilder应用移植到Web环境下
d. 易于创建嵌入PowerBuilder应用HTML文件应用服务器在运行环境下将根据用户需求 动态生成HTML语法发布完全动态信息
e. 支持数据库连接PowerBuilder所能够连接到数据库都可以被浏览器用户访问到使得 Web服务和数据库服务通过Powerbuilder 6.0完整地结合起来
另外点对Web.PB不足的处虽然说Sybase公司极力地让PB支持Web方式并且采取了很多方案其中种就是其引以为豪Web.PBWeb.PB在网络数据库方面确实有不小成绩可以采用集中式数据库管理但它在开发网络数据库方面也绝不会成为流行趋势它开发初衷就是主要面对广大PB老用户(老用户更容易上手)而且它在页面开发上过于单调且不说动态性不强光是大堆类库加上每个还有数个参数而且创建页面其实比手写HTML语言还要辛苦(它要返回个完整串到浏览器)联想到当今社会发展非常注重效率很难设想从头单纯学习PBIDT而仅仅为了编辑过于普通网页和开发网络数据库因此在这方面也就是说Web.PB广泛推广价值不大但是对于已经掌握了PB开发用户来说如果不想学习新语言或工具用Web.PB开发也是个很好选择

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

延伸阅读

最新评论

发表评论