将C/S应用改造成B/S应用

----------------------------------------------------------------------------

----
转载 http://www.study01job.com/pb/book PB论坛 PB文章库


PB在B/S应用流行之前就很流行了,所以很多PB开发的程序有转换成B/S应用的需求。本

人就本人项目开发经验进行总结,总结转换过程中的技术问题,并没有给出具体的实例

。如果朋友们有这种需求的话,可以电话联系我公司进行咨询。 
一、客户端需要安装的程序如下: 
1)PB的窗口插件支持文件:nppba70.dll。将该文件拷贝到浏览器的plugins目录中即可

。 
2)PB的分发支持文件,包括: 
lPBVM70.DLL和LIBJCC.DLL是必须的两个文件, 
lPBDWE70.DLL是数据窗口支持文件, 
lNPPBA70.DLL是PB窗口插件支持文件, 
lSYSYB95.DLL是联结sybase数据库的支持文件 
lPBODB70.DLL是使用ODBC联结数据库的必须文件 
以上文件拷贝到操作系统的system目录中即可。 
3)设置ODBC:创建DSN,名称为gsDSN,SERVER为gs,数据库为gsj,使用sybase system 

11联结。 
4)在用户的C盘创建bs_report目录,并且放置gs.ini和role.ini配置文件。 
5)安装Sybase的前台文件。 

二、服务器端需要做如下工作: 
1)设置www服务器,添加MIME类型为application/vnd.powerbuilder7,和pbd后缀相对

应。 
2)将所有的pbd文件和页面文件统一放置到服务器的一个目录中。 
3)安装PowerBuilder的intenet工具。 

三、程序改造: 
1、合理划分模块,原则上每个PBD文件不应该大于1M(或者更大,具体视应用单位网络

状况而定)。按照用户使用情况对模块进行划分,同类功能的程序放置在相同的PBD包中

。 
2、对原来C/S体系结构中的程序结构进行比较彻底的清理,保证模块中不包含用不到的

程序,从而保证模块短小,从而提高运行速度。 
3、统一规划窗口的界面风格,对现有C/S应用程序中的界面风格进行全面调整,保持和

现有B/S系统总体界面的一致性。 
4、在保证原有C/S程序业务流程不变的情况下,根据B/S体系结构下程序的运行特点对原

来的程序做适当的调整。 
5、在窗口的Open事件中的所有SetTransObject或者类似的设置事务对象的函数都放置到

窗口的自定义事件中,并在Open事件中使用PostEvent函数来触发(注意,不能使用

TriggerEvent函数)。 
6、应用程序不能包含Main类型的窗口,使用Child类型即可。在窗口上不能有控制菜单

、最大和最小化按钮。最初窗口应用使用Child类型,可以在该窗口中打开其它的

Response、Popup类型的窗口,但是不能打开Main、mdi、Child等类型的窗口。 
7、当页面从包含最初的Child窗口打开其它窗口后,最初页面跳转到其它页面,这是虽

然最初的Child窗口关闭(相当于整个应用关闭),但是其它打开的窗口不会关闭,只能

在Child的Close事件或者CloseQuery事件中关闭其它的窗口。在Child窗口的CloseQuery

事件中,使用Return没有意义,不能阻止窗口的继续关闭。 
8、Application对象不起作用,仅仅在开发阶段用于调试。所有原来需要Application对

象完成的工作都只能在最初被打开的Child窗口中完成。Child窗口的Activate事件无效

。 
9、在程序中不能直接使用窗口的名称,只能使用This、Parent等指代词来表示窗口。