本发明专利技术提供了一种桌面应用框架,包括:UI交互业务层,用于提供UI界面,以及根据通过UI界面接收的指令创建对应业务的业务数据并打包生成二进制流;和/或,接收回调的业务数据的二进制流,解包及取出回调的业务数据并通过UI界面相应展示;业务服务层,采用Golang语言实现,用于接收二进制流并解包及取出业务数据,并使用该业务数据执行相应的业务;和/或,在执行某业务时创建回调的业务数据并打包生成二进制流;Go绑定层,向UI交互业务层和业务服务层提供了接口,用于实现UI交互业务层与业务服务层之间传输所述二进制流。还相应提供了基于该框架构建桌面应用的方法、所构建的桌面应用的运行方法及存储介质。本发明专利技术是一种适用于PLC或其他类似有UI交互和后台服务的桌面应用开发的解决方案。
Desktop application framework, construction method, desktop application operation method and storage medium
【技术实现步骤摘要】
桌面应用框架、构建方法、桌面应用运行方法及存储介质
本专利技术涉及一种桌面应用框架、基于该框架构建桌面应用的方法、所构建的桌面应用的运行方法及存储介质。
技术介绍
Electron是一个基于Chrominum和Node.js的跨平台桌面应用框架。在这个框架中很容易构建基于HTML、CSS和JavaScript技术的跨平台桌面应用。构建出来的桌面应用能较好地兼容Mac、Windows和Linux操作系统,Electron是能够轻松实现一套代码多个平台部署的UI解决方案。本申请人在开发PLC编程环境软件--MaVIEW(MaVIEW,ManagementofVirtualizedIndustrialEngineeringWorkbench,是北京东土科技股份有限公司提供的东土工业服务器或东土PLC控制器进行控制系统编程组态的一体化平台)时,桌面UI的实现采用了基于Electron框架进行构建。但本申请人在开发中发现,由于PLC采用嵌入式C语言开发,PLC与上层进行数据交互时大量C语言数据都基于C语言的结构体、数组等二进制流的方式存储,若这样的数据直接与基于Electron框架构建的UI交互,则需要做大量的语言结构的转换工作,编码工作量巨大。基于上述技术问题,目前互联网上所公开的大量资料提供的解决方案如下:由于Node.js底层内核是使用C++语言开发的v8Javascript解释引擎,故提出使用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(多个分支版本),MacOS常见的桌面操作系统,跨平台部署更加方便。可选的,所述UI交互业务层采用Electron框架,采用JavaScript或TypeScript语言实现。由上,由于Golang语言和Javascript语言可实现对象级别互操作,UI交互业务层和业务服务层之间无需特别的编码即可实现互相操作对象数据和方法。且UI交互业务层基于Electron框架的画面渲染技术时,基本上所改即所得,UI交互业务层采用的Electron框架,采用JavaScript或TypeScript的语言均为带有垃圾回收机制的高级编程语言,可大大降低学习门槛,又进一步提高软件的开发效率和调试效率。可选的,所述业务数据的内容通过googleprotobuf(googleprotobuf是一种结构数据序列化的方法)进行定义;使用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交互本文档来自技高网...
【技术保护点】
1.一种桌面应用框架,其特征在于,包括:依次耦接的UI交互业务层、Go绑定层和业务服务层;/nUI交互业务层用于提供UI界面,以及根据通过UI界面接收的用户操作创建对应该操作的业务和业务数据,并将业务数据打包生成二进制流;和/或,接收回调的业务数据的二进制流,解包及取出回调的业务数据并通过UI界面相应展示;/n业务服务层采用Golang语言实现,用于接收二进制流并解包及取出业务数据,并使用该业务数据执行相应的业务;和/或,在执行某业务时创建回调的业务数据并打包生成二进制流;/nGo绑定层向UI交互业务层和业务服务层提供了接口,用于实现UI交互业务层与业务服务层之间传输所述二进制流。/n
【技术特征摘要】
1.一种桌面应用框架,其特征在于,包括:依次耦接的UI交互业务层、Go绑定层和业务服务层;
UI交互业务层用于提供UI界面,以及根据通过UI界面接收的用户操作创建对应该操作的业务和业务数据,并将业务数据打包生成二进制流;和/或,接收回调的业务数据的二进制流,解包及取出回调的业务数据并通过UI界面相应展示;
业务服务层采用Golang语言实现,用于接收二进制流并解包及取出业务数据,并使用该业务数据执行相应的业务;和/或,在执行某业务时创建回调的业务数据并打包生成二进制流;
Go绑定层向UI交互业务层和业务服务层提供了接口,用于实现UI交互业务层与业务服务层之间传输所述二进制流。
2.根据权利要求1所述的框架,其特征在于,所述UI交互业务层采用Electron框架,采用JavaScript或TypeScript语言实现。
3.根据权利要求1或2所述的框架,其特征在于,
所述业务数据的结构体通过googleprotobuf进行定义;
使用protoc工具对所定义的业务数据的结构体分别生成JavaScript和Golang的类定义代码,UI交互业务层和业务服务层分别依据对应的类定义代码进行业务数据的所述创建和所述取出。
4.根据权利要求1所述的框架,其特征在于,Go绑定层提供的所述接口包括:
对UI交互业务层的正向调用接口,用于接收UI交互业务层所传递过来的业务数据的二进制流;
对业务服务层的正向调用接口,用于向业务服务层传输所述业务数据的二进制流。
5.根据权利要求4所述的框架,其特征在于,Go绑定层提供的所述接口还包括:
对UI交互业务层的回调注册接口,用于向UI交互业务层提供回调调用接口的注册服务;
对UI交...
【专利技术属性】
技术研发人员:宋健玮,边浩,
申请(专利权)人:北京东土科技股份有限公司,
类型:发明
国别省市:北京;11
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。