CN111158690A - 桌面应用框架、构建方法、桌面应用运行方法及存储介质 - Google Patents
桌面应用框架、构建方法、桌面应用运行方法及存储介质 Download PDFInfo
- Publication number
- CN111158690A CN111158690A CN202010001010.2A CN202010001010A CN111158690A CN 111158690 A CN111158690 A CN 111158690A CN 202010001010 A CN202010001010 A CN 202010001010A CN 111158690 A CN111158690 A CN 111158690A
- Authority
- CN
- China
- Prior art keywords
- service
- layer
- callback
- service layer
- interface
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 40
- 238000003860 storage Methods 0.000 title claims abstract description 18
- 238000010276 construction Methods 0.000 title claims description 3
- 230000003993 interaction Effects 0.000 claims abstract description 82
- 238000004806 packaging method and process Methods 0.000 claims abstract description 9
- 230000002441 reversible effect Effects 0.000 claims description 9
- 230000002452 interceptive effect Effects 0.000 claims description 6
- 230000005540 biological transmission Effects 0.000 claims description 2
- 238000011161 development Methods 0.000 abstract description 8
- 230000006870 function Effects 0.000 description 29
- 238000010586 diagram Methods 0.000 description 9
- 230000008569 process Effects 0.000 description 8
- 230000018109 developmental process Effects 0.000 description 7
- 238000004590 computer program Methods 0.000 description 5
- 238000009434 installation Methods 0.000 description 5
- 238000006243 chemical reaction Methods 0.000 description 4
- 238000012545 processing Methods 0.000 description 4
- 238000012546 transfer Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 3
- 238000003491 array Methods 0.000 description 2
- 239000000284 extract Substances 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 210000000349 chromosome Anatomy 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000008140 language development Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 238000011017 operating method Methods 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 238000004064 recycling Methods 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/38—Creation or generation of source code for implementing user interfaces
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本发明提供了一种桌面应用框架,包括:UI交互业务层,用于提供UI界面,以及根据通过UI界面接收的指令创建对应业务的业务数据并打包生成二进制流;和/或,接收回调的业务数据的二进制流,解包及取出回调的业务数据并通过UI界面相应展示;业务服务层,采用Golang语言实现,用于接收二进制流并解包及取出业务数据,并使用该业务数据执行相应的业务;和/或,在执行某业务时创建回调的业务数据并打包生成二进制流;Go绑定层,向UI交互业务层和业务服务层提供了接口,用于实现UI交互业务层与业务服务层之间传输所述二进制流。还相应提供了基于该框架构建桌面应用的方法、所构建的桌面应用的运行方法及存储介质。本发明是一种适用于PLC或其他类似有UI交互和后台服务的桌面应用开发的解决方案。
Description
技术领域
本发明涉及一种桌面应用框架、基于该框架构建桌面应用的方法、所构建的桌面应用的运行方法及存储介质。
背景技术
Electron是一个基于Chrominum和Node.js的跨平台桌面应用框架。在这个框架中很容易构建基于HTML、CSS和JavaScript技术的跨平台桌面应用。构建出来的桌面应用能较好地兼容Mac、Windows和Linux操作系统,Electron是能够轻松实现一套代码多个平台部署的UI解决方案。本申请人在开发PLC编程环境软件--MaVIEW(MaVIEW,Management ofVirtualized Industrial Engineering Workbench,是北京东土科技股份有限公司提供的东土工业服务器或东土PLC控制器进行控制系统编程组态的一体化平台)时,桌面UI的实现采用了基于Electron框架进行构建。
但本申请人在开发中发现,由于PLC采用嵌入式C语言开发,PLC与上层进行数据交互时大量C语言数据都基于C语言的结构体、数组等二进制流的方式存储,若这样的数据直接与基于Electron框架构建的UI交互,则需要做大量的语言结构的转换工作,编码工作量巨大。
基于上述技术问题,目前互联网上所公开的大量资料提供的解决方案如下:由于Node.js底层内核是使用C++语言开发的v8 Javascript解释引擎,故提出使用C++作为中间过渡来开发Node.js的插件,使UI与底层PLC的数据通过所开发的插件进行交互,尤其是底层PLC数据与Electron框架内的Javascript对象的交互。但C++语言有其天然弱点,如语言的学习难度较大、编码工作量较大、编码难度较大、编译时间过长,以及C++语言不支持垃圾回收等。
因此,有待提供一种适用于PLC开发的桌面应用的解决方案,以解决上述技术问题。
发明内容
有鉴于此,本发明的主要目的在于提供了一种桌面应用的框架、基于该框架构建桌面应用的方法、所构建的桌面应用的运行方法及存储介质,是一种适用于PLC或其他类似有UI交互和后台服务的桌面应用开发的解决方案。
本发明提供了一种桌面应用框架,包括:依次耦接的UI交互业务层、Go绑定层和业务服务层;
UI交互业务层用于提供UI界面,以及根据通过UI界面接收的用户操作创建对应该操作的业务和业务数据,并将业务数据打包生成二进制流;和/或,接收回调的业务数据的二进制流,解包及取出回调的业务数据并通过UI界面相应展示;
业务服务层采用Golang语言实现,用于接收二进制流并解包及取出业务数据,并使用该业务数据执行相应的业务;和/或,在执行某业务时创建回调的业务数据并打包生成二进制流;
Go绑定层向UI交互业务层和业务服务层提供了接口,用于实现UI交互业务层与业务服务层之间传输所述二进制流。
由上,采用Golang语言开发业务服务层,较传统桌面软件实现方案,具有以下独特优点:
业务服务层采用Golang语言实现,对嵌入式C语言数据完全兼容,无需背景技术中提到的为了语言结构的转换而进行的额外的编码工作,业务服务层Golang语言实现的业务逻辑完全能应付C语言结构体、数组的二进制流存储形式,因此无需为了语言结构的转换进行的额外的编码工作;
业务服务层使用Golang语言编译器,编译速度比传统C++编译器快上2~3倍;
业务服务层采用的Golang语言属于带有垃圾回收机制的高级编程语言,因此大大降低学习门槛,又进一步提高软件的开发效率和调试效率;
业务服务层的Golang语言由于是编译到机器码发布,当软件产品版权需要保护时,较完全基于Electron框架开发的桌面应用具有更好的加密策略,更不容易被不法分子盗版;
业务服务层采用Golang语言具有优秀的跨平台特点,基于本桌面应用框架构建的桌面应用可以使用一套代码而完全支持Windows,Linux(多个分支版本),Mac OS常见的桌面操作系统,跨平台部署更加方便。
可选的,所述UI交互业务层采用Electron框架,采用JavaScript或TypeScript语言实现。
由上,由于Golang语言和Javascript语言可实现对象级别互操作,UI交互业务层和业务服务层之间无需特别的编码即可实现互相操作对象数据和方法。且UI交互业务层基于Electron框架的画面渲染技术时,基本上所改即所得,UI交互业务层采用的Electron框架,采用JavaScript或TypeScript的语言均为带有垃圾回收机制的高级编程语言,可大大降低学习门槛,又进一步提高软件的开发效率和调试效率。
可选的,所述业务数据的内容通过google protobuf(google protobuf是一种结构数据序列化的方法)进行定义;
使用protoc工具对所定义的业务数据的内容分别生成JavaScript和Golang的类定义代码,UI交互业务层和业务服务层分别依据对应的类定义代码进行业务数据的所述创建和所述取出。
由上,采用Protobuf定义业务数据,作为所传输的二进制流的结构,上层UI交互业务层功能需要扩充时,有成熟的接口定义来支撑上下层接口版本的兼容性。
可选的,Go绑定层提供的所述接口包括:
对UI交互业务层的正向调用接口,用于接收UI交互业务层所传递过来的业务数据的二进制流;
对业务服务层的正向调用接口,用于向业务服务层传输所述业务数据的二进制流。
可选的,Go绑定层提供的所述接口还包括:
对UI交互业务层的回调注册接口,用于向UI交互业务层提供回调调用接口的注册服务;
对UI交互业务层的回调调用接口,用于向UI交互业务层返回回调的业务数据的二进制流;
对业务服务层的反向回调接口,用于接收业务服务层返回的回调的业务数据的二进制流。
可选的,所述对UI交互业务层的回调注册接口包括:高可靠级回调注册接口和低可靠级回调注册接口;相应的,
所述对UI交互业务层的回调调用接口包括:高可靠级回调调用接口和低可靠级回调调用接口。
本发明还提供了一种桌面应用,该桌面应用基于上述任一所述桌面应用框架构建。
本发明还提供了一种所构建的所述桌面应用的运行方法,包括:
由UI交互业务层根据通过UI界面接收的用户操作创建对应该操作的业务和业务数据,并将业务数据打包生成二进制流通过Go绑定层对UI交互业务层提供的正向调用接口传输给Go绑定层;
由Go绑定层将接收的二进制流通过向业务服务层提供的正向调用接口传输给业务服务层;
由业务服务层将接收的二进制流解包及取出业务数据,使用该业务数据执行相应的业务。
可选的,还包括:由UI交互业务层向Go绑定层注册一回调调用接口;
由业务服务层将执行相应的业务时创建回调的业务数据打包生成二进制流,通过Go绑定层提供的反向回调接口传输给Go绑定层;
由Go绑定层通过注册的所述回调调用接口将接收的二进制流传输给UI交互业务层;
由UI交互业务层将接收的二进制流解包及取出回调的业务数据并通过UI界面相应展示。
本发明还提供了一种可读存储介质,,所述可读存储介质存储有计算机可执行指令,所述计算机可执行指令用于使所述计算机执行所构建的所述桌面应用的运行方法。
附图说明
图1为适用于PLC开发的桌面应用的框架的原理图;
图2为基于图1的框架构建的桌面应用的同步模式执行方法的流程图;
图3为基于图1的框架构建的桌面应用的异步模式执行方法的流程图,(A)为正向流程图,(B)为回调流程图。
具体实施方式
为了使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请作进一步地详细描述。
本发明提出了一种适用于PLC开发的Electron桌面应用的框架,该框架由上至下包括UI交互业务层、Go绑定层和业务服务层。UI交互业务层主要提供UI界面,实现人机交互;业务服务层用于提供涉及PLC业务的各业务逻辑,用Golang语言实现以兼容嵌入式C语言;Go绑定层作为中间层向上下两层提供了接口,以将UI交互业务层与业务服务层之间的二进制流数据进行传输。基于该三层构架所构建的桌面应用,由于业务服务层兼容嵌入式C语言,能应付C语言结构体、数组的二进制流存储形式,因此避免了语言结构的转换工作。
通过本发明的框架可以构建出适用于PLC开发的桌面应用,并且,在发布该桌面应用的安装文件时,Go绑定层采用C++语言实现,可发布为一个.node文件,用于Node.js环境加载,业务服务层可为动态链接库,可为.dll或.so文件,由Go绑定层查找并加载。
下面参照图1对本发明框架进一步详细说明,其中:
UI交互业务层,提供UI界面,用于实现人机交互,通过UI界面接收用户操作创建对应该操作的业务和业务数据,并将业务数据打包生成二进制流以下发。以及当接收到回调的业务数据的二进制流时,解包及取出回调的业务数据并通过UI界面相应展示。UI交互业务层可以采用Electron框架实现,可采用JavaScript或TypeScript语言实现。
业务服务层,用于接收二进制流并解包取出业务数据,根据业务数据执行相应的业务,该业务包括对PLC在线监视、对PLC程序的调试与编译、程序下装等业务;以及在执行某业务时创建回调的业务数据并打包生成二进制流以上传。各业务的业务逻辑采用Golang语言(Golang,又称Go,是Google开发的一种编程语言)实现,由于Golang语言对嵌入式C语言数据完全兼容,Golang语言实现的业务逻辑完全能应付C语言结构体、数组的二进制流存储形式。
Go绑定层,向UI交互业务层和业务服务层提供了接口,用于将UI交互业务层要下发的二进制流传输至业务服务层,以及将业务服务层要回调的二进制流上传给UI交互业务层。Go绑定层向UI交互业务层提供了3个正向接口和2个回调调用接口,向业务服务层提供了2个接口。各个接口具体描述如下:
1、Go绑定层对UI交互业务层的3个正向接口描述如下:
1.1、正向调用接口,用于为UI交互业务层提供主动调用服务,以接收UI交互业务层所传递过来的打包为二进制流的业务数据。定义该接口传递messageid,proto参数,可以定义以DoCMD(messageid,proto)函数表示。
其中messageid是消息ID,用于区分proto装入的不同的二进制流;proto用来装入UI交互业务层所传递过来的封装为二进制流的业务数据,以传输该二进制流。
其中,传递业务数据的结构体通过google protobuf进行定义(即约定所要传递的参数),并使用protoc工具分别生成JavaScript和Golang的类定义代码,以使得基于JavaScript语言的UI交互业务层与基于Golang语言的业务服务层分别可以根据对应的类定义代码识别出所定义的结构体,以读取所包含的业务数据,如下示出了定义的一业务数据的例子,该例子是UI交互业务层接收用户编译指令,构建向下传递编译相关业务数据时所进行的定义。
//KycCompilerInput编译器接入输入
Message KycCompilerInput{
Int32 langID=1;//语言ID,1=中文、2=英文,与所使用的语言包有关
String resource_name=2;//PLC资源名,与PLC的逻辑名对应
String compiler_install_folder=3;//编译器安装路径,例如D:\icide_x64\bin\compiler\
……..
}
1.2、高可靠级回调注册接口,用于高可靠级的回调注册服务,适用于回调数据不能丢的高可靠性业务,定义该接口传递messageid,function参数,可以定义以RegFuncHighPri(messageid,function)函数表示。
其中,该function是所注册的要回调的函数(即回调调用接口),即当回调时使用哪个函数(即使用哪个回调调用接口)进行回调。该函数具体在下面的2.1部分进行介绍。
1.3、低可靠级回调注册接口,用于低可靠级的回调注册服务,适用于回调函数在上层UI刷新不及时允许丢弃的低可靠性业务,定义该接口传递messageid,function参数,可以定义以RegFuncLowPri(messageid,function)函数表示。
2、Go绑定层对UI交互业务层的2个回调调用接口描述如下:
2.1、高可靠级回调调用接口,用于高可靠性要求的底层服务对UI业务的回调,定义该接口传递id、result、output参数,可以定义以function(id,result,output)函数表示。
其中id即messageid;result参数用于表示本次回调是否成功;output用于传输本次回调时需要回调给上层的具体业务数据,该业务数据以打包为二进制数据流形式装入output。
该接口配合上述1.2中的高可靠级回调注册接口使用,当UI交互业务层向Go绑定层注册了高可靠级回调调用接口后,Go绑定层并接收到业务服务层上传的数据后,则通过该高可靠级回调调用接口将数据回调至UI交互业务层。
2.2、低可靠级回调调用接口,用于低可靠性要求的底层服务对UI业务的回调,定义该接口传递id、result、output参数,可以定义以function(id,result、output)函数表示。
3、Go绑定层对业务服务层的正向接口描述如下:
正向调用接口,用于调用业务服务层的服务逻辑,以将二进制流传输给业务服务层。定义该接口传递messageid,proto,size参数,可以定义以CallCMD(messageid,proto,size)函数表示。其中,size是所封装的二进制流的字节长度。
4、Go绑定层对业务服务层的反向接口描述如下:
反向回调接口,用于业务服务层向上传输回调的业务数据,定义该接口传递messageid,proto,size参数,可以定义以OnCallFromLibxxx(messageid,proto,size)函数表示。其中proto用来装入封装为二进制流的回调的业务数据。
当Go绑定层通过反向回调接口OnCallFromLibxxx接收到封装为二进制流的回调的业务数据后,会根据Go绑定层记录的messageid确定出所注册的回调调用接口,以及确定出是高可靠级还是低可靠级回调调用接口,并通过对应的function函数将二进制流的回调业务数据通过output参数传递给UI交互业务层。
本发明还相应的提供了基于图1所示框架所构建的桌面应用的执行方法,下面进行详细说明。
对于UI交互业务层不需要业务服务层返回相应数据的情况,例如用户仅通过UI交互业务层提供的UI界面发送一指令而不需底层返回响应消息时,不涉及回调接口,即不涉及上述1.2部分描述的高可靠级回调注册接口、上述1.3部分描述的低可靠级回调注册接口、上述2.1部分描述的高可靠级回调调用接口、上述2.2部分描述的低可靠级回调调用接口和上述4部分描述的Go绑定层对业务服务层的反向接口。参见图2示出的同步模式执行方法的流程图,结合一具体实施例对所构建的桌面应用的该情况的执行方法进行说明。其中,该具体实施例为:所开发的PLC编程软件具有两个不同的工作状态:本地编辑状态和与PLC建立通讯连接的在线状态,用户可以通过“Online”按钮在两个状态上切换,用户本次要切换到在线状态。对应该实施例,所构建的桌面应用的执行方法包括以下步骤:
S201、由UI交互业务层接收用户通过UI界面的操作,并根据本次业务创建一业务对象,并向该业务对象里设置要传递的业务数据,该业务数据即根据用户操作所确定出的所的要传递的参数,以及为该业务对象分配一消息ID(即messageid)。本实施例具体为:
用户在UI界面点击“Online”按钮控件,指示该桌面应用切换到在线状态(即使该桌面应用立刻通过以太网连接到远端PLC)时,UI交互业务层创建一OnLineMessage对象,并向该对象里设置TCP连接参数和其他参数。为该业务对象分配消息ID为101,消息ID用于区分不同的二进制流。
其中,OnLineMessage对象的结构体需预先定义,并使用protoc工具分别生成JavaScript和Golang的类定义代码,以使得基于JavaScript语言的UI交互业务层与基于Golang语言的业务服务层分别可以根据对应的类定义代码识别出OnLineMessage的内容。OnLineMessage可按如下进行定义:
//OnLineMessage切换到在线,与PLC进行连接
Message OnLineMessage{
String PLCName=1;//PLC名称
String RTE_IP=2;//PLC的IP
String RTE_PORT=3;//端口号
……..
}
S202、由UI交互业务层调用protojs自动生成的接口,对OnlineMessage对象打包成二进制流。
S203、UI交互业务层调用Go绑定层向UI交互业务层提供的正向调用接口DoCMD(messageid,proto)将打包的二进制流传输给Go绑定层。其中messageid即为所述消息ID,对应所述具体实施例值为101,proto装入所打包的二进制流。
S204、通过Go绑定层向业务服务层提供的正向调用接口CallCMD(messageid,proto,size),将所述消息ID和所述二进制流传输给业务服务层,size为proto所装入的二进制流的字节长度。
S205、业务服务层通过所述正向调用接口CallCMD(messageid,proto,size)收到数据后,根据其中的messageid创建该messageid对应的业务对象,并解包二进制流赋值给该业务对象,然后从该业务对象中提取业务参数,并根据该业务参数执行相应的业务。本实施例具体为:
业务服务层创建messageid即101对应的OnlineMessage对象指针;然后调用golang/protobuf自动生成的接口解包二进制流并赋值给OnlineMessage对象指针,然后从OnlineMessage对象里取出IP、端口号等TCP连接参数,根据这些参数与该远端IP地址执行TCP连接,使该桌面应用通过以太网连接到远端PLC。
对于UI交互业务层需要业务服务层返回相应数据的情况,可参见图3示出的异步模式执行方法的流程图,对所构建的桌面应用的该情况的执行方法进行说明,包括以下步骤:
结合一具体实施例对所构建的桌面应用的该情况的执行方法进行说明。其中,该具体实施例为:一PLC编程软件有这样一个编译需求:用户点击UI交互业务层的UI界面上的“编译”按钮,UI交互业务层收到按钮被点击指令后,把用户程序源代码打包传送给业务服务层的编译器模块,编译过程可能要耗时15秒~5分钟,视用户工程复杂度不同和当前计算机硬件配置高低而定,在此期间编译器若检测到用户程序有错误,需要能及时报告到UI交互业务层,并通过UI界面的窗口上展示给用户看,在编译过程中UI界面还会有个进度条,显示当前编译进度,编译刚开始时是0%,过程中不断增加,完成时达到100%。对应该实施例,所构建的桌面应用的执行方法包括以下步骤:
S301、UI交互业务层向Go绑定层注册一回调调用接口,用于接收从业务服务层里的编译器将要上报的报错信息和进度信息。而且由于这些信息的重要性(不可丢弃),所以使用高可靠的回调调用接口RegFuncHighPri(messageid,function)进行注册。其中messageid为本次消息ID,赋值为134,function为所要使用的回调函数。
S302、UI交互业务层创建一KycCompilerInput对象,并为对象里设置要传递的业务数据,本例中的业务数据包括PLC资源名、编译器安装路径等参数。该对象的消息ID即如上为134。
其中KycCompilerInput对象的结构体需预先定义,可按如下进行定义:
//KycCompilerInput编译器接入输入
Message KycCompilerInput{
Int32 langID=1;//语言ID,1=中文、2=英文,与所使用的语言包有关
String resource_name=2;//PLC资源名,与PLC的逻辑名对应
String compiler_install_folder=3;//编译器安装路径,例如D:\icide_x64\bin\compiler\
……..
}
S303、由UI交互业务层调用protojs自动生成的接口对KycCompilerInput对象打包成二进制流。
S304、UI交互业务层调用Go绑定层向UI交互业务层提供的正向调用接口DoCMD(messageid,proto)将打包的二进制流传输给Go绑定层。其中messageid即所述消息ID,对应所述具体实施例为134,proto装入所打包的二进制流。
S305、通过Go绑定层向业务服务层提供的正向调用接口CallCMD(messageid,proto,size),将打包的二进制流传输给业务服务层,size为proto所装入的二进制流的字节长度。
S306、业务服务层通过所述正向调用接口CallCMD(messageid,proto,size)收到数据后,根据其中的messageid创建该messageid对应的业务对象,并解包二进制流赋值给该业务对象,然后从该业务对象中提取业务参数,并根据该业务参数执行相应的业务。本实施例具体为:
业务服务层创建messageid即134对应的KycCompilerInput对象指针;然后调用golang/protobuf自动生成的接口解包二进制流并赋值给KycCompilerInput对象指针,然后从KycCompilerInput对象里取出PLC资源名、编译器安装路径等参数,根据这些参数执行编译工作。
S307、在执行编译过程中若产生错误信息,由业务服务层建立一回调业务的KycCallBackPara对象,及并向该业务对象里设置要回调的业务数据,该业务数据包括报错信息和进度信息,以及为该对象分配一消息ID,本例消息ID赋值为135。
其中该KycCallBackPara结构体也需要如上S302那样进行预先定义,可按如下定义:
//KycCallBackPara编译器回调函数参数内容
Message KycCallBackPara{
Double progress_rate=1;//编译进度百分比值[0.0-100.0]
Repeated OutputInfomation exp_out=2;//输入的错误信息(0或多条)
……..
}
S308、由业务服务层调用golang/protobuf自动生成的接口对KycCallBackPara对象打包成二进制流。
S309、业务服务层调用Go绑定层提供的反向回调接口OnCallFromLibxxx(messageid,proto,size)将打包的二进制流传输给Go绑定层。其中messageid即所述消息ID,对应所述具体实施例为135,proto装入所打包的二进制流。
S310、在Go绑定层内,通过messageid(值135)找到之前注册的、所匹配的messageid(值134),据此确定采用高可靠回调调用接口function(id,result,output),将所述二进制流装入output,然后通过该function(id,result,output)回调调用接口,将二进制流传输给UI交互业务层。
需要说明的是,由于通常对同一个业务提供支撑的messageid分配连续编号(例如为本次编译业务提供支撑的messageid分别为134、135),因此Go绑定层可以据此确定出之前注册、匹配的messageid,并进一步根据注册的回调调用接口信息确定出要使用的回调调用接口。
S311、UI交互业务创建消息ID值为135对应的kycCallBackPara对象,调用golang/protobuf自动生成的接口解包该二进制流,并赋值给kycCallBackPara对象,然后从kycCallBackPara对象里取出编译过程中的报错信息、编译进度信息,将报错信息和编译进度信息刷新到UI界面上,即显示所述报错信息、更新进度条。
在另一个实施例中,本发明还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令用于使所述计算机执行上述实施例中所构建的桌面应用的运行方法。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现、当使用软件程序实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述指令可以存储在计算机存储介质中,或者从一个计算机存储介质向另一个计算机存储介质传输,例如,所述指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带、磁光盘(MO)等)、光介质(例如,CD、DVD、BD、HVD等)、或者半导体介质(例如ROM、EPROM、EEPROM、非易失性存储器(NAND FLASH)、固态硬盘(Solid State Disk,SSD))等。本领域内的技术人员应明白,本申请实施例可提供为方法、系统、或计算机程序产品。因此,本申请实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请实施例是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。这些指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种桌面应用框架,其特征在于,包括:依次耦接的UI交互业务层、Go绑定层和业务服务层;
UI交互业务层用于提供UI界面,以及根据通过UI界面接收的用户操作创建对应该操作的业务和业务数据,并将业务数据打包生成二进制流;和/或,接收回调的业务数据的二进制流,解包及取出回调的业务数据并通过UI界面相应展示;
业务服务层采用Golang语言实现,用于接收二进制流并解包及取出业务数据,并使用该业务数据执行相应的业务;和/或,在执行某业务时创建回调的业务数据并打包生成二进制流;
Go绑定层向UI交互业务层和业务服务层提供了接口,用于实现UI交互业务层与业务服务层之间传输所述二进制流。
2.根据权利要求1所述的框架,其特征在于,所述UI交互业务层采用Electron框架,采用JavaScript或TypeScript语言实现。
3.根据权利要求1或2所述的框架,其特征在于,
所述业务数据的结构体通过google protobuf进行定义;
使用protoc工具对所定义的业务数据的结构体分别生成JavaScript和Golang的类定义代码,UI交互业务层和业务服务层分别依据对应的类定义代码进行业务数据的所述创建和所述取出。
4.根据权利要求1所述的框架,其特征在于,Go绑定层提供的所述接口包括:
对UI交互业务层的正向调用接口,用于接收UI交互业务层所传递过来的业务数据的二进制流;
对业务服务层的正向调用接口,用于向业务服务层传输所述业务数据的二进制流。
5.根据权利要求4所述的框架,其特征在于,Go绑定层提供的所述接口还包括:
对UI交互业务层的回调注册接口,用于向UI交互业务层提供回调调用接口的注册服务;
对UI交互业务层的回调调用接口,用于向UI交互业务层返回回调的业务数据的二进制流;
对业务服务层的反向回调接口,用于接收业务服务层返回的回调的业务数据的二进制流。
6.根据权利要求5所述的框架,其特征在于,所述对UI交互业务层的回调注册接口包括:高可靠级回调注册接口和低可靠级回调注册接口;相应的,
所述对UI交互业务层的回调调用接口包括:高可靠级回调调用接口和低可靠级回调调用接口。
7.一种桌面应用的构建方法,其特征在于,采用权利要求1至6任一所述桌面应用框架进行构建。
8.一种基于权利要求7所构建的桌面应用的运行方法,其特征在于,包括:
由UI交互业务层根据通过UI界面接收的用户操作创建对应该操作的业务和业务数据,并将业务数据打包生成二进制流通过Go绑定层对UI交互业务层提供的正向调用接口传输给Go绑定层;
由Go绑定层将接收的二进制流通过向业务服务层提供的正向调用接口传输给业务服务层;
由业务服务层将接收的二进制流解包及取出业务数据,使用该业务数据执行相应的业务。
9.根据权利要求8所述桌面应用的运行方法,其特征在于,还包括:
由UI交互业务层向Go绑定层注册一回调调用接口;
由业务服务层将执行相应的业务时创建回调的业务数据打包生成二进制流,通过Go绑定层提供的反向回调接口传输给Go绑定层;
由Go绑定层通过注册的所述回调调用接口将接收的二进制流传输给UI交互业务层;
由UI交互业务层将接收的二进制流解包及取出回调的业务数据并通过UI界面相应展示。
10.一种可读存储介质,其特征在于,所述可读存储介质存储有计算机可执行指令,所述计算机可执行指令用于使所述计算机执行权利要求8或9所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010001010.2A CN111158690B (zh) | 2020-01-02 | 2020-01-02 | 桌面应用框架、构建方法、桌面应用运行方法及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010001010.2A CN111158690B (zh) | 2020-01-02 | 2020-01-02 | 桌面应用框架、构建方法、桌面应用运行方法及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111158690A true CN111158690A (zh) | 2020-05-15 |
CN111158690B CN111158690B (zh) | 2023-11-17 |
Family
ID=70561020
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010001010.2A Active CN111158690B (zh) | 2020-01-02 | 2020-01-02 | 桌面应用框架、构建方法、桌面应用运行方法及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111158690B (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112395117A (zh) * | 2021-01-21 | 2021-02-23 | 武汉中科通达高新技术股份有限公司 | 一种数据处理方法、系统和存储介质 |
CN112463198A (zh) * | 2020-12-09 | 2021-03-09 | 深圳智药科技有限公司 | 基于Electron的更新方法及系统 |
CN112995145A (zh) * | 2021-02-05 | 2021-06-18 | 中国科学院信息工程研究所 | 面向dpi应用的http流量分析处理的方法、系统及存储介质 |
CN113076119A (zh) * | 2021-03-25 | 2021-07-06 | 北京车和家信息技术有限公司 | 一种车机程序的更新方法、装置、介质和电子设备 |
CN114500518A (zh) * | 2022-03-31 | 2022-05-13 | 广东睿江云计算股份有限公司 | 文件上传下载方法、装置、计算机设备及存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050198618A1 (en) * | 2004-03-03 | 2005-09-08 | Groupe Azur Inc. | Distributed software fabrication system and process for fabricating business applications |
CN104484182A (zh) * | 2014-12-25 | 2015-04-01 | 广东电子工业研究院有限公司 | 一种弹性可扩展的多数据源mvc模型架构 |
CN109359055A (zh) * | 2018-12-19 | 2019-02-19 | 北京东土科技股份有限公司 | 一种数据测试的方法和设备 |
CN109542425A (zh) * | 2018-11-15 | 2019-03-29 | 厦门商集网络科技有限责任公司 | 一种零售供应链的自动化应用方法和系统 |
CN110532021A (zh) * | 2018-05-25 | 2019-12-03 | 北京东土科技股份有限公司 | 分布式控制系统的组态文件的处理方法及装置 |
-
2020
- 2020-01-02 CN CN202010001010.2A patent/CN111158690B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050198618A1 (en) * | 2004-03-03 | 2005-09-08 | Groupe Azur Inc. | Distributed software fabrication system and process for fabricating business applications |
CN104484182A (zh) * | 2014-12-25 | 2015-04-01 | 广东电子工业研究院有限公司 | 一种弹性可扩展的多数据源mvc模型架构 |
CN110532021A (zh) * | 2018-05-25 | 2019-12-03 | 北京东土科技股份有限公司 | 分布式控制系统的组态文件的处理方法及装置 |
CN109542425A (zh) * | 2018-11-15 | 2019-03-29 | 厦门商集网络科技有限责任公司 | 一种零售供应链的自动化应用方法和系统 |
CN109359055A (zh) * | 2018-12-19 | 2019-02-19 | 北京东土科技股份有限公司 | 一种数据测试的方法和设备 |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112463198A (zh) * | 2020-12-09 | 2021-03-09 | 深圳智药科技有限公司 | 基于Electron的更新方法及系统 |
CN112463198B (zh) * | 2020-12-09 | 2021-06-22 | 深圳智药科技有限公司 | 基于Electron的更新方法及系统 |
CN112395117A (zh) * | 2021-01-21 | 2021-02-23 | 武汉中科通达高新技术股份有限公司 | 一种数据处理方法、系统和存储介质 |
CN112995145A (zh) * | 2021-02-05 | 2021-06-18 | 中国科学院信息工程研究所 | 面向dpi应用的http流量分析处理的方法、系统及存储介质 |
CN113076119A (zh) * | 2021-03-25 | 2021-07-06 | 北京车和家信息技术有限公司 | 一种车机程序的更新方法、装置、介质和电子设备 |
CN113076119B (zh) * | 2021-03-25 | 2023-12-12 | 北京车和家信息技术有限公司 | 一种车机程序的更新方法、装置、介质和电子设备 |
CN114500518A (zh) * | 2022-03-31 | 2022-05-13 | 广东睿江云计算股份有限公司 | 文件上传下载方法、装置、计算机设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN111158690B (zh) | 2023-11-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111158690B (zh) | 桌面应用框架、构建方法、桌面应用运行方法及存储介质 | |
CN111158818B (zh) | 一种页面渲染方法和装置 | |
CN110134386B (zh) | 一种程序编辑方法和装置 | |
CN111740948B (zh) | 数据包发布方法、动态更新方法、装置、设备及介质 | |
CN111408138B (zh) | 基于游戏引擎的渲染方法、装置及电子设备 | |
CN105760162A (zh) | 混合型app软件的开发方法 | |
CN111338623B (zh) | 一种开发用户界面的方法、装置、介质和电子设备 | |
CN110908697B (zh) | 一种资源打包方法、装置、服务器及存储介质 | |
CN113126990B (zh) | 一种页面开发方法、装置、设备及存储介质 | |
CN111176629A (zh) | 一种应用开发的方法和装置 | |
CN108804100B (zh) | 创建界面元素的方法、装置、存储介质及移动终端 | |
CN111857658A (zh) | 一种渲染动态组件的方法、装置、介质和电子设备 | |
CN112463123A (zh) | 任务编译方法、装置、网络节点、系统及存储介质 | |
CN114579091B (zh) | 跨操作系统的机器人流程自动化系统及方法 | |
CN113407255A (zh) | 组件调用方法、装置及计算机可读存储介质 | |
CN111026439A (zh) | 应用程序的兼容方法、装置、设备及计算机存储介质 | |
CN112395098B (zh) | 应用程序接口调用方法、装置、存储介质和电子设备 | |
CN110851211A (zh) | 用于显示应用信息的方法、装置、电子设备和介质 | |
CN109343970B (zh) | 基于应用程序的操作方法、装置、电子设备及计算机介质 | |
CN108228139B (zh) | 基于html5浏览器框架的单片机开发系统及装置 | |
CN112235132A (zh) | 动态配置服务的方法、装置、介质以及服务器 | |
CN105808313A (zh) | 智能终端数据交互系统及方法 | |
CN107423096A (zh) | 一种实现软件安装的方法及装置 | |
CN114547604A (zh) | 一种应用检测方法、装置、存储介质及电子设备 | |
CN112487322A (zh) | 一种第三方应用Loading页面的加载方法及显示设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
EE01 | Entry into force of recordation of patent licensing contract |
Application publication date: 20200515 Assignee: Beijing Shuili Intelligent Building Technology Co.,Ltd. Assignor: KYLAND TECHNOLOGY Co.,Ltd. Contract record no.: X2022990000047 Denomination of invention: Desktop application framework, construction method, desktop application operation method and storage medium License type: Common License Record date: 20220121 |
|
EE01 | Entry into force of recordation of patent licensing contract | ||
GR01 | Patent grant | ||
GR01 | Patent grant |