CN117873563A - 软件分发方法及其装置、电子设备及存储介质 - Google Patents

软件分发方法及其装置、电子设备及存储介质 Download PDF

Info

Publication number
CN117873563A
CN117873563A CN202311589071.5A CN202311589071A CN117873563A CN 117873563 A CN117873563 A CN 117873563A CN 202311589071 A CN202311589071 A CN 202311589071A CN 117873563 A CN117873563 A CN 117873563A
Authority
CN
China
Prior art keywords
preset
code
format
module
latest
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.)
Pending
Application number
CN202311589071.5A
Other languages
English (en)
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.)
Industrial and Commercial Bank of China Ltd ICBC
Original Assignee
Industrial and Commercial Bank of China Ltd ICBC
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 Industrial and Commercial Bank of China Ltd ICBC filed Critical Industrial and Commercial Bank of China Ltd ICBC
Priority to CN202311589071.5A priority Critical patent/CN117873563A/zh
Publication of CN117873563A publication Critical patent/CN117873563A/zh
Pending legal-status Critical Current

Links

Classifications

    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Stored Programmes (AREA)

Abstract

本发明公开了一种软件分发方法及其装置、电子设备及存储介质,涉及金融科技领域或其他相关领域,其中,该软件分发方法包括:获取目标应用的软件程序源代码,并将软件程序源代码转换为预设格式代码,对预设格式代码进行签名,得到签名后的预设格式代码,将签名后的预设格式代码分发至预设客户端集合中的每个预设客户端上。本发明解决了相关技术中在进行软件分发时需要为不同平台编写不同版本的软件程序代码,导致开发成本较高的技术问题。

Description

软件分发方法及其装置、电子设备及存储介质
技术领域
本发明涉及金融科技领域,具体而言,涉及一种软件分发方法及其装置、电子设备及存储介质。
背景技术
当前,软件分发面临着多平台适配和性能优化的问题。相关技术中,软件分发系统需要为不同平台编写不同版本的代码,并且在不同平台上进行独立部署和维护,增加了开发和管理的成本。同时,由于不同平台的硬件和软件环境差异,软件在不同平台上的性能表现存在差异,影响用户体验。
针对上述的问题,目前尚未提出有效的解决方案。
发明内容
本发明实施例提供了一种软件分发方法及其装置、电子设备及存储介质,以至少解决相关技术中在进行软件分发时需要为不同平台编写不同版本的软件程序代码,导致开发成本较高的技术问题。
根据本发明实施例的一个方面,提供了一种软件分发方法,包括:获取目标应用的软件程序源代码,并将所述软件程序源代码转换为预设格式代码;对所述预设格式代码进行签名,得到签名后的所述预设格式代码;将签名后的所述预设格式代码分发至预设客户端集合中的每个预设客户端上,其中,所述预设客户端预先安装有预设虚拟机,所述预设虚拟机用于验证签名后的所述预设格式代码,并在对签名后的所述预设格式代码验证通过后执行所述预设格式代码。
进一步地,将所述软件程序源代码转换为预设格式代码的步骤,包括:对所述软件程序源代码进行静态处理,得到第一源代码,其中,所述静态处理是用于对未运行的所述软件程序源代码进行的处理;运行所述第一源代码,并在运行所述第一源代码的过程中,对所述第一源代码进行动态处理,得到第二源代码,其中,所述动态处理是用于对运行中的所述软件程序源代码进行的处理;采用预设编译器将所述第二源代码转换为初始格式代码;对所述初始格式代码进行压缩,生成所述预设格式代码。
进一步地,在将签名后的所述预设格式代码分发至预设客户端集合中的每个预设客户端上之后,还包括:对于每个所述预设客户端,所述预设客户端中的所述预设虚拟机基于所述预设客户端中预先安装的目标系统的系统类型,将所述预设格式代码转换为预设指令集;所述预设虚拟机执行所述预设指令集,完成对所述目标应用的运行操作。
进一步地,在将所述软件程序源代码转换为预设格式代码之后,还包括:将所述软件程序源代码以及所述预设格式代码存储至预设数据库,其中,所述软件程序源代码对应有代码版本;接收开发终端发送的代码更新请求,其中,所述代码更新请求携带有最新模块源代码以及所述最新模块源代码对应的最新代码版本,所述最新模块源代码对应有模块标识,所述开发终端用于更新所述目标应用的各个模块;将所述最新模块源代码转换为最新模块格式代码,并将所述最新模块源代码以及所述最新模块格式代码存储至所述预设数据库。
进一步地,在将所述软件程序源代码转换为预设格式代码之后,还包括:接收所述开发终端发送的补丁更新请求,其中,所述补丁更新请求携带有最新补丁;将所述最新补丁转换为补丁格式代码,并将所述补丁格式代码增加至所述预设格式代码;将所述最新补丁以及所述补丁格式代码存储至所述预设数据库。
进一步地,在将签名后的所述预设格式代码分发至预设客户端集合中的每个预设客户端上之后,还包括:基于预设时间间隔,检查每个所述预设客户端上的所述代码版本与所述预设数据库中的所述最新代码版本是否一致;在所述预设客户端上的所述代码版本与所述最新代码版本不一致的情况下,从所述预设数据库中获取所述最新代码版本关联的所述最新模块格式代码;基于所述最新模块格式代码指示的所述模块标识,构建更新文件,并将所述最新模块格式代码以及所述更新文件下发至所述预设客户端上,其中,所述预设客户端中的所述预设虚拟机基于所述更新文件,将所述模块标识指示的原始模块格式代码替换为所述最新模块格式代码。
进一步地,在将签名后的所述预设格式代码分发至预设客户端集合中的每个预设客户端上之后,还包括:确定每个所述预设客户端上的所述预设格式代码的第一摘要字符串以及所述预设数据库中的所述预设格式代码的第二摘要字符串;在所述预设客户端上的所述第一摘要字符串与所述第二摘要字符串不一致的情况下,从所述预设数据库中获取所述补丁格式代码;将所述补丁格式代码下发至所述预设客户端上,其中,所述预设客户端中的所述预设虚拟机运行所述补丁格式代码,将所述补丁格式代码增加至所述预设客户端上的所述预设格式代码中。
根据本发明实施例的另一方面,还提供了一种软件分发装置,包括:转换单元,用于获取目标应用的软件程序源代码,并将所述软件程序源代码转换为预设格式代码;签名单元,用于对所述预设格式代码进行签名,得到签名后的所述预设格式代码;分发单元,用于将签名后的所述预设格式代码分发至预设客户端集合中的每个预设客户端上,其中,所述预设客户端预先安装有预设虚拟机,所述预设虚拟机用于验证签名后的所述预设格式代码,并在对签名后的所述预设格式代码验证通过后执行所述预设格式代码。
进一步地,所述转换单元包括:第一处理模块,用于对所述软件程序源代码进行静态处理,得到第一源代码,其中,所述静态处理是用于对未运行的所述软件程序源代码进行的处理;第二处理模块,用于运行所述第一源代码,并在运行所述第一源代码的过程中,对所述第一源代码进行动态处理,得到第二源代码,其中,所述动态处理是用于对运行中的所述软件程序源代码进行的处理;第一转换模块,用于采用预设编译器将所述第二源代码转换为初始格式代码;第一压缩模块,用于对所述初始格式代码进行压缩,生成所述预设格式代码。
进一步地,所述软件分发装置还包括:第二转换模块,用于在将签名后的所述预设格式代码分发至预设客户端集合中的每个预设客户端上之后,对于每个所述预设客户端,所述预设客户端中的所述预设虚拟机基于所述预设客户端中预先安装的目标系统的系统类型,将所述预设格式代码转换为预设指令集;第一执行模块,用于所述预设虚拟机执行所述预设指令集,完成对所述目标应用的运行操作。
进一步地,所述软件分发装置还包括:第一存储模块,用于在将所述软件程序源代码转换为预设格式代码之后,将所述软件程序源代码以及所述预设格式代码存储至预设数据库,其中,所述软件程序源代码对应有代码版本;第一接收模块,用于接收开发终端发送的代码更新请求,其中,所述代码更新请求携带有最新模块源代码以及所述最新模块源代码对应的最新代码版本,所述最新模块源代码对应有模块标识,所述开发终端用于更新所述目标应用的各个模块;第三转换模块,用于将所述最新模块源代码转换为最新模块格式代码,并将所述最新模块源代码以及所述最新模块格式代码存储至所述预设数据库。
进一步地,所述软件分发装置还包括:第二接收模块,用于在将所述软件程序源代码转换为预设格式代码之后,接收所述开发终端发送的补丁更新请求,其中,所述补丁更新请求携带有最新补丁;第四转换模块,用于将所述最新补丁转换为补丁格式代码,并将所述补丁格式代码增加至所述预设格式代码;第二存储模块,用于将所述最新补丁以及所述补丁格式代码存储至所述预设数据库。
进一步地,所述软件分发装置还包括:第一检查模块,用于在将签名后的所述预设格式代码分发至预设客户端集合中的每个预设客户端上之后,基于预设时间间隔,检查每个所述预设客户端上的所述代码版本与所述预设数据库中的所述最新代码版本是否一致;第一获取模块,用于在所述预设客户端上的所述代码版本与所述最新代码版本不一致的情况下,从所述预设数据库中获取所述最新代码版本关联的所述最新模块格式代码;第一下发模块,用于基于所述最新模块格式代码指示的所述模块标识,构建更新文件,并将所述最新模块格式代码以及所述更新文件下发至所述预设客户端上,其中,所述预设客户端中的所述预设虚拟机基于所述更新文件,将所述模块标识指示的原始模块格式代码替换为所述最新模块格式代码。
进一步地,所述软件分发装置还包括:第一确定模块,用于在将签名后的所述预设格式代码分发至预设客户端集合中的每个预设客户端上之后,确定每个所述预设客户端上的所述预设格式代码的第一摘要字符串以及所述预设数据库中的所述预设格式代码的第二摘要字符串;第二获取模块,用于在所述预设客户端上的所述第一摘要字符串与所述第二摘要字符串不一致的情况下,从所述预设数据库中获取所述补丁格式代码;第二下发模块,用于将所述补丁格式代码下发至所述预设客户端上,其中,所述预设客户端中的所述预设虚拟机运行所述补丁格式代码,将所述补丁格式代码增加至所述预设客户端上的所述预设格式代码中。
根据本发明实施例的另一方面,还提供了一种计算机可读存储介质,所述计算机可读存储介质包括存储的计算机程序,其中,在所述计算机程序运行时控制所述计算机可读存储介质所在设备执行上述任意一项软件分发方法。
根据本发明实施例的另一方面,还提供了一种电子设备,包括一个或多个处理器和存储器,所述存储器用于存储一个或多个程序,其中,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现上述任意一项软件分发方法。
在本发明中,获取目标应用的软件程序源代码,并将软件程序源代码转换为预设格式代码,对预设格式代码进行签名,得到签名后的预设格式代码,将签名后的预设格式代码分发至预设客户端集合中的每个预设客户端上。在本发明中,可以先将获取的目标应用的软件程序源代码转换为预设格式代码,然后对预设格式代码进行签名,之后将签名后的预设格式代码分发至预设客户端集合中的每个预设客户端上,以使预设客户端中的预设虚拟机在验证签名后,执行预设格式代码,完成目标应用的运行,通过将软件程序源代码编译成可移植的预设格式代码,能够实现跨平台的软件分发和运行,减少了开发和管理成本,进而解决了相关技术中在进行软件分发时需要为不同平台编写不同版本的软件程序代码,导致开发成本较高的技术问题。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本发明的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是根据本发明实施例的一种可选的软件分发方法的流程图;
图2是根据本发明实施例的一种可选的基于WebAssembly的软件分发系统结构的示意图;
图3是根据本发明实施例的一种可选的基于WebAssembly的软件分发流程的示意图;
图4是根据本发明实施例的一种可选的软件分发装置的示意图;
图5是根据本发明实施例的一种用于软件分发方法的电子设备(或移动设备)的硬件结构框图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
为便于本领域技术人员理解本发明,下面对本发明各实施例中涉及的部分术语或名词做出解释:
WebAssembly:简称wasm,是一种开放标准,旨在改善Web(网络)应用程序的性能和功能。它是一种与特定平台无关的二进制格式,能够在Web浏览器或虚拟机中高效地运行。WebAssembly支持多种编程语言,开发者可以利用已经熟悉的语言和工具链,编写高性能的Web应用程序。
需要说明的是,本发明中的软件分发方法及其装置可用于金融科技领域在进行软件分发的情况下,也可用于除金融科技领域之外的任意领域在进行软件分发的情况下,本发明中对软件分发方法及其装置的应用领域不做限定。
需要说明的是,本发明所涉及的相关信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于分析的数据、存储的数据、展示的数据等),均为经用户授权或者经过各方充分授权的信息和数据,并且相关数据的收集、使用和处理需要遵守相关地区的相关法律法规和标准,并提供有相应的操作入口,供用户选择授权或者拒绝。例如,本系统和相关用户或机构间设置有接口,在获取相关信息之前,需要通过接口向前述的用户或机构发送获取请求,并在接收到前述的用户或机构反馈的同意信息后,获取相关信息。
本发明下述各实施例可应用于各种进行软件分发的系统/应用/设备中。本发明提出了一种基于WebAssembly技术的软件分发方法,能够解决相关技术中的软件分发系统在多平台适配和性能优化方面存在的问题。本发明利用WebAssembly技术将软件程序编译为可移植的二进制格式,从而实现跨平台的软件分发和运行。通过引入即时编译器、模块管理器和安全性保障措施,能够提供高效、安全的软件分发服务,满足用户对软件体验的需求。
下面结合各个实施例来详细说明本发明。
实施例一
根据本发明实施例,提供了一种软件分发方法的实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
图1是根据本发明实施例的一种可选的软件分发方法的流程图,如图1所示,该方法包括如下步骤:
步骤S101,获取目标应用的软件程序源代码,并将软件程序源代码转换为预设格式代码。
步骤S102,对预设格式代码进行签名,得到签名后的预设格式代码。
步骤S103,将签名后的预设格式代码分发至预设客户端集合中的每个预设客户端上,其中,预设客户端预先安装有预设虚拟机,预设虚拟机用于验证签名后的预设格式代码,并在对签名后的预设格式代码验证通过后执行预设格式代码。
通过上述步骤,可以获取目标应用的软件程序源代码,并将软件程序源代码转换为预设格式代码,对预设格式代码进行签名,得到签名后的预设格式代码,将签名后的预设格式代码分发至预设客户端集合中的每个预设客户端上。在本发明实施例中,可以先将获取的目标应用的软件程序源代码转换为预设格式代码,然后对预设格式代码进行签名,之后将签名后的预设格式代码分发至预设客户端集合中的每个预设客户端上,以使预设客户端中的预设虚拟机在验证签名后,执行预设格式代码,完成目标应用的运行,通过将软件程序源代码编译成可移植的预设格式代码,能够实现跨平台的软件分发和运行,减少了开发和管理成本,进而解决了相关技术中在进行软件分发时需要为不同平台编写不同版本的软件程序代码,导致开发成本较高的技术问题。
下面结合上述各步骤对本发明实施例进行详细说明。
在本发明实施例中,提出了一种基于WebAssembly技术的软件分发系统,图2是根据本发明实施例的一种可选的基于WebAssembly的软件分发系统结构的示意图,如图2所示,包括:编译器模块,软件管理模块,存储模块,分发模块,虚拟机模块,其中,编译器模块,软件管理模块,存储模块,分发模块位于服务端,虚拟机模块位于客户端,各模块的功能如下:
编译器模块:用于将软件程序源代码转换为WebAssembly二进制格式(即预设格式代码),并进行优化和压缩,以提高软件的执行效率和加载速度。优化过程可以包括:(1)代码优化(即静态处理优化),编译器通过对代码进行静态分析和重组,尽可能地减少运行时的开销和冗余操作,可以采用消除无效代码、内联函数、循环展开、常量折叠等优化技术进行优化;(2)数据流优化(即动态处理优化),编译器通过分析程序(即运行中的代码)中的数据流,寻找和利用程序的数据依赖性,以减少内存访问和数据传输的开销,可以采用数据复制消除、循环变量分析、寄存器分配等优化技术进行优化;(3)代码压缩,编译器可以使用各种算法和技术来减小生成的WebAssembly二进制文件的大小,从而减少加载时间和网络带宽的消耗,可以采用无损压缩算法(如Gzip(GNU zip,即一种压缩程序)或Brotli(即一种压缩算法))和无损压缩技术(如差分编码或字典压缩)等进行压缩。
在本发明实施例中,编译器模块的目标是生成高效的WebAssembly代码(即预设格式代码),以实现快速加载和执行性能。不同的编译器可能有不同的优化策略和技术,开发人员可以根据自己的需求选择适合的编译器,例如,Emscripten(即一个将C(即一种编码语言)和C++(即一种编码语言)代码编译为WebAssembly的工具链)、Binaryen(即一个用于优化和处理WebAssembly二进制代码的工具集)和wasm-pack(一个用于将Rust(即一种编码语言)代码编译为WebAssembly模块并进行打包的工具)等编译。
软件管理模块:用于管理软件程序的各个模块,包括版本控制、更新和依赖管理等功能,以确保系统的稳定性和可扩展性。该模块主要面向软件开发人员。
存储模块:用于存储源码版本、WebAssembly二进制格式等,以及接收来自分发模块的请求,以更新软件版本。
分发模块:负责软件签名、更新和补丁推送,缓存来自存储模块的最新的WebAssembly格式的软件,并接受来自客户端的软件下载和更新请求。
虚拟机模块:安装在客户设备上的虚拟机,该虚拟机可以是特定平台的原生虚拟机,也可以是跨平台的通用虚拟机,主要用于运行WebAssembly格式的软件程序。该虚拟机模块提供一些API(Application Programming Interface,即应用程序接口)和机制,用于控制WebAssembly程序对设备资源的访问,同时当软件尝试访问某个设备资源时,虚拟机会检查软件的权限配置和用户的授权情况判断是否允许访问,用户可根据自己需求选择是否授权。
下面结合基于WebAssembly技术的软件分发系统对软件分发流程进行详细说明。
步骤S101,获取目标应用的软件程序源代码,并将软件程序源代码转换为预设格式代码。
可选地,将软件程序源代码转换为预设格式代码的步骤,包括:对软件程序源代码进行静态处理,得到第一源代码,其中,静态处理是用于对未运行的软件程序源代码进行的处理;运行第一源代码,并在运行第一源代码的过程中,对第一源代码进行动态处理,得到第二源代码,其中,动态处理是用于对运行中的软件程序源代码进行的处理;采用预设编译器将第二源代码转换为初始格式代码;对初始格式代码进行压缩,生成预设格式代码。
在本发明实施例中,可以先获取目标应用的软件程序源代码,然后采用编译器模块将软件程序源代码转换为预设格式代码(即WebAssembly二进制格式代码),并进行优化和压缩处理,具体为:可以先对软件程序源代码进行静态处理(即对未运行的软件程序源代码进行处理),以得到第一源代码(例如,采用消除无效代码、内联函数、循环展开、常量折叠等优化技术,对代码进行静态分析和重组,以减少运行时的开销和冗余操作,得到优化后的代码),然后运行第一源代码,并在运行第一源代码的过程中,对第一源代码进行动态处理(即对运行中的软件程序源代码进行处理),以得到第二源代码(例如,采用数据复制消除、循环变量分析、寄存器分配等优化技术,通过分析程序(即运行中的代码)中的数据流,寻找和利用程序的数据依赖性,以减少内存访问和数据传输的开销,得到优化后的代码)。之后,采用预设编译器(即编译器模块中的编译器,如,Emscripten、Binaryen和wasm-pack等)将第二源代码转换为初始格式代码,再之后可以对初始格式代码进行压缩,以生成预设格式代码(例如,采用无损压缩算法和无损压缩技术等进行压缩,以减小生成的WebAssembly二进制文件的大小,从而减少加载时间和网络带宽的消耗)。
可选地,在将软件程序源代码转换为预设格式代码之后,还包括:将软件程序源代码以及预设格式代码存储至预设数据库,其中,软件程序源代码对应有代码版本;接收开发终端发送的代码更新请求,其中,代码更新请求携带有最新模块源代码以及最新模块源代码对应的最新代码版本,最新模块源代码对应有模块标识,开发终端用于更新目标应用的各个模块;将最新模块源代码转换为最新模块格式代码,并将最新模块源代码以及最新模块格式代码存储至预设数据库。
在本发明实施例中,可以将软件程序源代码(软件程序源代码对应有代码版本)以及预设格式代码存储至预设数据库(即存储模块的数据库),之后还可以将目标应用的各模块的最新模块源码以及相应的最新代码版本存储在预设数据库。
在本发明实施例中,软件管理模块可以接收开发终端(该开发终端用于更新目标应用的各个模块,以生成各模块相应的最新模块源码)发送的代码更新请求(该代码更新请求携带有最新模块源代码以及最新模块源代码对应的最新代码版本,且最新模块源代码对应有模块标识),然后编译器模块可以将最新模块源代码转换为最新模块格式代码,之后将最新模块源代码以及最新模块格式代码存储至预设数据库。
可选地,在将软件程序源代码转换为预设格式代码之后,还包括:接收开发终端发送的补丁更新请求,其中,补丁更新请求携带有最新补丁;将最新补丁转换为补丁格式代码,并将补丁格式代码增加至预设格式代码;将最新补丁以及补丁格式代码存储至预设数据库。
在本发明实施例中,软件管理模块还可以接收开发终端(该开发终端还可以对软件程序源代码增加补丁,以生成最新补丁)发送的补丁更新请求(该补丁更新请求携带有最新补丁),然后编译器模块可以将最新补丁转换为补丁格式代码,并且将补丁格式代码增加至预设格式代码,之后可以将最新补丁以及补丁格式代码存储至预设数据库。
步骤S102,对预设格式代码进行签名,得到签名后的预设格式代码。
在本发明实施例中,分发模块在分发预设格式代码前,可以使用安全性保障措施对软件程序(即将要下发各平台客户端的预设格式代码)进行代码签名,以保护用户数据的安全和隐私。
步骤S103,将签名后的预设格式代码分发至预设客户端集合中的每个预设客户端上,其中,预设客户端预先安装有预设虚拟机,预设虚拟机用于验证签名后的预设格式代码,并在对签名后的预设格式代码验证通过后执行预设格式代码。
在本发明实施例中,分发模块可以将签名后的预设格式代码分发至预设客户端集合中的每个预设客户端(预设客户端可以是不同系统会平台上的客户端,例如,windows系统平台上的客户端等)上。在本实施例中,每个预设客户端可以预先安装预设虚拟机,该预设虚拟机可以用于验证签名后的预设格式代码,并在对签名后的预设格式代码验证通过后执行预设格式代码,以完成对目标应用的运行。
可选地,在将签名后的预设格式代码分发至预设客户端集合中的每个预设客户端上之后,还包括:对于每个预设客户端,预设客户端中的预设虚拟机基于预设客户端中预先安装的目标系统的系统类型,将预设格式代码转换为预设指令集;预设虚拟机执行预设指令集,完成对目标应用的运行操作。
在本发明实施例中,每个预设客户端的预设虚拟机可以解释和执行WebAssembly二进制代码(即预设格式代码),可以根据其所在预设客户端中预先安装的目标系统的系统类型(例如,windows系统等),将预设格式代码转换为预设指令集(即该目标系统特定的指令集),然后预设虚拟机可以执行预设指令集,以完成对目标应用的运行操作。
在本发明实施例中,虚拟机还可以提供内存管理和安全隔离功能,以及实现权限控制和沙箱环境等操作,以保护用户数据的安全和隐私。例如,虚拟机可以控制WebAssembly程序对设备资源(即客户端上的资源,如文件、视频、图片等)的访问,同时当软件尝试访问某个设备资源时,虚拟机会检查软件的权限配置和用户的授权情况判断是否允许访问,用户也可根据自己需求选择是否授权。
可选地,在将签名后的预设格式代码分发至预设客户端集合中的每个预设客户端上之后,还包括:基于预设时间间隔,检查每个预设客户端上的代码版本与预设数据库中的最新代码版本是否一致;在预设客户端上的代码版本与最新代码版本不一致的情况下,从预设数据库中获取最新代码版本关联的最新模块格式代码;基于最新模块格式代码指示的模块标识,构建更新文件,并将最新模块格式代码以及更新文件下发至预设客户端上,其中,预设客户端中的预设虚拟机基于更新文件,将模块标识指示的原始模块格式代码替换为最新模块格式代码。
在本发明实施例中,分发模块可以通过定期与存储模块通信(例如,使用某种标准的网络通信协议(例如,HTTPS(Hypertext Transfer Protocol Secure,即超文本传输安全协议))来与存储模块进行交互),检查客户端上的当前代码版本和存储模块中的最新代码版本之间的差异(例如,可以通过向存储模块发送请求并获取版本信息的方式来实现)(即分发模块可以基于预设时间间隔,检查每个预设客户端上的代码版本与预设数据库中的最新代码版本是否一致),如果预设客户端上的代码版本与最新代码版本不一致,则需要从预设数据库中获取最新代码版本关联的最新模块格式代码,然后最新模块格式代码指示的模块标识,构建更新文件,并将最新模块格式代码以及更新文件下发至预设客户端上,之后预设客户端中的预设虚拟机可以根据更新文件,将模块标识指示的原始模块格式代码替换为最新模块格式代码。
在本发明实施例中,如果分发模块检测到代码需要更新,则可以将更新文件下发到用户设备(即预设客户端)上,即通过将更新文件的URL(Uniform Resource Locator,即统一资源定位符)提供给用户设备上的虚拟机,并使用虚拟机提供的文件加载机制来完成代码更新。
在本发明实施例中,虚拟机会从指定的URL下载最新模块格式代码,并替换当前运行的WebAssembly代码和其他资源文件。虚拟机还可以提供进度跟踪和错误处理功能,以确保下载和更新过程的完整性和可靠性。
在本发明实施例中,最新模块格式代码下载完成后,虚拟机会根据更新文件中的指令来更新软件,这可能涉及到动态加载新的WebAssembly模块、替换现有模块或更新资源文件等操作,虚拟机环境会确保更新过程的正确性和安全性,以避免数据损坏或安全漏洞。
可选地,在将签名后的预设格式代码分发至预设客户端集合中的每个预设客户端上之后,还包括:确定每个预设客户端上的预设格式代码的第一摘要字符串以及预设数据库中的预设格式代码的第二摘要字符串;在预设客户端上的第一摘要字符串与第二摘要字符串不一致的情况下,从预设数据库中获取补丁格式代码;将补丁格式代码下发至预设客户端上,其中,预设客户端中的预设虚拟机运行补丁格式代码,将补丁格式代码增加至预设客户端上的预设格式代码中。
在本发明实施例中,分发模块可以通过定期与存储模块通信,检查客户端上的代码摘要字符串和存储模块中的代码摘要字符串之间的差异(即分发模块可以确定每个预设客户端上的预设格式代码的第一摘要字符串以及预设数据库中的预设格式代码的第二摘要字符串,以判断两者是否一致),如果预设客户端上的第一摘要字符串与第二摘要字符串不一致,则表明预设数据库中的代码有新增补丁,需要从预设数据库中获取补丁格式代码,然后将补丁格式代码下发至预设客户端上,该预设客户端中的预设虚拟机可以运行补丁格式代码,以将补丁格式代码增加至预设客户端上的预设格式代码中。
图3是根据本发明实施例的一种可选的基于WebAssembly的软件分发流程的示意图,如图3所示,包括如下流程:
(1)将源码转换为WebAssembly格式,即将软件程序源代码通过编译器转换为WebAssembly二进制格式,并进行优化和压缩处理。
(2)进行软件存储管理,即使用软件管理器对软件程序进行版本控制、更新和依赖管理等操作,以确保系统的稳定性和可扩展性。
(3)进行软件分发,即使用安全性保障措施对将要下发的WebAssembly格式代码进行代码签名、权限控制和沙箱环境等操作,然后将WebAssembly格式代码下发至各平台。
(4)判断软件是否需要更新,如果需要更新,则从软件存储管理中获取最新版本代码进行更新,否则,进行用户终端虚拟机运行,以使虚拟机解释和执行WebAssembly格式代码,将其转换为平台特定的指令集进行运行。
本发明实施例中,提出了一种基于WebAssembly技术的软件分发方法,能够达到如下有益效果:(1)跨平台适配,通过将软件编译为可移植的WebAssembly二进制格式,实现了跨平台的软件分发和运行,减少了开发和管理成本;(2)性能优化,通过优化和压缩WebAssembly代码,提高了软件的执行效率和加载速度,改善了用户体验;(3)安全保障,通过多层安全机制,保证了软件的可靠运行,防止恶意代码的注入和执行,保护用户数据的安全和隐私,并且WebAssembly的沙箱环境提供了一定程度的安全性和隔离性,使得执行WebAssembly代码不会影响宿主环境或其他Web内容,有助于减少恶意软件的风险。
下面结合另一实施例进行详细说明。
实施例二
本实施例中提供的一种软件分发装置包含了多个实施单元,每个实施单元对应于上述实施例一中的各个实施步骤。
图4是根据本发明实施例的一种可选的软件分发装置的示意图,如图4所示,该软件分发装置可以包括:转换单元40,签名单元41,分发单元42,其中,
转换单元40,用于获取目标应用的软件程序源代码,并将软件程序源代码转换为预设格式代码;
签名单元41,用于对预设格式代码进行签名,得到签名后的预设格式代码;
分发单元42,用于将签名后的预设格式代码分发至预设客户端集合中的每个预设客户端上,其中,预设客户端预先安装有预设虚拟机,预设虚拟机用于验证签名后的预设格式代码,并在对签名后的预设格式代码验证通过后执行预设格式代码。
上述软件分发装置,可以通过转换单元40获取目标应用的软件程序源代码,并将软件程序源代码转换为预设格式代码,通过签名单元41对预设格式代码进行签名,得到签名后的预设格式代码,通过分发单元42将签名后的预设格式代码分发至预设客户端集合中的每个预设客户端上。在本发明实施例中,可以先将获取的目标应用的软件程序源代码转换为预设格式代码,然后对预设格式代码进行签名,之后将签名后的预设格式代码分发至预设客户端集合中的每个预设客户端上,以使预设客户端中的预设虚拟机在验证签名后,执行预设格式代码,完成目标应用的运行,通过将软件程序源代码编译成可移植的预设格式代码,能够实现跨平台的软件分发和运行,减少了开发和管理成本,进而解决了相关技术中在进行软件分发时需要为不同平台编写不同版本的软件程序代码,导致开发成本较高的技术问题。
可选地,转换单元包括:第一处理模块,用于对软件程序源代码进行静态处理,得到第一源代码,其中,静态处理是用于对未运行的软件程序源代码进行的处理;第二处理模块,用于运行第一源代码,并在运行第一源代码的过程中,对第一源代码进行动态处理,得到第二源代码,其中,动态处理是用于对运行中的软件程序源代码进行的处理;第一转换模块,用于采用预设编译器将第二源代码转换为初始格式代码;第一压缩模块,用于对初始格式代码进行压缩,生成预设格式代码。
可选地,软件分发装置还包括:第二转换模块,用于在将签名后的预设格式代码分发至预设客户端集合中的每个预设客户端上之后,对于每个预设客户端,预设客户端中的预设虚拟机基于预设客户端中预先安装的目标系统的系统类型,将预设格式代码转换为预设指令集;第一执行模块,用于预设虚拟机执行预设指令集,完成对目标应用的运行操作。
可选地,软件分发装置还包括:第一存储模块,用于在将软件程序源代码转换为预设格式代码之后,将软件程序源代码以及预设格式代码存储至预设数据库,其中,软件程序源代码对应有代码版本;第一接收模块,用于接收开发终端发送的代码更新请求,其中,代码更新请求携带有最新模块源代码以及最新模块源代码对应的最新代码版本,最新模块源代码对应有模块标识,开发终端用于更新目标应用的各个模块;第三转换模块,用于将最新模块源代码转换为最新模块格式代码,并将最新模块源代码以及最新模块格式代码存储至预设数据库。
可选地,软件分发装置还包括:第二接收模块,用于在将软件程序源代码转换为预设格式代码之后,接收开发终端发送的补丁更新请求,其中,补丁更新请求携带有最新补丁;第四转换模块,用于将最新补丁转换为补丁格式代码,并将补丁格式代码增加至预设格式代码;第二存储模块,用于将最新补丁以及补丁格式代码存储至预设数据库。
可选地,软件分发装置还包括:第一检查模块,用于在将签名后的预设格式代码分发至预设客户端集合中的每个预设客户端上之后,基于预设时间间隔,检查每个预设客户端上的代码版本与预设数据库中的最新代码版本是否一致;第一获取模块,用于在预设客户端上的代码版本与最新代码版本不一致的情况下,从预设数据库中获取最新代码版本关联的最新模块格式代码;第一下发模块,用于基于最新模块格式代码指示的模块标识,构建更新文件,并将最新模块格式代码以及更新文件下发至预设客户端上,其中,预设客户端中的预设虚拟机基于更新文件,将模块标识指示的原始模块格式代码替换为最新模块格式代码。
可选地,软件分发装置还包括:第一确定模块,用于在将签名后的预设格式代码分发至预设客户端集合中的每个预设客户端上之后,确定每个预设客户端上的预设格式代码的第一摘要字符串以及预设数据库中的预设格式代码的第二摘要字符串;第二获取模块,用于在预设客户端上的第一摘要字符串与第二摘要字符串不一致的情况下,从预设数据库中获取补丁格式代码;第二下发模块,用于将补丁格式代码下发至预设客户端上,其中,预设客户端中的预设虚拟机运行补丁格式代码,将补丁格式代码增加至预设客户端上的预设格式代码中。
上述的软件分发装置还可以包括处理器和存储器,上述转换单元40,签名单元41,分发单元42等均作为程序单元存储在存储器中,由处理器执行存储在存储器中的上述程序单元来实现相应的功能。
上述处理器中包含内核,由内核去存储器中调取相应的程序单元。内核可以设置一个或以上,通过调整内核参数来将签名后的预设格式代码分发至预设客户端集合中的每个预设客户端上。
上述存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM),存储器包括至少一个存储芯片。
本发明还提供了一种计算机程序产品,当在数据处理设备上执行时,适于执行初始化有如下方法步骤的程序:获取目标应用的软件程序源代码,并将软件程序源代码转换为预设格式代码,对预设格式代码进行签名,得到签名后的预设格式代码,将签名后的预设格式代码分发至预设客户端集合中的每个预设客户端上。
根据本发明实施例的另一方面,还提供了一种计算机可读存储介质,计算机可读存储介质包括存储的计算机程序,其中,在计算机程序运行时控制计算机可读存储介质所在设备执行上述的软件分发方法。
根据本发明实施例的另一方面,还提供了一种电子设备,包括一个或多个处理器和存储器,存储器用于存储一个或多个程序,其中,当一个或多个程序被一个或多个处理器执行时,使得一个或多个处理器实现上述的软件分发方法。
图5是根据本发明实施例的一种用于软件分发方法的电子设备(或移动设备)的硬件结构框图。如图5所示,电子设备可以包括一个或多个(图5中采用502a、502b,……,502n来示出)处理器502(处理器502可以包括但不限于微处理器MCU或可编程逻辑器件FPGA等的处理装置)、用于存储数据的存储器504。除此以外,还可以包括:显示器、输入/输出接口(I/O接口)、通用串行总线(USB)端口(可以作为I/O接口的端口中的一个端口被包括)、网络接口、键盘、电源和/或相机。本领域普通技术人员可以理解,图5所示的结构仅为示意,其并不对上述电子装置的结构造成限定。例如,电子设备还可包括比图5中所示更多或者更少的组件,或者具有与图5所示不同的配置。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本发明所提供的几个实施例中,应该理解到,所揭露的技术内容,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,可以为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

Claims (10)

1.一种软件分发方法,其特征在于,包括:
获取目标应用的软件程序源代码,并将所述软件程序源代码转换为预设格式代码;
对所述预设格式代码进行签名,得到签名后的所述预设格式代码;
将签名后的所述预设格式代码分发至预设客户端集合中的每个预设客户端上,其中,所述预设客户端预先安装有预设虚拟机,所述预设虚拟机用于验证签名后的所述预设格式代码,并在对签名后的所述预设格式代码验证通过后执行所述预设格式代码。
2.根据权利要求1所述的软件分发方法,其特征在于,将所述软件程序源代码转换为预设格式代码的步骤,包括:
对所述软件程序源代码进行静态处理,得到第一源代码,其中,所述静态处理是用于对未运行的所述软件程序源代码进行的处理;
运行所述第一源代码,并在运行所述第一源代码的过程中,对所述第一源代码进行动态处理,得到第二源代码,其中,所述动态处理是用于对运行中的所述软件程序源代码进行的处理;
采用预设编译器将所述第二源代码转换为初始格式代码;
对所述初始格式代码进行压缩,生成所述预设格式代码。
3.根据权利要求1所述的软件分发方法,其特征在于,在将签名后的所述预设格式代码分发至预设客户端集合中的每个预设客户端上之后,还包括:
对于每个所述预设客户端,所述预设客户端中的所述预设虚拟机基于所述预设客户端中预先安装的目标系统的系统类型,将所述预设格式代码转换为预设指令集;
所述预设虚拟机执行所述预设指令集,完成对所述目标应用的运行操作。
4.根据权利要求1所述的软件分发方法,其特征在于,在将所述软件程序源代码转换为预设格式代码之后,还包括:
将所述软件程序源代码以及所述预设格式代码存储至预设数据库,其中,所述软件程序源代码对应有代码版本;
接收开发终端发送的代码更新请求,其中,所述代码更新请求携带有最新模块源代码以及所述最新模块源代码对应的最新代码版本,所述最新模块源代码对应有模块标识,所述开发终端用于更新所述目标应用的各个模块;
将所述最新模块源代码转换为最新模块格式代码,并将所述最新模块源代码以及所述最新模块格式代码存储至所述预设数据库。
5.根据权利要求4所述的软件分发方法,其特征在于,在将所述软件程序源代码转换为预设格式代码之后,还包括:
接收所述开发终端发送的补丁更新请求,其中,所述补丁更新请求携带有最新补丁;
将所述最新补丁转换为补丁格式代码,并将所述补丁格式代码增加至所述预设格式代码;
将所述最新补丁以及所述补丁格式代码存储至所述预设数据库。
6.根据权利要求4所述的软件分发方法,其特征在于,在将签名后的所述预设格式代码分发至预设客户端集合中的每个预设客户端上之后,还包括:
基于预设时间间隔,检查每个所述预设客户端上的所述代码版本与所述预设数据库中的所述最新代码版本是否一致;
在所述预设客户端上的所述代码版本与所述最新代码版本不一致的情况下,从所述预设数据库中获取所述最新代码版本关联的所述最新模块格式代码;
基于所述最新模块格式代码指示的所述模块标识,构建更新文件,并将所述最新模块格式代码以及所述更新文件下发至所述预设客户端上,其中,所述预设客户端中的所述预设虚拟机基于所述更新文件,将所述模块标识指示的原始模块格式代码替换为所述最新模块格式代码。
7.根据权利要求5所述的软件分发方法,其特征在于,在将签名后的所述预设格式代码分发至预设客户端集合中的每个预设客户端上之后,还包括:
确定每个所述预设客户端上的所述预设格式代码的第一摘要字符串以及所述预设数据库中的所述预设格式代码的第二摘要字符串;
在所述预设客户端上的所述第一摘要字符串与所述第二摘要字符串不一致的情况下,从所述预设数据库中获取所述补丁格式代码;
将所述补丁格式代码下发至所述预设客户端上,其中,所述预设客户端中的所述预设虚拟机运行所述补丁格式代码,将所述补丁格式代码增加至所述预设客户端上的所述预设格式代码中。
8.一种软件分发装置,其特征在于,包括:
转换单元,用于获取目标应用的软件程序源代码,并将所述软件程序源代码转换为预设格式代码;
签名单元,用于对所述预设格式代码进行签名,得到签名后的所述预设格式代码;
分发单元,用于将签名后的所述预设格式代码分发至预设客户端集合中的每个预设客户端上,其中,所述预设客户端预先安装有预设虚拟机,所述预设虚拟机用于验证签名后的所述预设格式代码,并在对签名后的所述预设格式代码验证通过后执行所述预设格式代码。
9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质包括存储的计算机程序,其中,在所述计算机程序运行时控制所述计算机可读存储介质所在设备执行权利要求1至7中任意一项所述的软件分发方法。
10.一种电子设备,其特征在于,包括一个或多个处理器和存储器,所述存储器用于存储一个或多个程序,其中,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现权利要求1至7中任意一项所述的软件分发方法。
CN202311589071.5A 2023-11-24 2023-11-24 软件分发方法及其装置、电子设备及存储介质 Pending CN117873563A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311589071.5A CN117873563A (zh) 2023-11-24 2023-11-24 软件分发方法及其装置、电子设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311589071.5A CN117873563A (zh) 2023-11-24 2023-11-24 软件分发方法及其装置、电子设备及存储介质

Publications (1)

Publication Number Publication Date
CN117873563A true CN117873563A (zh) 2024-04-12

Family

ID=90581855

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311589071.5A Pending CN117873563A (zh) 2023-11-24 2023-11-24 软件分发方法及其装置、电子设备及存储介质

Country Status (1)

Country Link
CN (1) CN117873563A (zh)

Similar Documents

Publication Publication Date Title
CN111512333B (zh) 实现基于区块链的去中心化应用的系统和方法
EP3128421B1 (en) Method, device, and system for achieving java application installation by cloud compilation
US8881139B1 (en) Legacy application rehosting system
US10671370B2 (en) Distributing file system states
US9817860B2 (en) Generation and application of correctness-enforced executable filters
KR102600025B1 (ko) 프리캐싱을 위해 클라이언트 머신들 간에 셰이더들을 분배하는 것
CN111367510B (zh) 一种安卓功能模块开发的方法及装置
US9823915B1 (en) Software container format
CN103701930A (zh) 一种移动应用程序的实时更新方法及系统
US8701104B2 (en) System and method for user agent code patch management
CN111386523B (zh) 用于基于区块链的去中心化应用开发的系统和方法
US20120272223A1 (en) Technique for Run-Time Provision of Executable Code using Off-Device Services
CN110012096B (zh) 移动客户端服务更新管理方法、装置及系统
MXPA05013801A (es) Sistemas y metodos para validar integridad de archivo ejecutable utilizando criptografias de imagen parciales.
CN102034058B (zh) 应用软件安全控制方法及终端
KR101823016B1 (ko) 외부 코드 인증을 통한 웹 브라우징 오버헤드들의 감소
CN110532016B (zh) 版本管理方法、版本更新方法和版本管理系统
CN109413189B (zh) 一种基于底层转译的电子交易系统
CN106709281A (zh) 补丁发放和获取方法、装置
CN109753767B (zh) 基于区块链的软件分发及更新方法和装置、服务器、客户端
CN110457040B (zh) 用于源代码分布式构建的方法和装置
CN117873563A (zh) 软件分发方法及其装置、电子设备及存储介质
CN110807195A (zh) 一种智能合约的发布方法、发布平台装置及发布系统
CN106843994B (zh) 一种基于动态编译的客户端软件运行方法
US20080301654A1 (en) Program processing apparatus, program processing method and computer readable information recording medium

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