一种基于动态编译的客户端软件运行方法与流程

文档序号:12664778阅读:197来源:国知局
一种基于动态编译的客户端软件运行方法与流程

本发明涉及基于客户端/服务器(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,客户端收到服务端发送的该功能模块的源码后,将所收到的源码编译为动态库文件,并将该动态库文件存储到动态库中相应的目录,方法结束。

以上所述实施例仅表达了本发明的实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1