PowerBuilder编程新思维3:适配(三层架构与GraphQL)
PowerBuilder编程新思维3:适配(三层架构与GraphQL)
PB在富客户端时代,是一线开发工具。随着网络发展,主流架构演进到三层架构的时代,PB拿不出有力的三层架构,已经明显力不从心,市场份额也江河日下。今天我们来细数一下PB的三层架构方式及其改进方法。
PB三层架构方式
方式一:EAServer
这是PB官方首推的三层架构,但是用三句可以总结,无感的体验,无奈的价格,无语的速度。
事实上除了EAServer这个选择,可以自己开发服务端,比如topwiz公司的PBNIServ
使用BPNI查询数据,经过自己设计的传输格式,使用BLOB将数据传到客户端。
我也尝试了Node.js插件的方式来实现,使用JS开发服务端逻辑。但是PB的单线程的模式,注定在速度与资源消耗上不能利人满意。
方式二:代码转换
这是PB传统版本最后推广的PB.net的实现方式,把PowerScript转换成JAVA或者C#,在成熟的J2EE和.NET环境中运行。这简直是官方版的《PB从入门到放弃》,结果我都不想置评。
方式三:WebService
这个方式与方式二的简易与手动版本,仅适用于大型公司与大型ERP软件。因为必须要有很多开发人员和服务器支撑才行。
方式四:RESTful接口
这是一个PB官方正在推进的方式,下面是REST相关特性的规划与进展。
相比需要最新的PB2017或PB2019才支持的REST特性,我们可以自己开发更简单易用的接口,在老版本上使用。
接口很简单,只需更改一行代码
//dw_rest.retrieve() i_thread.of_request(dw_rest, "http://jsonplaceholder.typicode.com/users")
服务端开发
如果抛开PB代码实现服务端,选择面就非常多了。如果要基于原有的PB代码进行升级,暂时没有可靠方案。
- DBApi - 零代码开发api服务,只需编写sql,就可以生成http api服务。
- json-server - Get a full fake REST API with zero coding in less than 30 seconds
方式五:APIJSON接口
APIJSON 是自动化的,后端不用写代码,就能自动解析前端传的 JSON 参数,自动转为 SQL 语句并连接数据库执行,然后返回对应的 JSON 结果,期间自动校验权限、数据、结构,自动防 SQL 注入。有多种语言后端实现。
- APIJSON - 零代码、全功能、强安全 ORM 库,后端接口和文档零代码,前端(客户端) 定制返回 JSON 的数据和结构。
方式六: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.
- 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_graphql, "http://localhost:3000/?query={ allPosts { id title views User { name } } }")
实现
提供了PB10.5 PB11.5 PB12.5三个版本
<第一部分 Inside完>