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 项目,真正重新体验了一把搬砖感觉:在一个多月时间好像不加任何思考,不断敲键盘加代码.我想,这也许是行业内大部分中小型公司程序猿的真实写照:都是坐在电脑前的搬砖工人.不 ...
随机推荐
- 鸿蒙HarmonyOS实战-Stage模型(ExtensionAbility组件)
一.ExtensionAbility组件 1.概念 HarmonyOS中的ExtensionAbility组件是一种能够扩展系统功能的能力组件.它可以通过扩展系统能力接口,为应用程序提供一些特定的功能 ...
- 提升WordPress网站加载速度的8个小技巧
提升WordPress网站加载速度是至关重要的,它不仅可以提高用户体验,还有助于SEO排名.以下是提升WordPress网站加载速度的8个小技巧,希望能帮助到大家. 优化图片: 使用适当大小和格式的图 ...
- CSS操作——列表属性
CSS中提供了一些列表属性可以用来: (1).设置不同的列表项标记为有序列表 (2).设置不同的列表项标记为无序列表 (3).设置列表项标记为图像 list-style-type(系统提供 ...
- Deepin15.11+WIN10 双系统安装过程与遇到的问题(一)
一.deepin安装流程 1.下载 下载深度系统最新版本官网https://www.deepin.org/zh/download/下载深度系统专用U盘启动盘制作工具https://www.deepin ...
- YUV图片旋转
1.从H264视频流中解析出来的图片格式是YUV YUV旋转可以选择手工旋转,也可以利用libYUV,libYUV开启NEON指令之后可以加快处理速度 在iOS系统上,利用Accelcerate库进行 ...
- MySQL学习笔记-多表查询(下)
多表查询(下) 一. 联合查询 联合查询:将多次查询结果合并,形成新的查询结果集 select {字段列表} from {表A} ... union [all] select {字段列表} from ...
- pandas基础--层次化索引
pandas含有是数据分析工作变得更快更简单的高级数据结构和操作工具,是基于numpy构建的. 本章节的代码引入pandas约定为:import pandas as pd,另外import numpy ...
- C# yyyyMMddHHmmss 格式的日期转换
C# yyyyMMddHHmmss 格式的日期转换 DateTime dtTimeEnd = DateTime.Now; if (!string.IsNullOrWhiteSpace(rspA.fin ...
- C# .NET Framework EXCEL NPOI EOF in header
实例化时异常: EOF in header 错误代码: try { workBook = new HSSFWorkbook(file); } catch { try { workBook = new ...
- asp.net中gridview隐藏一列并且使用这列数据的方法
方法一:在RowCreated事件中添加如下代码可隐藏此列,使用this.grdView.Rows[index].Cells[1].Text获取值,index为行号. 1 protected void ...