CN107092473A - 桌面应用开发方法及设备 - Google Patents

桌面应用开发方法及设备 Download PDF

Info

Publication number
CN107092473A
CN107092473A CN201610932300.2A CN201610932300A CN107092473A CN 107092473 A CN107092473 A CN 107092473A CN 201610932300 A CN201610932300 A CN 201610932300A CN 107092473 A CN107092473 A CN 107092473A
Authority
CN
China
Prior art keywords
api
module
view
desktop application
desktop
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
Application number
CN201610932300.2A
Other languages
English (en)
Other versions
CN107092473B (zh
Inventor
左现金
仓晨阳
孙丹
马琳
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Xiaodu Information Technology Co Ltd
Original Assignee
Beijing Xiaodu Information Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing Xiaodu Information Technology Co Ltd filed Critical Beijing Xiaodu Information Technology Co Ltd
Priority to CN201610932300.2A priority Critical patent/CN107092473B/zh
Publication of CN107092473A publication Critical patent/CN107092473A/zh
Application granted granted Critical
Publication of CN107092473B publication Critical patent/CN107092473B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/38Creation or generation of source code for implementing user interfaces
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/31Programming languages or programming paradigms
    • G06F8/315Object-oriented languages

Abstract

本申请实施例公开一种桌面应用开发方法及设备。方法包括:运行支持web技术的应用开发环境;在所述应用开发环境中,基于web技术构建桌面App的容器;其中,所述容器实现所述桌面App的页面功能和所述页面功能关联的系统API调用逻辑,并与实现所述桌面App的业务逻辑的web站点交互。本申请实施例利用web技术开发桌面App,有利于降低开发桌面App的复杂度和技术成本。

Description

桌面应用开发方法及设备
技术领域
本申请涉及互联网技术领域,尤其涉及一种桌面应用开发方法及设备。
背景技术
桌面应用(Application,App)是指:个人电脑、台式机、笔记本电脑等中运行的具有独立功能的应用程序。
传统桌面App是通过C++、C#、Java等具备图形用户界面(Graphical UserInterface,GUI)视图开发能力的高级语言进行开发的,这些语言的特点是语言能力强大、灵活,可以开发出功能强大的桌面App。
发明内容
在通过C++、C#、Java等具备GUI视图开发能力的高级语言开发桌面App的过程中,发明人发现:这些高级语言的GUI库复杂、多样,且能力参差不齐,并存在跨语言的鸿沟,不同语言之间的实现方式完全不同,使得桌面App的开发复杂度较高、技术成本较高。
针对上述开发桌面App过程中存在的问题,本申请发明人想到可以利用万维网(web)技术开发桌面App,以充分利用web技术的优势,例如web领域中的超文本标记语言(HyperText Markup Language,HTML)、层叠样式表(Cascading Style Sheets,CSS)、JavaScript(JS)等编程语言具有简单、灵活、功能强大等特性以及熟悉或精通web技术的人才资源较丰富,有利于降低开发桌面App的复杂度和技术成本。
但是,随着互联网技术的发展,桌面App的业务逻辑越来越强大,而且与用户之间的交互也越来越重要,如果直接利用web技术开发完整的桌面App难度相对较大,将无法充分发挥采用web技术所带来的优势。于是,本申请发明人考虑采用“容器+web站点”的开发模式,采用web技术分别构建容器和web站点,以实现利用web技术开发桌面App的目的,充分利用web技术的优势。
基于上述分析,本申请一实施例提供一种桌面App开发方法,包括:运行支持web技术的应用开发环境;在所述应用开发环境中,基于web技术构建桌面App的容器;其中,所述容器实现所述桌面App的页面功能和所述页面功能关联的系统API调用逻辑,并与实现所述桌面App的业务逻辑的web站点交互。
基于web技术所构建的桌面App的容器,可以有多种实现架构,不同实现架构的开发难度不同。如果可以合理布局容器的实现架构,将极大地降低容器的构建难度,进而降低桌面App的开发复杂度和技术成本。
在本申请一可选实施方式中,提供一种容器架构,包括视图层和桥接层;其中,视图层实现桌面App的页面功能;桥接层为视图层提供系统API调用和语言隔离服务。这种容器架构相对简单,功能划分清晰,便于构建。
基于上述容器架构,构建所述容器的步骤包括:根据所述页面功能,构建实现所述页面功能的视图层;以及构建为所述视图层提供系统API调用和语言隔离服务的桥接层。
可选的,上述视图层的构建步骤,包括:根据所述页面功能中的静态展示需求和系统API调用需求,构建用于静态展示web页面和触发系统API调用的网络视图模块;根据所述页面功能中的动态展示需求,构建用于动态控制界面元素的视图控制模块;其中,所述网络视图模块和所述视图控制模块还具有信息传递功能,以传递与系统API调用相关的信息。
可选的,上述网络视图模块的构建步骤,包括:根据前端框架定义的规则,在所述应用开发环境中的Node.js运行环境中,生成视图界面的代码文件;在所述视图界面的代码文件运行时的上下文中,动态注入API调用逻辑,所述API调用逻辑包括底层API中的方法名称。
可选的,上述视图控制模块的构建步骤,包括:根据前端框架定义的规则,在所述应用开发环境中的Node.js运行环境中,生成JS代码文件。
可选的,上述桥接层的构建步骤,包括:根据所述桌面应用中的业务逻辑,封装系统API以生成所述业务逻辑对应的API封装包;声明所述API封装包为被调用对象,以生成调用所述API封装包所需的第一代码文件;以及生成实现语言隔离功能的第二代码文件,并建立所述第一代码文件对所述第二代码文件的引用关系。
可选的,上述第二代码文件的生成步骤,包括:根据所述语言隔离功能,编写初始代码文件;编译所述初始代码文件,以输出编译文件作为所述第二代码文件。
与上述方法实施例相对应,本申请另一实施例提供一种桌面App开发设备,包括:运行模块,用于运行支持web技术的应用开发环境;构建模块,用于在所述应用开发环境中,基于web技术构建桌面应用的容器;其中,所述容器实现所述桌面应用的页面功能和所述页面功能关联的系统API调用逻辑,并与实现所述桌面应用的业务逻辑的web站点交互。
可选的,所述构建模块包括:视图层构建单元,用于根据所述页面功能,构建实现所述页面功能的视图层;桥接层构建单元,用于构建为所述视图层提供系统API调用和语言隔离服务的桥接层。
可选的,所述视图层构建单元包括:第一构建子单元,用于根据所述页面功能中的静态展示需求和系统API调用需求,构建用于静态展示web页面和触发系统API调用的网络视图模块;第二构建子单元,用于根据所述页面功能中的动态展示需求,构建用于动态控制界面元素的视图控制模块;其中,所述网络视图模块和所述视图控制模块还具有信息传递功能,以传递与系统API调用相关的信息。
可选的,所述桥接层构建单元包括:封装子单元,用于根据所述桌面应用中的业务逻辑,封装系统API以生成所述业务逻辑对应的API封装包;代码生成子单元,用于声明所述API封装包为被调用对象,以生成调用所述API封装包所需的第一代码文件,以及生成实现语言隔离功能的第二代码文件;关系建立子单元,用于建立所述第一代码文件对所述第二代码文件的引用关系。
可选的,所述构建模块还包括以下至少一种单元:目录创建单元,用于创建所述桌面应用的资源目录;安装包生成单元,用于生成所述桌面应用的可执行的安装文件包;安装引导生成单元,用于生成所述桌面应用的安装引导模块;级引导生成单元,用于生成所述桌面应用的升级引导模块;异常监测生成单元,用于生成所述桌面应用的异常监测上报模块。
在本申请实施例中,将桌面App分为容器和web站点,分别利用web技术构建桌面App的容器和web站点,实现利用web技术开发桌面App的目的,可以很好地解决现有技术在开发桌面App时存在的开发复杂、技术成本高、人力资源稀缺等问题。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1为本申请一实施例提供的桌面App开发方法的示意图;
图2为本申请一实施例所开发的桌面App的结构示意图;
图3为本申请另一实施例提供的桌面App的容器的框架示意图;
图4为本申请又一实施例提供的桌面App的容器的框架示意图;
图5为本申请又一实施例提供的桌面App的容器的框架示意图;
图6为本申请又一实施例提供的桌面App开发设备的结构示意图;
图7为本申请又一实施例提供的桌面App开发设备的结构示意图;
图8为本申请又一实施例提供的视图层构建单元的结构示意图;
图9为本申请又一实施例提供的桥接层构建单元的结构示意图;
图10为本申请又一实施例提供的桌面App开发设备的结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请具体实施例及相应的附图对本申请技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
针对现有技术在开发桌面App时存在的开发复杂、技术成本高、人力资源稀缺等问题,本申请实施例提供一种桌面App开发方法,主要是采用“容器+web站点”的开发模式,分别利用web技术构建桌面App的容器和web站点,从而实现利用web技术开发桌面App的目的,充分发挥web技术的优势,解决桌面App开发复杂、技术成本高、人力资源稀缺等问题,提高开发桌面App的灵活性,降低开发复杂度和技术成本。
以下结合附图,详细说明本申请各实施例提供的技术方案。
图1为本申请一实施例提供的桌面App开发方法的流程示意图。如图1所示,该方法包括:
101、运行支持万维网(web)技术的应用开发环境。
102、在上述应用开发环境中,基于web技术构建桌面App的容器;其中,该容器实现所述桌面App的页面功能和所述页面功能关联的系统API调用逻辑,并与实现所述桌面App的业务逻辑的web站点交互。
一般来说,桌面App的开发依赖于应用开发环境。在本实施例中,采用支持web技术的应用开发环境。
可选的,所述支持web技术的应用开发环境可以由应用开发人员自行搭建。所述搭建支持web技术的应用开发环境主要是指根据开发需求选择所需的开发工具,并安装开发工具的过程。
例如,可以选择但不限于:Node.js、NPM、Bower、Git以及Grunt等现有工具,以构建支持web技术的应用开发环境。其中,Node.js是一个基于Chrome V8引擎的JavaScript运行环境,它使用了一个事件驱动、非阻塞式的输入/输出(Input/Output,I/O)模型,因此轻量又高效。NPM(Node Package Manager)是Node.js的包管理和分发工具,是全球最大的开源库生态系统。Bower是一个客户端技术的软件包管理器,它可用于搜索、安装和卸载如JS、HTML、CSS之类的网络资源。Git是一款免费、开源的分布式版本控制系统,可以高效地处理任何项目。Grunt是基于Node.js的项目构建工具,它拥有数量庞大的插件,可以自动运行开发人员所设定的任务。
可选的,本实施例也可以采用现有支持web技术的应用开发环境,例如NW.js(Node-Webkit.js)。NW.js是一个基于Chromium和Node.js的应用运行时,它允许开发者利用HTML和JS编写桌面App,并允许开发者从DOM调用Node.js的模块。由此可见,NW.js为开发者采用web技术开发桌面App提供了实施条件。
在上述应用开发环境的基础上,可以采用web技术开发桌面App。但是,采用web技术开发桌面App是一项大工程,为了简化基于web技术开发桌面App的难度,提高基于web技术开发桌面App的可实施性,本实施例采用“容器+web站点”的开发模式,即将桌面App分为容器和web站点,如图2所示。
其中,桌面App的web站点实现桌面App的业务逻辑。web站点虽然承载了桌面App的业务逻辑但并不支持对系统API的调用,而对系统API的调用是桌面App的特殊性需求,这就要求桌面App的容器具有调用系统API的功能。另外,桌面App的容器还需要内嵌web页面,即需要具有页面功能。由此可见,桌面App的容器需要实现桌面App的页面功能和所述页面功能关联的系统API调用逻辑,并与web站点交互,从而实现整个桌面App的功能。
上述页面功能主要是指与web页面展示有关的功能,例如包括静态展示web页面、动态控制界面元素、以及响应web页面上事件等。
举例说明,web页面展示样式,例如页面是否包括导航栏,页面上字体大小、颜色、以及页面布局等,属于静态展示web页面的范畴。
举例说明,在web页面上显示窗口、浮层、通知消息以及显示/隐藏控件等,属于动态控制界面元素的范畴。
举例说明,响应于用户对web页面上刷新控件的触发,向web站点请求最新web页面的过程,以及响应于用户对web页面上打印控件的触发,调用系统API的事件的过程等,属于响应web页面上事件的范畴。
上述容器与web站点之间交互包括但不限于:向web站点请求web页面的过程,以及响应于web页面上事件的触发而与web站点进行其它信息交互的过程等。例如,以用户登录为例,容器需要向web站点请求登录页面,所述登录页面上设有账号和密码输入框,在用户输入账号和密码后,容器会将账号和密码上传至web站点,在web站点对用户身份进行验证并通过后,向容器返回桌面应用的首页面。
上述容器实现系统API调用逻辑主要是指响应于web页面上事件的触发调用系统API的过程。例如,用户针对页面更新设置声音提醒功能,即当web页面上有新订单、订单取消等更新操作时,容器调用操作系统提供声音API,以控制本地音频设备发出提示音。
上述web站点需要实现的业务逻辑视具体桌面App而定。例如,对于外卖系统中面向商家的桌面App,所述业务逻辑主要包括接收订单,处理订单,推送活动信息以及信息配置等。又例如,对于外卖系统中面向消费者的桌面App,所述业务逻辑主要包括信息展示功能、购物车功能、下单功能、支付功能、查看订单功能、评价功能等。
其中,web站点的实现可采用现有技术,一般是基于web技术的。本申请实施例重点关注如何基于web技术构建桌面App的容器。所述容器的构建依赖于支持web技术的应用开发环境,即运行支持web技术的应用开发环境,以在该应用开发环境中,基于web技术构建所述容器。
web技术主要使用HTML、CSS和JS等开发语言,与C++、C#、Java等高级语言相比,这些语言具有简单、灵活、功能强大等特性;另外,在互联网时代,基于.net的C++开发人员日益短缺,而熟悉或精通web技术的人才资源相对丰富。而本实施例将web技术与“容器+web站点”这种开发模式相结合,从而达到采用web技术开发桌面App的目的,充分利用了web技术具有的优势,有利于降低开发桌面App的复杂度和技术成本。
在本申请各实施例中,基于web技术构建桌面App的容器,但并不限定所述容器的实现架构,凡是可以实现桌面App的页面功能以及与所述页面功能关联的系统API调用逻辑的容器架构均适用于本申请。但是,可以理解的是,不同实现架构的开发难度不同。如果可以合理布局容器的实现架构,将极大地降低容器的构建难度,进而有利于降低桌面App的开发复杂度和技术成本。
在本申请一可选实施方式中,提供一种容器架构。如图3所示,该容器架构包括视图层和桥接层;其中,视图层实现桌面App的页面功能;桥接层为视图层提供系统API调用和语言隔离服务。
基于图3所示容器架构,一种构建容器的过程主要包括:根据页面功能,构建实现所述页面功能的视图层;以及构建为视图层提供系统API调用和语言隔离服务的桥接层。其中,视图层主要负责提供web页面的核心渲染能力。对于视图层展示的web页面来说,运行环境和浏览器相同,同样可以调用浏览器提供的DOM、样式、WebGL等能力。桥接层位于操作系统与视图层之间,一方面向视图层提供系统API调用,另一方面实现视图层与操作系统之间的语言隔离。这种容器架构相对简单,功能划分清晰,所以构建过程相对简单,有利于降低整个桌面App的开发难度,提高桌面App的开发效率。
进一步,在图3所示容器架构的基础上,考虑到视图层所实现的页面功能较多,可以在功能上对视图层作进一步划分,以构建划分出的各个单元,使得构建单元的粒度更小,有利于降低构建复杂度;另外,构建单元的粒度越小,其复用度就越高。
基于上述分析,在一可选实施方式中,进一步分析页面功能,从中概括出页面功能的主要需求,例如静态展示需求、系统API调用需求以及动态展示需求。其中,静态展示需求要求视图层能够静态展示web页面;系统API调用需求要求视图层能够响应web页面上事件的触发而调用系统API;动态展示需求要求视图层能够动态控制界面元素。基于从页面功能中分析出的功能需求,进一步将视图层划分为网络视图(webview)模块和视图控制模块,如图4所示。其中,网络视图模块主要用于静态展示web页面和触发系统API调用;视图控制模块主要用于动态控制界面元素。
基于图4所示视图层的实现架构,一种构建视图层的过程主要包括:根据页面功能中的静态展示需求和系统API调用需求,构建用于静态展示web页面和触发系统API调用的网络视图模块;以及根据页面功能中的动态展示需求,构建用于动态控制界面元素的视图控制模块;另外,网络视图模块和视图控制模块还需要具有信息传递功能,所以还需要实现网络视图模块和视图控制模块之间的信息传递功能,以便于网络视图模块和视图控制模块传递与系统API调用相关的信息。
对网络视图模块来说,需要实现静态展示web页面和触发系统API调用。静态展示web页面实际上是与视图界面相关的功能,从该角度来看,构建网络视图模块需要生成视图界面的代码文件。而触发系统API调用实际上是指在桌面App运行过程中能够响应web页面上事件的触发而调用系统API的功能,从该角度来看,构建网络视图模块还需要在视图界面的代码文件运行时的上下文中,动态注入API调用逻辑,该API调用逻辑包括系统API中的方法名称。值得说明的是,该API调用逻辑包括接收逻辑和发送逻辑;所述发送逻辑是指响应于web页面上事件的触发向下层模块(例如桥接层、系统层)发送API调用指令的过程;所述接收逻辑是指接收下层模块根据API调用指令返回API调用结果的过程。关于动态注入属于现有技术,在此不做详述。
基于上述分析,一种构建网络视图模块的过程包括:根据前端框架定义的规则,在上述应用开发环境中的Node.js运行环境中,生成视图界面的代码文件;以及在视图界面的代码文件运行时的上下文中,动态注入API调用逻辑。
其中,前端框架的作用主要是:定义业务代码开发的流程、规范(如HTML文件、CSS文件的书写规范)、提供封装好的基础功能API(比如:组件的封装、引用、组件间通信的方式)。基于此,可以根据前端框架定义的规则,在Node.js运行环境中书写视图界面的代码文件,例如HTML文件和CSS文件,在书写代码文件中可以利用前端框架所提供的组件定义、组件间通信的方式、组件引用的规则等,但并不限于这些。
相应地,对视图控制模块来说,需要动态控制界面元素。构建所述视图控制模块也就是生成能够动态控制界面元素的功能代码。基于此,一种构建视图控制模块的过程包括:根据前端框架定义的规则,在上述应用开发环境中的Node.js运行环境中,生成JS代码文件。对本领域技术人员来说,JS文件一般用于动态控制界面元素,例如窗口、通知消息、浮层等控件的显示/隐藏等。另外,前端框架还会定义JS文件的书写规范,可以根据前端框架定义的JS文件的书写规范,在Node.js运行环境中书写JS代码文件。
在本申请实施例中,不对前端框架做限定,例如可以采用开源的VUE框架,但并不限于此。
进一步,在图3所示容器架构的基础上,桥接层需要为视图层提供系统API调用和语言隔离服务。在一可选实施方式中,一种构建桥接层的过程,包括:
根据桌面App中的业务逻辑,封装系统API以生成业务逻辑对应的API封装包;
声明所述API封装包为被调用对象,以生成调用所述API封装包所需的第一代码文件;以及
生成实现语言隔离功能的第二代码文件,并建立第一代码文件对第二代码文件的引用关系。
在该实施方式中,根据业务逻辑对系统API进行封装,形成业务逻辑与API封装包的对应关系,API封装包中包括对应业务逻辑所需的系统API以及系统API之间的执行逻辑等信息。对于业务逻辑来说,只需调用对应的API封装包即可,减少了调用系统API的次数,有利于提高业务执行效率,尤其对一些相对复杂的业务逻辑,例如需要调用多个系统API或者需要多次重复调用系统API的业务逻辑,该效果更为明显。
桥接层需要实现对API封装包的调用功能,可以在Node.js运行环境中,编写调用API封装包所需的第一代码文件,在第一代码文件中需要将API封装包声明为被调用对象。另外,桥接层还需要在调用API封装包过程中实现容器与操作系统之间的语言隔离,可以在Node.js运行环境中,编写实现语言隔离功能的第二代码文件,并建立第一代码文件在调用API封装包时对第二代码文件的引用关系。
基于上述方法构建的桥接层,在桌面App运行过程中,可以响应于视图层传输过来的API调用指令,根据API调用指令确定需要调用的API封装包,在调用所确定的API封装包过程中引用第二代码文件实现web语言与系统API使用的高级语言之间的转换,以成功调用所确定的API封装包并向视图层返回调用结果。对被调用的API封装包来说,会按照被封装的执行逻辑执行相应操作。
在一可选实施方式中,上述第二代码文件实际上存储的是web语言与系统API采用的高级语言之间的转换关系。这种转换关系一般不会发生变化,因此可以预先编译生成,这种方式资源消耗较少,有利于提高整体编译效率。基于此,生成第二代码文件的过程包括:根据所述语言隔离功能,编写初始代码文件;编译所述初始代码文件,以输出编译文件作为第二代码文件。可选的,初始代码文件包括C++代码,通过编译过程将C++代码编译为中间码文件,即第二代码文件。
在一可选实施方式中,上述生成API封装包的过程包括但不限于以下至少一种操作:
封装系统中提供打印服务的API,以生成打印API封装包;
封装系统中提供声音服务的API,以生成声音API封装包;
封装系统中提供窗体控制服务的API,以生成窗体API封装包;
封装系统中提供命令调用服务的API,以生成调用API封装包。
基于上述,如果视图层触发调用打印API封装包,则打印API封装包会按照被封装的业务逻辑控制打印机执行打印操作;如果视图层触发调用声音API封装包,则声音API封装包会按照被封装的业务逻辑执行声音提示操作,例如通过声音提醒商家有新订单、订单取消等;如果视图层触发调用窗体API封装包,则窗体API封装包会按照被封装的业务逻辑执行窗体的置顶、窗体闪动提醒、窗体自动获取焦点等操作;如果视图层触发调用调用API封装包,则调用API封装包会按照被封装的业务逻辑执行系统命令、系统API的调用。
值得说明的是,随着桌面App能力的不断完善和增强,会增加新的API封装包来适应更多的能力变化。
在本申请各实施例中,基于web技术开发的桌面App的容器,除了具有图3所示视图层和桥接层之外,还可以具有其他功能。下面举例说明:
可选的,在开发桌面App的过程中,可以创建桌面App的资源目录。该资源目录包括开发桌面App所需的一些资源信息,例如桌面App的图标、名称、相关资源文件等。这相当于将开发桌面App所需的资源预先加载到本地,开发过程中可以直接到该资源目录来获取所需资源,有利于提高开发效率。
可选的,开发桌面App的目的是为了供用户使用,为了便于用户使用桌面App,在开发完成桌面App之后,可进一步生成桌面App的可执行的安装文件包。可选的,可以将桌面App的容器和开发所述容器的运行环境(例如Node.js)一起打包,形成桌面App的安装文件包。通过一定方式发布该安装文件包,以供用户下载并安装,最终达到使用桌面App的目的。
可选的,安装桌面App是用户使用桌面App的第一步,如果安装过程相对友好,将极大地提升用户使用桌面App的兴趣,因此可以生成桌面App的安装引导模块,以引导用户安装桌面App,提高用户体验。
成功安装桌面App后,可以启动桌面App。在桌面App运行过程中,可以执行但不限于以下几种操作:
桌面App向用户展示web页面,web页面上包括打印控件;响应于用户对打印控件的触发,通过桥接层调用打印API封装包,以控制桌面App所在设备外链的打印设备打印相应内容,例如订单小票等。
桌面App向用户展示web页面,web页面预设声音提醒事件;响应于声音提醒事件的触发,通过桥接层调用声音API封装包,以控制桌面App所在设备的音频模块发出提示音,例如提醒有新订单或异常订单等。
可选的,桌面App需要升级,因此可以生成桌面App的升级引导模块。升级引导模块可以在桌面App启动过程中升级桌面App或执行异常回滚,进而提高桌面App在启动、升级过程中的健壮性。
可选的,桌面App在运行过程中可能出现异常,因此可以生成桌面App的异常监测上报模块。异常监测上报模块可以发现桌面App运行过程中出现的异常并及时通知到桌面App的服务端,便于服务端及时地对异常做出反应,降低对用户的使用影响。
如图5所示,为又一容器框架的示意图。在该容器框架中,包括:视图层、桥接层以及一些辅助模块,例如安装引导模块、升级引导模块、异常监测上报模块、日志模块等。其中,视图层包括网络视图模块和视图控制模块;桥接层包括一些API封装包,例如打印API封装包、声音API封装包、以及窗体API封装包等。
基于图5所示容器架构,桌面App启动时,升级引导模块可能升级桌面App;而在桌面App运行时可能发生以下一种或多种操作:
网络视图模块负责加载并展示web页面,动态控制模块动态控制web页面上的界面元素;
web页面上有事件发生且该事件需要调用系统API,则网络视图模块检测到事件并根据运行时上下文中动态注入的API调用逻辑,触发系统API调用并向视图控制模块传递;视图控制模块继续向桥接层传递系统API调用;桥接层引用语言隔离功能将web语言转换为系统API使用的高级语言,调用相应的API封装包,并反向传递API调用结果;
web页面上有事件且该事件要求与web站点或服务端交互,则网络视图模块检测到事件,并与web站点或服务端进行交互;
日志模块记录桌面App运行时产生的日志;
异常监测上报模块监测桌面App的运行状况,发现异常并及时通知服务端。
在本申请各实施例中,所采用的应用开发环境除了支持web技术之外,还可以支持跨平台。借助于应用开发环境的跨平台特性,所开发的桌面App也具有跨平台特性,可以兼容常见的windows系统、Mac系统以及ubuntu等linux系统,即只需要一份代码实现即可运行在多种不同的操作系统中,极大地降低了桌面App的开发成本和后期的维护成本。
由上述可见,本申请实施例提供的桌面App开发方法,将桌面App分为容器和web站点,分别利用web技术构建桌面App的容器和web站点,实现利用web技术开发桌面App的目的,可以很好地解决现有技术在开发桌面App时存在的开发复杂、技术成本高、人力资源稀缺等问题。另外,使用web技术开发桌面App的容器实现方案简单,开发完成后无需进行复杂的编译过程,代码结构简单,可以很方便地实现部署、升级以及小流量更新。同时,由于代码不需要编译成字节码,可以方便的查看生产环境代码,为调试带来了极大的便捷性,降低了调试成本。而对于需要保密的代码,也可以通过一些技术手段混淆编译后的内容,以达到保护源代码的目的。
需要说明的是,上述实施例所提供方法的各步骤的执行主体可以是同一设备,或者,该方法也由不同设备作为执行主体。
图6为本申请又一实施例提供的桌面App开发设备的结构示意图。如图6所示,该设备包括:运行模块61和构建模块62。
运行模块61,用于运行支持web技术的应用开发环境。
构建模块62,用于在应用开发环境中,基于web技术构建桌面App的容器。
其中,容器实现桌面App的页面功能和页面功能关联的系统API调用逻辑,并与实现桌面App的业务逻辑的web站点交互。
在一可选实施方式中,如图7所示,构建模块62的一种实现结构包括:视图层构建单元621和桥接层构建单元622。
视图层构建单元621,用于根据页面功能,构建实现页面功能的视图层。
桥接层构建单元622,用于构建为视图层提供系统API调用和语言隔离服务的桥接层。
可选的,如图8所示,视图层构建单元621的一种实现结构包括:第一构建子单元6211和第二构建子单元6212。
第一构建子单元6211,用于根据页面功能中的静态展示需求和系统API调用需求,构建用于静态展示web页面和触发系统API调用的网络视图模块。
第二构建子单元6212,用于根据页面功能中的动态展示需求,构建用于动态控制界面元素的视图控制模块。
其中,网络视图模块和视图控制模块还具有信息传递功能,以传递与系统API调用相关的信息。
进一步,第一构建子单元6211具体用于:根据前端框架定义的规则,在应用开发环境中的Node.js运行环境中,生成视图界面的代码文件;在视图界面的代码文件运行时的上下文中,动态注入API调用逻辑,API调用逻辑包括系统API中的方法名称。
进一步,第二构建子单元6212具体用于:根据前端框架定义的规则,在应用开发环境中的Node.js运行环境中,生成JS代码文件。
可选的,如图9所示,桥接层构建单元622的一种实现结构包括:封装子单元6221、代码生成子单元6222和关系建立子单元6223。
封装子单元6221,用于根据桌面App中的业务逻辑,封装系统API以生成业务逻辑对应的API封装包。
代码生成子单元6222,用于声明API封装包为被调用对象,以生成调用API封装包所需的第一代码文件,以及生成实现语言隔离功能的第二代码文件。
关系建立子单元6223,用于建立第一代码文件对第二代码文件的引用关系。
进一步,代码生成子单元6222在生成第二代码文件时,具体用于:根据语言隔离功能,编写初始代码文件;编译初始代码文件,以输出编译文件作为第二代码文件。
进一步,封装子单元6221封装系统API包括以下至少一种封装操作:
封装系统中提供打印服务的API,以生成打印API封装包;
封装系统中提供声音服务的API,以生成声音API封装包;
封装系统中提供窗体控制服务的API,以生成窗体API封装包;
封装系统中提供命令调用服务的API,以生成调用API封装包。
可选的,如图10所示桌面App开发设备的结构,构建模块62还包括以下至少一种单元:
目录创建单元623,用于创建桌面App的资源目录;
安装包生成单元624,用于生成桌面App的可执行的安装文件包;
安装引导生成单元625,用于生成桌面App的安装引导模块;
升级引导生成单元626,用于生成桌面App的升级引导模块;
异常监测生成单元627,用于生成桌面App的异常监测上报模块。
可选的,应用开发环境为跨平台的开发环境。
本实施例提供的桌面App开发设备,将桌面App分为容器和web站点,分别利用web技术构建桌面App的容器和web站点,实现利用web技术开发桌面App的目的,可以很好地解决现有技术在开发桌面App时存在的开发复杂、技术成本高、人力资源稀缺等问题。另外,使用web技术开发桌面App的容器实现方案简单,开发完成后无需进行复杂的编译过程,代码结构简单,可以很方便地实现部署、升级以及小流量更新。同时,由于代码不需要编译成字节码,可以方便的查看生产环境代码,为调试带来了极大的便捷性,降低了调试成本。而对于需要保密的代码,也可以通过一些技术手段混淆编译后的内容,以达到保护源代码的目的。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。

Claims (15)

1.一种桌面应用开发方法,其特征在于,包括:
运行支持web技术的应用开发环境;
在所述应用开发环境中,基于web技术构建桌面应用的容器;
其中,所述容器实现所述桌面应用的页面功能和所述页面功能关联的系统API调用逻辑,并与实现所述桌面应用的业务逻辑的web站点交互。
2.根据权利要求1所述的方法,其特征在于,所述容器的构建步骤,包括:
根据所述页面功能,构建实现所述页面功能的视图层;以及
构建为所述视图层提供系统API调用和语言隔离服务的桥接层。
3.根据权利要求2所述的方法,其特征在于,所述视图层的构建步骤,包括:
根据所述页面功能中的静态展示需求和系统API调用需求,构建用于静态展示web页面和触发系统API调用的网络视图模块;
根据所述页面功能中的动态展示需求,构建用于动态控制界面元素的视图控制模块;
其中,所述网络视图模块和所述视图控制模块还具有信息传递功能,以传递与系统API调用相关的信息。
4.根据权利要求3所述的方法,其特征在于,所述网络视图模块的构建步骤,包括:
根据前端框架定义的规则,在所述应用开发环境中的Node.js运行环境中,生成视图界面的代码文件;
在所述视图界面的代码文件运行时的上下文中,动态注入API调用逻辑,所述API调用逻辑包括系统API中的方法名称。
5.根据权利要求3所述的方法,其特征在于,所述视图控制模块的构建步骤,包括:
根据前端框架定义的规则,在所述应用开发环境中的Node.js运行环境中,生成JS代码文件。
6.根据权利要求2-5任一项所述的方法,其特征在于,所述桥接层的构建步骤,包括:
根据所述桌面应用中的业务逻辑,封装系统API以生成所述业务逻辑对应的API封装包;
声明所述API封装包为被调用对象,以生成调用所述API封装包所需的第一代码文件;以及
生成实现语言隔离功能的第二代码文件,并建立所述第一代码文件对所述第二代码文件的引用关系。
7.根据权利要求6所述的方法,其特征在于,所述第二代码文件的生成步骤,包括:
根据所述语言隔离功能,编写初始代码文件;
编译所述初始代码文件,以输出编译文件作为所述第二代码文件。
8.根据权利要求6所述的方法,其特征在于,所述API封装包的生成步骤,包括以下至少一种操作:
封装系统中提供打印服务的API,以生成打印API封装包;
封装系统中提供声音服务的API,以生成声音API封装包;
封装系统中提供窗体控制服务的API,以生成窗体API封装包;
封装系统中提供命令调用服务的API,以生成调用API封装包。
9.根据权利要求2-5任一项所述的方法,其特征在于,所述容器的构建步骤,还包括以下至少一种操作:
创建所述桌面应用的资源目录;
生成所述桌面应用的可执行的安装文件包;
生成所述桌面应用的安装引导模块;
生成所述桌面应用的升级引导模块;
生成所述桌面应用的异常监测上报模块。
10.根据权利要求2-5任一项所述的方法,其特征在于,所述应用开发环境为跨平台的开发环境。
11.一种桌面应用开发设备,其特征在于,包括:
运行模块,用于运行支持web技术的应用开发环境;
构建模块,用于在所述应用开发环境中,基于web技术构建桌面应用的容器;
其中,所述容器实现所述桌面应用的页面功能和所述页面功能关联的系统API调用逻辑,并与实现所述桌面应用的业务逻辑的web站点交互。
12.根据权利要求11所述的设备,其特征在于,所述构建模块包括:
视图层构建单元,用于根据所述页面功能,构建实现所述页面功能的视图层;
桥接层构建单元,用于构建为所述视图层提供系统API调用和语言隔离服务的桥接层。
13.根据权利要求12所述的设备,其特征在于,所述视图层构建单元包括:
第一构建子单元,用于根据所述页面功能中的静态展示需求和系统API调用需求,构建用于静态展示web页面和触发系统API调用的网络视图模块;
第二构建子单元,用于根据所述页面功能中的动态展示需求,构建用于动态控制界面元素的视图控制模块;
其中,所述网络视图模块和所述视图控制模块还具有信息传递功能,以传递与系统API调用相关的信息。
14.根据权利要求12或13所述的设备,其特征在于,所述桥接层构建单元包括:
封装子单元,用于根据所述桌面应用中的业务逻辑,封装系统API以生成所述业务逻辑对应的API封装包;
代码生成子单元,用于声明所述API封装包为被调用对象,以生成调用所述API封装包所需的第一代码文件,以及生成实现语言隔离功能的第二代码文件;
关系建立子单元,用于建立所述第一代码文件对所述第二代码文件的引用关系。
15.根据权利要求12或13所述的设备,其特征在于,所述构建模块还包括以下至少一种单元:
目录创建单元,用于创建所述桌面应用的资源目录;
安装包生成单元,用于生成所述桌面应用的可执行的安装文件包;
安装引导生成单元,用于生成所述桌面应用的安装引导模块;
升级引导生成单元,用于生成所述桌面应用的升级引导模块;
异常监测生成单元,用于生成所述桌面应用的异常监测上报模块。
CN201610932300.2A 2016-10-31 2016-10-31 桌面应用开发方法及设备 Active CN107092473B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610932300.2A CN107092473B (zh) 2016-10-31 2016-10-31 桌面应用开发方法及设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610932300.2A CN107092473B (zh) 2016-10-31 2016-10-31 桌面应用开发方法及设备

Publications (2)

Publication Number Publication Date
CN107092473A true CN107092473A (zh) 2017-08-25
CN107092473B CN107092473B (zh) 2020-12-08

Family

ID=59646549

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610932300.2A Active CN107092473B (zh) 2016-10-31 2016-10-31 桌面应用开发方法及设备

Country Status (1)

Country Link
CN (1) CN107092473B (zh)

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108268296A (zh) * 2018-01-17 2018-07-10 链家网(北京)科技有限公司 页面布局的加载方法、客户端和服务器
CN108279952A (zh) * 2018-01-23 2018-07-13 浙江科澜信息技术有限公司 一种跨平台窗口管理的实现方法及系统
CN109117123A (zh) * 2018-07-16 2019-01-01 成都壬甲信息技术有限公司 跨移动操作系统app快速开发装置与方法
CN109126124A (zh) * 2018-09-20 2019-01-04 Oppo广东移动通信有限公司 引擎适配方法、相关设备以及计算机可读存储介质
CN109254793A (zh) * 2018-09-20 2019-01-22 Oppo广东移动通信有限公司 引擎隔离方法、相关设备以及计算机可读存储介质
CN109669689A (zh) * 2018-12-29 2019-04-23 深圳点猫科技有限公司 一种对图形化编程应用进行离线化处理的方法、电子设备
CN109740098A (zh) * 2018-12-29 2019-05-10 深圳点猫科技有限公司 一种基于多页面窗口的应用处理方法及电子设备
CN110311978A (zh) * 2019-07-01 2019-10-08 泰康保险集团股份有限公司 浏览器信息处理方法、装置、设备及存储介质
CN110347383A (zh) * 2019-06-28 2019-10-18 深圳市中农易讯信息技术有限公司 跨平台桌面应用的前端开发方法及装置
CN112465599A (zh) * 2020-12-04 2021-03-09 车智互联(北京)科技有限公司 订单处理方法、订单处理系统及计算设备
CN112799665A (zh) * 2021-01-27 2021-05-14 视若飞信息科技(上海)有限公司 一种以WebUI的方式构建App功能界面的方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104866327A (zh) * 2015-06-19 2015-08-26 上海斐讯数据通信技术有限公司 一种php开发方法及框架
CN105955744A (zh) * 2016-05-03 2016-09-21 中国建设银行股份有限公司 一种移动跨平台开发系统及方法
CN106020845A (zh) * 2016-05-31 2016-10-12 广东能龙教育股份有限公司 一种客户端混合快速开发方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104866327A (zh) * 2015-06-19 2015-08-26 上海斐讯数据通信技术有限公司 一种php开发方法及框架
CN105955744A (zh) * 2016-05-03 2016-09-21 中国建设银行股份有限公司 一种移动跨平台开发系统及方法
CN106020845A (zh) * 2016-05-31 2016-10-12 广东能龙教育股份有限公司 一种客户端混合快速开发方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
娄启林: "基于Webkit内核的桌面应用程序通用框架的构建与应用", 《中国优秀硕士学位论文全文数据库》 *

Cited By (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108268296A (zh) * 2018-01-17 2018-07-10 链家网(北京)科技有限公司 页面布局的加载方法、客户端和服务器
CN108279952A (zh) * 2018-01-23 2018-07-13 浙江科澜信息技术有限公司 一种跨平台窗口管理的实现方法及系统
CN109117123A (zh) * 2018-07-16 2019-01-01 成都壬甲信息技术有限公司 跨移动操作系统app快速开发装置与方法
CN109126124A (zh) * 2018-09-20 2019-01-04 Oppo广东移动通信有限公司 引擎适配方法、相关设备以及计算机可读存储介质
CN109254793A (zh) * 2018-09-20 2019-01-22 Oppo广东移动通信有限公司 引擎隔离方法、相关设备以及计算机可读存储介质
CN109740098A (zh) * 2018-12-29 2019-05-10 深圳点猫科技有限公司 一种基于多页面窗口的应用处理方法及电子设备
CN109669689A (zh) * 2018-12-29 2019-04-23 深圳点猫科技有限公司 一种对图形化编程应用进行离线化处理的方法、电子设备
CN110347383A (zh) * 2019-06-28 2019-10-18 深圳市中农易讯信息技术有限公司 跨平台桌面应用的前端开发方法及装置
CN110347383B (zh) * 2019-06-28 2023-11-14 深圳市中农易讯信息技术有限公司 跨平台桌面应用的前端开发方法及装置
CN110311978A (zh) * 2019-07-01 2019-10-08 泰康保险集团股份有限公司 浏览器信息处理方法、装置、设备及存储介质
CN112465599A (zh) * 2020-12-04 2021-03-09 车智互联(北京)科技有限公司 订单处理方法、订单处理系统及计算设备
CN112465599B (zh) * 2020-12-04 2023-11-07 车智互联(北京)科技有限公司 订单处理方法、订单处理系统及计算设备
CN112799665A (zh) * 2021-01-27 2021-05-14 视若飞信息科技(上海)有限公司 一种以WebUI的方式构建App功能界面的方法

Also Published As

Publication number Publication date
CN107092473B (zh) 2020-12-08

Similar Documents

Publication Publication Date Title
CN107092473A (zh) 桌面应用开发方法及设备
CN110825362A (zh) 低代码应用软件开发系统及方法
US10339299B1 (en) Runtime management of application components
US11392393B2 (en) Application runtime configuration using design time artifacts
CN101661508B (zh) 一种应用于多技术平台的生成表单的方法及装置
CN102693127B (zh) 用于描述并执行图形用户界面中的管理任务的数据驱动模式
CN102033743B (zh) 一种应用插件扩充模型驱动开发能力的系统及其方法
US20150293764A1 (en) Method and system to compose and execute business rules
CN103383645A (zh) 代码生成方法及系统
CN107577509A (zh) 一种加载应用界面的方法、终端及计算机可读存储介质
US20140189548A1 (en) Domain specific language user interface
US20080140671A1 (en) Extensible application platform
CN106250158A (zh) 一种客户端界面的布局方法、装置和移动设备
US20080250071A1 (en) Systems and methods for business applications
EP1830275A1 (en) Information distribution system
CN105630522A (zh) 一种Web应用的更新方法、装置和系统
CN102884507A (zh) 客户机应用程序和网页集成
CN110427182A (zh) 一种模板式建设app方法以及装置
WO2015112131A1 (en) Multistage customizing of web-based application in a browser independent of platform and operating system
Benouda et al. MDA approach to automate code generation for mobile applications
da Silva et al. SPReaD: service-oriented process for reengineering and DevOps: Developing microservices for a Brazilian state department of taxation
CN112068911A (zh) 电子表单的生成方法、装置、系统、设备以及介质
CN116301856B (zh) 一种可视化表单设计器的设计方法、装置、设备及介质
CN107832088A (zh) 控件使用方法及装置、计算设备、计算机存储介质
US9898262B2 (en) User interface event orchestration

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
CB02 Change of applicant information
CB02 Change of applicant information

Address after: Building N3, Jinyu Zhizao workshop, No. 27, Jiancai Chengzhong Road, Haidian District, Beijing 100096

Applicant after: Beijing Xingxuan Technology Co.,Ltd.

Address before: 100085 Beijing, Haidian District on the road to the information on the ground floor of the 1 to the 3 floor of the 2 floor, room 11, 202

Applicant before: Beijing Xiaodu Information Technology Co.,Ltd.

GR01 Patent grant
GR01 Patent grant