1. 程式人生 > >PowerBuilder編程新思維3:適配(三層架構與GraphQL)

PowerBuilder編程新思維3:適配(三層架構與GraphQL)

erp軟件 支持 sqli mar prism 源碼 手動 auto png

PowerBuilder編程新思維3:適配(三層架構與GraphQL)

PB在富客戶端時代,是一線開發工具。隨著網絡發展,主流架構演進到三層架構的時代,PB拿不出有力的三層架構,已經明顯力不從心,市場份額也江河日下。今天我們來細數一下PB的三層架構方式及其改進方法。

PB三層架構方式一:EAServer

這是PB官方首推的三層架構,但是用三句可以總結,無感的體驗,無奈的價格,無語的速度。

事實上除了EAServer這個選擇,可以自己開發服務端,比如topwiz公司的PBNIServ

使用BPNI查詢數據,經過自己設計的傳輸格式,使用BLOB將數據傳到客戶端。

我也嘗試了Node.js插件的方式來實現,使用JS開發服務端邏輯。但是PB的單線程的模式,註定在速度與資源消耗上不能利人滿意。

技術分享圖片

PB三層架構方式二:代碼轉換

這是PB傳統版本最後推廣的PB.net的實現方式,把PowerScript轉換成JAVA或者C#,在成熟的J2EE和.NET環境中運行。這簡直是官方版的《PB從入門到放棄》,結果我都不想置評。

PB三層架構方式三:WebService

這個方式與方式二的簡易與手動版本,僅適用於大型公司與大型ERP軟件。因為必須要有很多開發人員和服務器支撐才行。

PB三層架構方式四:RESTful接口

這是一個PB官方正在推進的方式,下面是REST相關特性的規劃與進展。

技術分享圖片

相比需要最新的PB2017或PB2019才支持的REST特性,我們可以自己開發更簡單易用的接口,在老版本上使用。

接口很簡單,只需更改一行代碼

//dw_rest.retrieve()
i_thread.of_request(dw_rest, "http://jsonplaceholder.typicode.com/users")

PB三層架構方式五:GraphQL接口

RESTful接口有一個巨大的問題,就是服務器開發的耗費,不能用少量代價進行架構升級。所以我把目光投向了GraphQL。

GraphQL是一種用於 API 的數據查詢語言,相當於REST接口上的SQL,雖然還在演進過程中,但是已經出現了根據數據庫結構直接生成API的工具。

比如

  • Prisma - Turn your database into a GraphQL API. Prisma lets you design your data model and have a production ready GraphQL API online in minutes.

只需要幾分鐘。下面這個更狠,30秒

  • json-graphql-server - Get a full fake GraphQL API with zero coding in less than 30 seconds, based on a JSON data file.

還有更自動的

  • tuql - Automatically create a GraphQL server from any sqlite database.

所以使用了GraphQL接口,你只需要更改一句代碼就可以完成二層到三層架構的轉變。

//dw_qraphql.retrieve()
i_thread.of_request(dw_qraphql, "http://localhost:3000/?query={ allPosts { id title views User { name } } }")

技術分享圖片

源碼: PowerPlumeDemoV0.3.2.rar

提供了PB10.5 PB11.5 PB12.5三個版本

<第一部分 Inside完>

PowerBuilder編程新思維3:適配(三層架構與GraphQL)