PowerBuilder编程新思维3:适配(三层架构与GraphQL)

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完>

原文地址:https://www.cnblogs.com/windfic/p/10338419.html

时间: 2024-10-25 17:54:38

PowerBuilder编程新思维3:适配(三层架构与GraphQL)的相关文章

PowerBuilder编程新思维4:钩挂(界面美化与DirectUI)

<第二部分 Outside> PowerBuilder编程新思维4:钩挂(界面美化与DirectUI) PB的界面由于其封闭性,一直以来都是最大的弱项.自PB9.0开放了PBNI接口后,开始流行起来一些界面美化方案.目前来看,共分三类. PB界面美化方案一:Canvas自绘 PBNI接口允许创建自绘组件,开源软件Kodigo创造了Canvas组件,允许PB代码自绘组件界面,由此开创了Canvas自绘方案.当前比较流行的组件库有: 一.Kodigo 二.AdvancedGUI 三.PowerFr

C++编程新思维中的技巧

1.编译器断言 技巧大致跟后面的一样,都是利用偏特化,但是在C++ 0X里面已经有static_assert,所以感觉这东西也没什么用处了,更多的只是开阔眼界 2.偏特化 就是专门对一个类型去进行特殊的处理,毕竟template会给生成所有的类型相同的操作,但是有时候我们需要对特定的几个类型去处理,于是就有了特化和偏特化 3.局部类 一直被忽略的C++的语法,可以直接在类或者函数里面定义类,不过一直被忽视就对了,感觉这个还是挺有意思的 4.常数映射为型别: template <int v> s

理论与实际相结合——三层架构解析

通常在程序编程中我们所说的三层架构是指:显示层(UI).逻辑层(BLL)和数据访问层(DAL).对于这三层来说,分工明确,各自有各自负责的领域. UI层:1.负责向用户显示数据  2.负责采集用户输入的信息 BLL层:1.从DAL获取数据,以供UI显示 2.从UI中获取指令或数据,经业务逻辑送达到DAL DAL层:1.主要用于对数据源的增删改查的操作. 通过它们各自负责的领域我们可以看出,BLL层属于中间层,它负责UI和DAL层之间的通信.那么通常我们还会加入一个实体层(Enity):主要负责返

MVC三层架构模式编程思想 JSP-Servlet-JavaBean

MVC(Mdodel-View-Controller)编程模式,把一个Java应用分成三层:模型层.视图层.控制层,各层分别实现各层的功能,整个过程见下图就一目了然了. JSP.JavaBean.Servlet三层架构即MVC编程模式是现在我们学习web应用编程的基础思想,上图是经本人总结后做出的图,有不对的地方望各位朋友多提意见.

JavaWeb编程(五)三层架构

1.JNDI:java命名目录接口,通过一个名称获取到应用服务器下创建的资源. 2.tomcat中配置数据源对象以及使用JNDI获取数据源对象步骤: a).tomcat下配置数据源:tomcat目录\conf\context.xml中配置 <Resource name="jdbc/mydb" auth="Container" type="javax.sql.DataSource" maxActive="1000" max

Web编程规范之三层架构设计规范

本篇是我对Web开发规范中关于三层架构设计规范的一些浅见.虽然三层架构是比较普通,也比较简单的架构设计模式.但是随着业务的增长,涉及到的对象越来越多,处理的逻辑越来越复杂.这其中难免会出现设计不当,从而导致业务报错或逻辑代码混乱等问题的出现.下面我就来简单的谈一谈我是如何设计的?(注:本篇的见解是在基于当前比较流行的MVC设计模式,不知道什么是MVC设计模式的小伙伴,请自行查找相关资料.) 逻辑划分 在三层的架构设计中通常会采用如下设计方案对逻辑进行划分: Controller (表现层) 在M

用java观察者模式解耦经典三层架构

三层架构是一个很经典的架构模式,依据系统的职责不同.将系统分成了表现层,逻辑层和数据訪问层,而且配合数据实体进行传输数据,能够大大的封装性和复用性. 经典的三层架构图: 我们再深入到架构图内部.看看详细的类图,用简单的登陆举例吧: 这里通过LoginUI.调用了LoginLogService和LoginVerificationService两个类.通过类图能够看得出,U层和Service层(本文把BLL层称为了Service层)直接採用了直接调用的方式. 在面向对象的设计中.一直强调要面向接口编

ASP.NET的三层架构(DAL,BLL,UI)

BLL 是业务逻辑层 Business Logic Layer DAL 是数据访问层 Data Access Layer ASP.NET的三层架构(DAL,BLL,UI) 图形表示三层结构. 其中web即为USL层 web –> bll –> dal | | | | V | +–> model <-+ 一.三层体系架构 1.表示层(USL):主要表示WEB方式,也可以表示成WINFORM方式.如果逻辑层相当强大和完善,无论表现层如何定义和更改,逻辑层都能完善地提供服务. 2.业务逻

从零开始编写自己的C#框架(5)——三层架构介绍

原文:从零开始编写自己的C#框架(5)--三层架构介绍 三层架构对于开发人员来说,已经是司空见惯了,除了大型与超小型项目外,大多都是这种架构来进行开发. 在这里为初学者们简单介绍一下三层架构: (下面内容摘自<趣味理解:三层架构与养猪-<.NET深入体验与实战精要>>,这是以前看到的关于三层架构介绍,觉得挺经典的,大家有时间的话认真看看) 对比以上两图,我们可以看出: 1)数据库好比猪圈 ,所有的猪有序地按区域或编号,存放在不同的猪栏里. 2)DAL 好比是屠宰场 ,把猪从猪圈取出