PowerBuilder编程新思维6.5:外传1(PowerPlume的设计与规划)
<第五部分 Otherside 意外的宝藏>
每一颗种子都有发芽的梦想。PowerPlume(孔雀翎)开发交流群:286502392
PowerBuilder编程新思维6.5:外传1(PowerPlume的设计与规划)
前言
本来这个系列一直在鸽,直到遇到了一位大佬:

看到大佬这么有诚意的样子,于是我可耻地同意了,之后大佬要我建群方便沟通,建了之后,为了方便群里的大佬们,我又连夜肝了这期博客。
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方式。
PowerPlume的博客大纲
第一部分 Inside 无形的枷锁
PB实在太古老了,长久的积淀变成了沉重的包袱,像是一个无形的枷锁制约着工具的发展。
PowerBuilder编程新思维1—扩展(Lua)
PowerBuilder编程新思维2—嵌入(多线程)
PowerBuilder编程新思维3—适配(GraphQL)
第二部分 Outside 哭泣的小丑
这是一个看脸的时代,PB无论怎么努力打扮,在别人眼中就是一个小丑。这位哭泣的小丑,怎样努力才是未来?
PowerBuilder编程新思维4—钩挂(在DW中显示,打印)
PowerBuilder编程新思维5—包装(用DirectUI美化界面)
PowerBuilder编程新思维6—装饰(用最简单的方式做框架)
第三部分 Backside 纯黑的噩梦
安全像一个纯黑的噩梦,只给了PB开发者绝望。
PowerBuilder编程新思维7—剥离(用CSS美化DW)
PowerBuilder编程新思维8—克隆(ORCA有价值的用法,批量生成代码)
PowerBuilder编程新思维9—切分(从逻辑上实现源码安全)
第四部分 Frontside 失落的国度
PB像一个曾经辉煌但已失落的国度,要想焕发新生,就必须回到主流的世界。
PowerBuilder编程新思维10—增强(以DW的方式扩展WEB,PDF浏览)
PowerBuilder编程新思维11—集成(Push实时消息推送)
PowerBuilder编程新思维12—分享(使用Excel做报表)
第五部分 Otherside 意外的宝藏
记录开发过程和不起眼的,但是效果很好的创意
PowerBuilder编程新思维6.5--外传1(PowerPlume的设计与规划)
PowerBuilder编程新思维10.5--外传2()
PowerBuilder编程新思维11.5--外传3()
PowerBuilder编程新思维12.5--外传4()
PowerBuilder编程新思维12.6--外传5()
PowerPlume的后续规划
组成部分:
- PbLua,内嵌脚本语言,轻量级多线程。
- PbDui,使用Duilib替代原生界面,美化界面控件。
- PbStl,使用CSS修改数据窗口,同时可防止反编译。
- PbWui,使用Web控件替代部分原生界面,同时支持三层模式。
PowerPlume会作为免费框架,开放给大家使用,有条件的公司可以购买源码,会提供2年的源码更新服务。
至于进度,我尽量吧:)
<本节完>
PowerBuilder编程新思维6.5:外传1(PowerPlume的设计与规划)的更多相关文章
- PowerBuilder编程新思维5:包装(界面美化与WebUI+React)
PowerBuilder编程新思维5:包装(界面美化与WebUI+React) 前一节,分析了三种界面美化方案,都是控件级的美化.今天再来分析一下窗口级的美化.上一次讲的DirectUI,大家反响一般 ...
- PowerBuilder编程新思维4:钩挂(界面美化与DirectUI)
<第二部分 Outside> PowerBuilder编程新思维4:钩挂(界面美化与DirectUI) PB的界面由于其封闭性,一直以来都是最大的弱项.自PB9.0开放了PBNI接口后,开 ...
- PowerBuilder编程新思维3:适配(三层架构与GraphQL)
PowerBuilder编程新思维3:适配(三层架构与GraphQL) PB在富客户端时代,是一线开发工具.随着网络发展,主流架构演进到三层架构的时代,PB拿不出有力的三层架构,已经明显力不从心,市场 ...
- PowerBuilder编程新思维2:嵌入(Thread多线程)
PowerBuilder编程新思维2:嵌入(Thread多线程) 在PB中使用多线程,在网上有大量的文章介绍.不过深入研究并试着给出更易用的模型的,目前还只有"路人甲cw"的一篇& ...
- PowerBuilder编程新思维1:扩展(Lua)
前言 PowerBuilder作为开发工具退出一线行列已经很久了,在2019年来谈这样一款老旧的编程工具是否有意义?诚然,PB有着太多硬伤,但还是有它的用武之地的.而且今天讲的这个“新思维”大部分内容 ...
- C++编程新思维中的技巧
1.编译器断言 技巧大致跟后面的一样,都是利用偏特化,但是在C++ 0X里面已经有static_assert,所以感觉这东西也没什么用处了,更多的只是开阔眼界 2.偏特化 就是专门对一个类型去进行特殊 ...
- 【响应式编程的思维艺术】 (2)响应式Vs面向对象
目录 一. 划重点 二. 面向对象编程实例 2.1 动画的基本编程范式 2.2 参考代码 2.3 小结 三. 响应式编程实现 四. 差异对比 4.1 编程理念差异 4.2 编程体验差异 4.3 数学思 ...
- 《C++设计新思维》Command设计模式读后感
原文内容提领: 本书第5章标题为泛化仿函数,我认为本章真正讲述的内容可以总结出一句话! 如何利用C++老标准实现C++11新标准类似std::function提供的功能. std::function简 ...
- 《C++设计新思维》勘误,附C++14新解法
勘误: 原书(中文版)3.13节,65-69页中GenScatterHierarchy以及FieldHelper均存在问题,当TypeList中类型有重复时,无法通过编译(原因在于“二义性基类”). ...
- restapi(7)- 谈谈函数式编程的思维模式和习惯
国庆前,参与了一个c# .net 项目,真正重新体验了一把搬砖感觉:在一个多月时间好像不加任何思考,不断敲键盘加代码.我想,这也许是行业内大部分中小型公司程序猿的真实写照:都是坐在电脑前的搬砖工人.不 ...
随机推荐
- OpenTelemetry agent 对 Spring Boot 应用的影响:一次 SPI 失效的
背景 前段时间公司领导让我排查一个关于在 JDK21 环境中使用 Spring Boot 配合一个 JDK18 新增的一个 SPI(java.net.spi.InetAddressResolverPr ...
- ES集群的扩缩容
ES集群节点的扩容缩容案例 1.在集群中添加和删除节点 当您启动Elasticsearch实例时,您正在启动一个节点.Elasticsearch集群是一组具有相同cluster.name属性的节点.当 ...
- 如何模拟HTTP请求并验证功能
要模拟HTTP请求并验证功能,你可以使用Spring Boot提供的MockMvc工具,它允许我们在没有实际启动HTTP服务器的情况下测试Spring MVC控制器.以下是一个使用MockMvc进行H ...
- JS 监听用户页面访问&页面关闭并进行数据上报操作
JS 监听用户页面访问&页面关闭操作并进行数据上报 前言 最近在做安全方面的项目,有个需求是在用户访问页面和关闭页面的时候,发送对应的数据. 刚拿到需求的时候,觉得没啥东西,init 的时候发 ...
- Java中双括号初始化是个什么操作
最近在阅读Mybatis源码的时候,看到了一种原来很少见到的语法: public class RichType { ... private List richList = new ArrayList( ...
- Java并发编程(一)JUC同步类
JUC 是学习 Java 并发编程的小伙伴不可避免的一个 pkg,JUC提供了对并发编程的底层支持,比如我们熟悉的线程池.MQ.线程同步... 都有JUC的影子,下面我们一起来看看JUC下比较重要的几 ...
- React 中的 useRef 与 useState
React 是一个流行的 JavaScript 库,用于构建用户界面.它提供了几个钩子,使开发人员能够管理状态并执行副作用. React 中两个常用的钩子是 useRef 和 useState .虽然 ...
- golang开发 gorilla websocket的使用
很多APP都需要主动向用户推送消息,这就需要用到长连接的服务,即我们通常提到的websocket,同样也是使用socket服务,通信协议是基本类似的,在go中用的最多的.也是最简单的socket服务就 ...
- Qt_Demo_1:实现一个简易的记事本
1 环境: 系统:windows 10 代码编写运行环境:Qt Creator 4.4.1 (community) GitHub:https://github.com/zhengcixi/Qt_De ...
- Qt下载、安装及环境搭建
1 下载 刚开始去的官网下载,需要注册账号,而且还比较麻烦,后来找到了一个安装包的链接,直接下载就好了:http://mirrors.ustc.edu.cn/qtproject/archive/qt ...