天天看點

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年的源碼更新服務。

至于進度,我盡量吧:)

<本節完>