天天看点

PowerBuilder编程新思维6.5:外传1(PowerPlume的设计与规划)

PowerPlume(孔雀翎)开发交流群:286502392

秋凤梧道:“孔雀翎并不是种武器,而是一种力量。”

“你虽然不必用它,但它却可以带给你信心。”

(引自古龙《七种武器》)

本来这个系列一直在鸽,直到遇到了一位大佬:

PowerBuilder编程新思维6.5:外传1(PowerPlume的设计与规划)

 看到大佬这么有诚意的样子,于是我可耻地同意了,之后大佬要我建群方便沟通,建了之后,为了方便群里的大佬们,我又连夜肝了这期博客。

从我写下《PB编程新思维》这个名字开始,已经过去了十年时间。在这期间,由于我的工作完全与PB无关,所以只能在业余时间心血来潮式的搞一搞。从一开始,文章完全只是一个目录,到慢慢积攒到一些心得,最后开始编写代码,写到现在内容已经跟当初预想的面目全非了。

我的想法很简单,就是针对PowerBuilder的缺点来改进,针对优点进行强化。

非常匮乏且难扩展的基础库

非常原始且封闭的交互界面

非常脆弱的源代码保护机制

使用脚本引擎替代扩展功能(PbniLua)

使用自绘界面替代传统界面(PbniDui)

使用原生编译替代伪码编译(PbniStl)

 这三种替代方案给PB注入了新活力,至少从一个有明显弱点、古老的工具,变成了一个比较可靠、现代的开发工具。

替代了弱点当然还不够,升级一下核心价值,提高PB的竞争力。

成熟的所见即所得界面设计

方便的多种数据库检索更新

独特的DataWindow数据展示

自动生成代码以及更换DW主题(CSS)

升级REST与BS两种三层架构(Lua/Web)

使用网页窗口丰富数据窗口(Wui)

 引入CSS,算是把PB从原始社会进化成了现代社会。引入REST接口进一步加强了与主流工具的联系,最后使用Web窗口重写DataWindow,彻底把PB与Web联系在了一起。

在PowerPlume的演进过程中,对于一些有趣但价值不高的内容,进行了更改和舍弃。

PowerHttpd 网页应用服务器

PowerNative 手机应用开发

PowerDriver 测试驱动(Selenium)

PB本身的多线程功能很弱,而应用服务器对性能要求很高,与其开发低质量的应用服务器,还不如放弃,而Rest接口的引入也彻底废弃了PB应用服务器。

同样的道理,也放弃了对手机应用开发的支持。

最后,测试工具对PB的支持有限,最大的限制是不支持DW,这就限制了PB工具90%的功能了。所以一直想做一个Selenium Driver来支持PB。仔细研究之后,发现这是一个力气活,工作不复杂但很多。明明是厂商自己的责任,没理由替它累死累活。再加上AirTest这个基于图像识别的测试工具的出现,彻底打消了我的念头。

PowerProvider 三层服务器ADO支持

PowerEngine 3D游戏引擎支持

PowerReact 2JS编译器

定制ADO驱动,来支持三层服务器这个方案已经有成熟产品,我就不讨论了。但PowerPlume用REST接口来替代了这个方案。

在PB的支持游戏引擎是我很早就已经研究并实现了,却一直不能落地的功能。因为开发一个界面所用的精力太大,很少人有预算来做这样的投入。所以使用Web替代了这个功能,不是Web开发的精力少了,而是可能性更多了。

而一个与PB兼容的开源2JS编译器,也只是一个想法而已,毕竟那是别人的饭碗。把PB代码转换成其它语言,需要开发的东西太多了,没有足够的吸引力。所以改为WebDW方式。

PB实在太古老了,长久的积淀变成了沉重的包袱,像是一个无形的枷锁制约着工具的发展。

这是一个看脸的时代,PB无论怎么努力打扮,在别人眼中就是一个小丑。这位哭泣的小丑,怎样努力才是未来?

安全像一个纯黑的噩梦,只给了PB开发者绝望。

 在前面,我已经竭力地展示了如何让技术升级,使用一个有接近20年历史(2003年推出的PowerBuilder 9.0)的编程工具开发具有现代感的应用程序。但是,事情到这里并没有结束,PB像一个曾经辉煌但已失落的国度,要想焕发新生,就必须回到主流的世界。

记录开发过程和不起眼的,但是效果很好的创意

组成部分:

PbLua,内嵌脚本语言,轻量级多线程。

PbDui,使用Duilib替代原生界面,美化界面控件。

PbStl,使用CSS修改数据窗口,同时可防止反编译。

PbWui,使用Web控件替代部分原生界面,同时支持三层模式。

PowerPlume会作为免费框架,开放给大家使用,有条件的公司可以购买源码,会提供2年的源码更新服务。

至于进度,我尽量吧:)

<本节完>