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 项目,真正重新体验了一把搬砖感觉:在一个多月时间好像不加任何思考,不断敲键盘加代码.我想,这也许是行业内大部分中小型公司程序猿的真实写照:都是坐在电脑前的搬砖工人.不 ...
随机推荐
- C++:面向对象
文章目录 继承与多态 继承 继承的构造与析构 虚继承 多态 ❀虚/纯虚函数❀ 虚析构/纯虚析构 对象的生命周期 实例化对象 构造函数与析构函数 拷贝构造函数 防止拷贝 总结 深拷贝与浅拷贝 初始化列表 ...
- Ceph配置与认证授权
目录 Ceph配置与认证授权 1. 为什么现在不采用修改配置文件的方式了呢? 2. Ceph元变量 3. 使用命令行修改配置 3.1 全部修改(使用服务名) 3.2 部分修改(修改进程) 3.3 临时 ...
- css 文本换行的问题
今天测试再测试功能的时候无意间发现了这个css的bug,我们可以仔细看第一张图的最后两行,明明还没有到结尾就自动换到最后一行去了,按理说应该是撑满当前行再挤到下一行去,于是我就去看了下css的文本溢出 ...
- HiveSQL 工作实战总结
记录一些工作中有意思的统计指标,做过一些简化方便大家阅读,记录如有错误,欢迎在评论区提问讨论~ 问题类型 连续问题 两种思路 第一种:日期减去一列数字得出日期相同,主要是通过row_number窗口函 ...
- 命运2 Cross Save
epic 上免费领的命运2,进不去,界面提示要扫码. 解决方法: 1.手机或电脑浏览器进入:https://www.bungie.net/. 2.使用epic 账号登录 ,然后设置一个邮箱,邮箱收到验 ...
- 网络诊断工具traceroute的使用
在 Linux 系统中,traceroute 是一个网络诊断工具,用于确定数据包从你的计算机到目标主机(如一个网站或远程服务器)所经过的路由路径. 如果你的系统中没有安装 traceroute,你可以 ...
- Cannot set properties of undefined (setting 'dataIndex')""
前端写桑基图的时候碰到以上bug 原因是: 桑基图中的name值有重复的,把重复的name值去掉就好了
- RSS 解析:全球内容分发的利器及使用技巧
使用 RSS 可以将最新的网络内容从一个网站分发到全球数千个其他网站. RSS 允许快速浏览新闻和更新. RSS 文档示例 <?xml version="1.0" encod ...
- 在线Token、随机密码生成工具
在线生成自定义长度,包含大写或小写字母.数字或符号的随机字符串.无论你需要生成API访问令牌.账户激活令牌,还是随机密码字符串,它都能帮你快速完成. 在线Token.随机密码生成工具
- url编码和解码分析URLEncoder.encode和URLDecoder.decode
url编码和解码分析 1.Get请求会将参数做默认的url解码操作,接口接收到的值是Get解码后的值.2.可以将Get操作修改成Post操作,这样不会url解码.可以在接口中做url解码.3.在多次传 ...