CN106843994B - 一种基于动态编译的客户端软件运行方法 - Google Patents
一种基于动态编译的客户端软件运行方法 Download PDFInfo
- Publication number
- CN106843994B CN106843994B CN201710034361.1A CN201710034361A CN106843994B CN 106843994 B CN106843994 B CN 106843994B CN 201710034361 A CN201710034361 A CN 201710034361A CN 106843994 B CN106843994 B CN 106843994B
- Authority
- CN
- China
- Prior art keywords
- client
- server
- function
- source code
- database
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/547—Remote procedure calls [RPC]; Web services
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/541—Client-server
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本发明提供一种基于动态编译的客户端软件运行方法,包括以下步骤:将客户端的功能模块的源码加密后根据功能模块的功能和依赖关系存储在服务端的数据库中;安装极简客户端并从客户端的功能模块的动态库获取业务逻辑所对应的功能接口并执行业务逻辑。本发明具有适用于商业软件、安全性高、适用性强、实现简单等优点。
Description
技术领域
本发明涉及基于客户端/服务器(C/S)架构的计算机技术领域,并且更具体地涉及一种基于动态编译的客户端软件运行方法。
背景技术
Linux操作系统通常是以RPM或DEB安装包安装客户端软件的,为了适应不同的计算机平台以及Linux内核和发行版本之间的差异,开发人员通常需要对相应的版本以及平台进行适配,重新编译、打包、测试才能将RPM或DEB安装包投入使用。
现有的技术有基于源码安装的RPM和DEB开源软件,以及通过编译宏对代码进行控制,来实现对多样性平台的适配。然而,基于源码安装RPM和DEB开源软件的方式很显然不适用于商业软件;通过编译宏以实现对代码的这种控制来实现对多样性平台的适配,这种控制方式对于所需支持的环境来说编译量大、编译方式多,并且当所维护的代码量规模较大的时候,难以实施。
发明内容
针对上述现有技术中存在的问题,本发明的目的在于提供一种基于动态编译的客户端软件运行方法,其基于动态连接的C/S架构实现对复杂环境下客户端软件进行安装并对软件进行滚动升级,以解决商业软件在计算机多样性硬件平台以及多种Linux发行版本的复杂环境下,人工对软件进行适配所带来的各种问题。
为了实现上述目的,本发明采用的技术方案如下:
一种基于动态编译的客户端软件运行方法,包括以下步骤:
将客户端的各个功能模块的源码加密后根据所述功能模块的功能和依赖关系存储在服务端的数据库中;
安装极简客户端并从客户端的功能模块的动态库获取业务逻辑所对应的功能接口并执行业务逻辑;
根据本发明的一个实施例,获取业务逻辑所对应的功能接口包括判断客户端是否连接到业务逻辑对应的功能模块的动态库,如果是,获取动态库的功能接口并执行业务逻辑,否则,客户端与服务端通讯以从服务端获取功能模块的源码。
根据本发明的一个实施例,方法进一步包括扫描客户端的软、硬件系统环境并将扫描结果存储在本地数据库中以在客户端与服务端通讯时提供给服务端。
根据本发明的一个实施例,当客户端不能连接到业务逻辑对应的功能模块的动态库时,服务端在客户端索取功能模块的源码的情况下询问客户端的软、硬件系统环境并基于客户端的软、硬件系统环境判断是否可以从服务端的数据库中适配到功能模块的源码,如果是,服务端将适配到的功能模块的源码发送给客户端,否则,服务端发送功能缺失错误码给客户端。
根据本发明的一个实施例,当服务端从服务端的数据库中适配到多个功能模块的源码时,服务端将优先级最高的功能模块的源码发送给客户端。
根据本发明的一个实施例,当服务端从服务端的数据库中适配到功能模块的源码时,客户端将从服务端获取的功能模块的源码解密并编译为动态库,并将动态库的文件存储到相应目录中。
根据本发明的一个实施例,方法进一步包括升级服务端的数据库中的功能模块的源码。
根据本发明的一个实施例,基于升级服务端的源码,客户端在空闲时间或特定时间将动态库中功能模块的版本号与服务端的数据库中功能模块的版本号进行对比,以更新动态库中功能模块的源码。
根据本发明的一个实施例,极简客户端仅包含核心模块而不包含任何功能模块以具有不受系统环境限制的高度可移植性。
根据本发明的一个实施例,业务逻辑包含以下中的一个或多个:客户端的分析软硬件系统环境的功能、加解密功能、与服务器通讯的功能、对源码进行编译的功能、对客户端的功能进行调度的功能、服务端的加解密功能、与客户端通讯的功能、响应客户端的请求以在数据库中搜索适配的源码的功能、将适配到的源码分发到客户端的功能。
与传统的RPM或DEB源码安装相比,本发明可应用于商业软件,可以防止源码泄露所带来的商业损失;与传统的编译宏控制代码的方式相比,本发明减少了程序员对整个代码的整体把控所带来的负面影响,例如,时间、效能、产出率、质量等方面带来的影响;对庞大的代码量所带来的意想不到的影响起到了规避作用;进一步地,程序员只需要专注于开发各个功能模块在不同环境下不同的编码方法和技术手段。
附图说明
图1为根据本发明的一个实施例的服务端的业务流程图;
图2为根据本发明的一个实施例的客户端的业务流程图;
图3为根据本发明的一个实施例的更新客户端源码的业务流程图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,下面结合附图,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
图1示出了根据本发明的一个实施例的服务端的业务流程图,其中所示的方法开始于步骤S101。在步骤S101,将客户端需要的各个业务逻辑对应的功能模块的源码加密后根据模块的功能和依赖存储在服务端数据库中以供客户端使用,方法前进到步骤S102。在步骤S102,判断服务端数据库中的功能模块是否需要更新,如果是,方法前进到步骤S103,如果服务端数据库中的功能模块不需要更新,方法前进到步骤S104。在步骤S103,将对服务端数据库中相应的模块的源码进行更新,需要强调的是,仅需要对服务端数据库中的功能模块的源码进行更新,而不需要对客户端的功能模块进行更新,这将在下面的描述中进一步说明,随后方法前进到步骤S104。在步骤S104,当有客户端向服务端索取某一功能模块的源码时,服务器将根据该功能模块的需要,询问客户端的软硬件平台支持(即客户端的软、硬件系统环境),然后方法前进到步骤S105。在步骤S105,服务端收到客户端关于客户端的软硬件平台支持的响应后,判断服务端基于该响应是否在服务端数据库中搜索到该功能模块的源码,如果是,方法前进到步骤S106,否则,方法前进到步骤S107。在步骤S106,服务器将搜索到的功能模块的源码发送给客户端,需要说明的是,如果服务器从数据库中适配到多个可以实现该功能模块的源码,则服务器将优先级最高的功能模块的源码发送到客户端。在步骤S107,由于服务器没有从其数据库中适配到实现该功能模块的源码,因此服务器将向客户端发送功能缺失错误码并记录该情况,以方便开发技术人员查看并在后续版本中推出该功能模块的源码。至此,方法结束。
图2示出了根据本发明的一个实施例的客户端的业务流程图,其中所示的方法开始于步骤S201。在步骤S201,安装基于源码的RPM、DEB或者提供安装脚本的极简客户端,需要说明的是,极简客户端仅包含核心模块而不涉及任何功能模块以具有不受系统环境限制的高度可移植性,也就是说,极简客户端要实现不用适配,原因在于极简客户端所使用的加解密通信编译环境等是计算机系统自带的,因此也不会涉及商业机密,接着方法前进到步骤S202。在步骤S202,客户端对计算机的软、硬件系统环境进行扫描并将扫描结果记录在本地数据库中,步骤前进至步骤S203。在步骤S203,客户端开始执行某业务逻辑(例如,极简客户端的调度模块、加解密模块等)时,客户端将动态连接该业务逻辑对应的功能模块的动态库,方法前进到步骤S204。在步骤S204,判断客户端是否连接到该功能模块的动态库,如果是,方法将前进到步骤S209,否则,方法将前进到步骤S205。在步骤S205,客户端将与服务端建立通讯,以请求该业务逻辑对应的功能模块的源码,随后方法前进到步骤S206。在步骤S206,服务端基于该功能模块向客户端询问客户端的软、硬件系统环境,然后服务端根据客户端作出的响应判断是否从服务端数据库中适配到该功能的源码,如果是,方法前进到步骤S207,否则,方法前进到步骤S210。在步骤S207,服务端将适配到的该功能模块的优先级最高的源码发送给客户端,需要说明的是,服务端数据库中可能存储多个能够实现该功能模块的源码,如果服务器适配到多个都能实现该功能模块的源码,则服务器选取优先级最高的源码并将该源码发送给客户端,方法前进到步骤S208。在步骤S208,客户端收到服务端发送的该功能模块的源码后,将所收到的源码编译为动态库文件,并将该动态库文件存储到动态库中相应的目录,同时执行所编译的动态库以执行相应的业务逻辑,方法结束。在步骤S210,由于服务器没有适配到该功能模块的源码,因此服务端将向客户端发送功能缺失错误码并将该情况记录以方便开发技术人员查看并在后续版本中推出该功能模块的源码,方法结束。在步骤S209,由于客户端成功地动态连接到该功能模块的动态库,因此客户端获取该功能模块的功能接口并执行该功能,方法结束。
图3示出了根据本发明的一个实施例的对客户端的功能模块的源码进行更新的业务流程图,其中所示的方法开始于步骤S301。在步骤S301,客户端在空闲时间或者特定时间,将客户端的各个功能模块的版本号与服务端对应的功能模块的版本号进行对比,然后方法前进到步骤S302。在步骤S302,判断客户端功能模块的版本号是否与服务端对应的功能模块的版本号相同,如果是,方法结束,否则,方法前进到步骤S303。在步骤S303,客户端将与服务端建立通讯,以请求功能模块的源码,随后方法前进到步骤S304。在步骤S304,服务端基于该功能模块向客户端询问客户端的软、硬件系统环境,然后服务端根据客户端作出的响应从服务端数据库中获取适配该功能模块的源码,方法前进到步骤S305。在步骤S305,服务端将适配到的该功能模块的优先级最高的源码发送给客户端,需要说明的是,服务端数据库中可能存储多个能够实现该功能模块的源码,如果服务器适配到多个都能实现该功能模块的源码,则服务器选取优先级最高的源码并将该源码发送给客户端,方法前进到步骤S306。在步骤S306,客户端收到服务端发送的该功能模块的源码后,将所收到的源码编译为动态库文件,并将该动态库文件存储到动态库中相应的目录,方法结束。
以上所述实施例仅表达了本发明的实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。
Claims (10)
1.一种基于动态编译的客户端软件运行方法,其特征在于,所述方法包括以下步骤:
将客户端的功能模块的源码加密后根据所述功能模块的功能和依赖关系存储在服务端的数据库中,包括:
判断所述客户端是否连接到业务逻辑对应的功能模块的动态库,如果不是,所述客户端与所述服务端通讯以从所述服务端获取所述功能模块的源码;所述服务端在所述客户端索取功能模块的源码的情况下询问所述客户端的软、硬件系统环境并基于所述客户端的所述软、硬件系统环境判断是否可以从所述服务端的数据库中适配到所述功能模块的源码,如果是,所述服务端将适配到的所述功能模块的源码发送给所述客户端;
安装极简客户端并从所述客户端的所述功能模块的动态库获取业务逻辑所对应的功能接口并执行所述业务逻辑。
2.根据权利要求1所述的方法,其特征在于,判断所述客户端是否连接到所述业务逻辑对应的功能模块的所述动态库,如果是,获取所述动态库的功能接口并执行所述业务逻辑。
3.根据权利要求2所述的方法,其特征在于,所述方法进一步包括扫描所述客户端的软、硬件系统环境并将扫描结果存储在本地数据库中以在所述客户端与所述服务端通讯时提供给所述服务端。
4.根据权利要求2所述的方法,其特征在于,所述服务端在所述客户端索取功能模块的源码的情况下询问所述客户端的软、硬件系统环境并基于所述客户端的所述软、硬件系统环境判断是否可以从所述服务端的数据库中适配到所述功能模块的源码,如果不是,所述服务端发送功能缺失错误码给所述客户端。
5.根据权利要求4所述的方法,其特征在于,当所述服务端从所述服务端的所述数据库中适配到多个所述功能模块的源码时,所述服务端将优先级最高的所述功能模块的源码发送给所述客户端。
6.根据权利要求4所述的方法,其特征在于,当所述服务端从所述服务端的数据库中适配到所述功能模块的源码时,所述客户端将从所述服务端获取的所述功能模块的源码解密并编译为动态库,将所述动态库的文件存储到相应目录中并执行所述动态库。
7.根据权利要求1所述的方法,其特征在于,所述方法进一步包括升级所述服务端的所述数据库中的所述功能模块的源码。
8.根据权利要求7所述的方法,其特征在于,基于升级所述服务端的源码,所述客户端在空闲时间或特定时间将所述动态库中所述功能模块的版本号与所述服务端的所述数据库中所述功能模块的版本号进行对比,以更新动态库中所述功能模块的源码。
9.根据权利要求1所述的方法,其特征在于,所述极简客户端仅包含核心模块而不包含任何功能模块以具有不受系统环境限制的高度可移植性。
10.根据权利要求1所述的方法,其特征在于,所述业务逻辑包含以下中的一个或多个:所述客户端的分析软硬件系统环境的功能、加解密功能、与服务器通讯的功能、对源码进行编译的功能、对所述客户端的功能进行调度的功能、所述服务端的加解密功能、与所述客户端通讯的功能、响应所述客户端的请求以在数据库中搜索适配的源码的功能、将所述适配到的源码分发到所述客户端的功能。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710034361.1A CN106843994B (zh) | 2017-01-18 | 2017-01-18 | 一种基于动态编译的客户端软件运行方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710034361.1A CN106843994B (zh) | 2017-01-18 | 2017-01-18 | 一种基于动态编译的客户端软件运行方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106843994A CN106843994A (zh) | 2017-06-13 |
CN106843994B true CN106843994B (zh) | 2020-10-16 |
Family
ID=59124583
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710034361.1A Active CN106843994B (zh) | 2017-01-18 | 2017-01-18 | 一种基于动态编译的客户端软件运行方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106843994B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112130863B (zh) * | 2020-08-18 | 2023-10-20 | 许继集团有限公司 | 客户端程序防止反汇编保护方法 |
CN112068852B (zh) * | 2020-09-27 | 2022-06-17 | 山东云海国创云计算装备产业创新中心有限公司 | 基于国产服务器的开源软件安装方法、系统及设备和介质 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1968154A (zh) * | 2006-09-15 | 2007-05-23 | 华为技术有限公司 | 使用插件进行业务扩展的系统及其方法 |
CN101458629A (zh) * | 2008-12-31 | 2009-06-17 | 北京中星微电子有限公司 | 嵌入式实时操作系统中实现动态加载的方法和装置 |
CN102129389A (zh) * | 2011-03-09 | 2011-07-20 | 南京恩瑞特实业有限公司 | 基于linuxC语言的轻量级流程调度方法 |
CN103544005A (zh) * | 2013-09-10 | 2014-01-29 | Tcl集团股份有限公司 | 一种Android自定义控件的扩展开发方法及装置 |
CN103645928A (zh) * | 2013-12-06 | 2014-03-19 | 浪潮(北京)电子信息产业有限公司 | 一种软件功能模块处理方法及系统 |
CN104424002A (zh) * | 2013-09-10 | 2015-03-18 | 中国科学院声学研究所 | 一种基于插件机制的动态加载组件方法和系统 |
CN105183458A (zh) * | 2015-08-14 | 2015-12-23 | 深圳联友科技有限公司 | 一种软件平台开发方法及装置 |
CN105302563A (zh) * | 2015-11-09 | 2016-02-03 | 歌尔声学股份有限公司 | 移动应用服务的插件化方法及系统 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8924922B2 (en) * | 2010-06-14 | 2014-12-30 | Microsoft Corporation | Pre-compiling hosted managed code |
-
2017
- 2017-01-18 CN CN201710034361.1A patent/CN106843994B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1968154A (zh) * | 2006-09-15 | 2007-05-23 | 华为技术有限公司 | 使用插件进行业务扩展的系统及其方法 |
CN101458629A (zh) * | 2008-12-31 | 2009-06-17 | 北京中星微电子有限公司 | 嵌入式实时操作系统中实现动态加载的方法和装置 |
CN102129389A (zh) * | 2011-03-09 | 2011-07-20 | 南京恩瑞特实业有限公司 | 基于linuxC语言的轻量级流程调度方法 |
CN103544005A (zh) * | 2013-09-10 | 2014-01-29 | Tcl集团股份有限公司 | 一种Android自定义控件的扩展开发方法及装置 |
CN104424002A (zh) * | 2013-09-10 | 2015-03-18 | 中国科学院声学研究所 | 一种基于插件机制的动态加载组件方法和系统 |
CN103645928A (zh) * | 2013-12-06 | 2014-03-19 | 浪潮(北京)电子信息产业有限公司 | 一种软件功能模块处理方法及系统 |
CN105183458A (zh) * | 2015-08-14 | 2015-12-23 | 深圳联友科技有限公司 | 一种软件平台开发方法及装置 |
CN105302563A (zh) * | 2015-11-09 | 2016-02-03 | 歌尔声学股份有限公司 | 移动应用服务的插件化方法及系统 |
Non-Patent Citations (1)
Title |
---|
"Android动态加载方案的研究与实现";蔡杰 等;《现代计算机(专业版)》;20170105;第42-45页 * |
Also Published As
Publication number | Publication date |
---|---|
CN106843994A (zh) | 2017-06-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3518098B1 (en) | Cross platform content management and distribution system | |
EP3128421B1 (en) | Method, device, and system for achieving java application installation by cloud compilation | |
CN107943486B (zh) | 一种多语言代码编译方法、分发方法、装置和系统 | |
US8549490B2 (en) | Static code analysis for packaged application customization | |
CN104978191B (zh) | 应用部署方法和服务器 | |
CN112083951B (zh) | 一种支持多操作系统平台的软件包统一管理方法及系统 | |
US11340893B2 (en) | Mobile application update preserving changes to the application made by a client | |
US20130247027A1 (en) | Distribution and installation of solidified software on a computer | |
WO2010041467A2 (en) | USING TRANSIENT PCRs TO REALISE TRUST IN APPLICATION SPACE OF A SECURE PROCESSING SYSTEM | |
CN103713902B (zh) | 一种基于Android系统的BOA编译方法和系统 | |
US20120272223A1 (en) | Technique for Run-Time Provision of Executable Code using Off-Device Services | |
TW368635B (en) | Method and apparatus for controlling software access to system resources | |
US20210004696A1 (en) | System and method for automatic secure delivery of model | |
EP3296906A1 (en) | Method for protecting dex file from being decompiled in android system | |
CN103390130A (zh) | 基于云安全的恶意程序查杀的方法、装置和服务器 | |
CN112583585B (zh) | 交易执行方法、设备和存储介质 | |
CN113761482A (zh) | 一种程序代码保护方法和装置 | |
CN113342323B (zh) | 软件在线开发的方法及装置 | |
CN111880987A (zh) | 应用程序的动态监测方法、装置、存储介质以及电子装置 | |
US20050216537A1 (en) | Dynamic addressing (DA) using a centralized DA manager | |
CN107508846B (zh) | 应用客户端的更新方法和系统及终端设备 | |
US20210149682A1 (en) | System and method for implementing a filesystem agent management solution | |
CN106843994B (zh) | 一种基于动态编译的客户端软件运行方法 | |
RU2359316C2 (ru) | Способ администрирования компонентов программного обеспечения, интегрированных в мобильную систему | |
CN110427752A (zh) | 一种沙箱监控应用程序的方法、移动终端及存储介质 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |