现有技术中,基于智能手机的应用程序需要首先安装智能手机上才能使用。但一方面,很多应用实际上只在部分场景下需要,用户并不会长期或经常使用,另一方面,用户使用应用程序时可能仅使用其中的部分功能,其他功能可能几乎从未使用,但这些应用程序会消耗大量内存资源。
因此,如何实现应用的轻量化,是目前业界面临的问题。
申请内容
一方面,本申请实施例提供了一种应用资源管理方法及装置。
本申请实施例提供的应用资源管理方法,包括:
接收应用开发包,所述应用开发包中包括至少一个应用组件的资源;获取所述应用开发包中包含的应用组件的资源;对获取到的应用组件的资源进行封装,得到以应用组件为资源组织单位的应用资源包;为所述应用资源包建立索引,并存储所述应用资源包。
可选地,所述应用组件的资源包括以下之一或组合:
应用组件的程序代码;
应用组件所使用的资源。
可选地,所述应用组件所使用的资源,包括以下之一或任意组合:
用于描述应用组件之间的依赖关系的文件;
应用组件所使用的数据资源文件。
可选地,为所述应用资源包建立索引,包括:为所述应用资源包建立第一级索引和第二级索引以及之间的映射关系,一个应用资源包的第一级索引用于描述该应用资源包提供的服务,一个应用资源包的第二级索引包括该应用资源包的唯一标识。
可选地,还包括:发布所述应用资源包的链接信息,其中,所述链接信息的显示文本根据所述应用资源包的第一级索引得到,所述链接信息关联的URI根据所述应用资源包的第二级索引得到。
可选地,还包括:为所述应用资源包分配图形化识别码,一个应用资源包的图形化识别码与该应用资源包的第二级索引关联。
可选地,所述第一级索引包括文本,所述第二级索引包括URI。
可选地,所述应用开发包中还包括用于描述应用组件的配置信息;获取所述应用开发包中包含的应用组件的资源,包括:根据所述用于描述应用组件的配置信息,从所述应用开发包中获得所述配置信息所描述的应用组件的资源。
可选地,对获取到的应用组件的资源进行封装时,在应用资源包中添加签名信息。
可选地,还包括:根据所述应用开发包的签名信息,对所述应用开发包进行身份合法性校验;其中,所述应用开发包的签名信息中包含所述应用开发包的身份信息。
可选地,还包括:对所述应用开发包进行数据完整性校验。
可选地,所述应用组件为云操作系统中的应用组件。
本申请实施例提供的服务器,包括:
封装模块,用于接收应用开发包,所述应用开发包中包括至少一个应用组件的资源;获取所述应用开发包中包含的应用组件的资源;以及,对获取到的应用组件的资源进行封装,得到以应用组件为资源组织单位的应用资源包;
存储模块,用于为所述应用资源包建立索引,并存储所述应用资源包。
可选地,所述应用组件的资源包括以下之一或组合:
应用组件的程序代码;
应用组件所使用的资源。
可选地,所述应用组件所使用的资源,包括以下之一或任意组合:
用于描述应用组件之间的依赖关系的文件;
应用组件所使用的数据资源文件。
可选地,所述存储模块具体用于:为所述应用资源包建立第一级索引和第二级索引以及之间的映射关系,一个应用资源包的第一级索引用于描述该应用资源包提供的服务,一个应用资源包的第二级索引包括该应用资源包的唯一标识。
可选地,还包括:发布模块,用于发布所述应用资源包的链接信息,其中,所述链接信息的显示文本根据所述应用资源包的第一级索引得到,所述链接信息关联的URI根据所述应用资源包的第二级索引得到。
可选地,还包括:发布模块,用于为所述应用资源包分配图形化识别码,一个应用资源包的图形化识别码与该应用资源包的第二级索引关联。
可选地,所述第一级索引包括文本,所述第二级索引包括URI。
可选地,所述应用开发包中还包括用于描述应用组件的配置信息;所述封装模块具体用于:根据所述用于描述应用组件的配置信息,从所述应用开发包中获得所述配置信息所描述的应用组件的资源。
可选地,所述封装模块具体用于:对获取到的应用组件的资源进行封装时,在应用资源包中添加签名信息。
可选地,还包括:校验模块,用于根据所述应用开发包的签名信息,对所述应用开发包进行身份合法性校验;其中,所述应用开发包的签名信息中包含所述应用开发包的身份信息。
可选地,还包括:校验模块,用于对所述应用开发包进行数据完整性校验。
可选地,所述应用组件为云操作系统中的应用组件。
本申请实施例提供的通信装置,包括:存储器,用于存储计算机程序指令;处理器,耦合到所述存储器,用于读取所述存储器存储的计算机程序指令,并作为响应,执行前述实施例提供所述的方法。
本申请实施例提供的一个或多个计算机可读介质,所述可读介质上存储有指令,所述指令被一个或多个处理器执行时,使得通信设备执行前述实施例提供的方法。
另一方面,本申请实施例提供了一种应用资源使用方法及装置。
本申请实施例提供的应用使用方法,包括:接收应用资源获取请求;根据所述应用资源获取请求,获取所请求的以应用组件为资源组织单位的应用资源包;运行获取到的应用资源包中的应用组件。
可选地,根据所述应用资源获取请求,获取所请求的以应用组件为资源组织单位的应用资源包,包括:根据所述应用资源获取请求,查询缓存的以应用组件为资源组织单位的应用资源包,若缓存的应用资源中包括所请求的应用资源包,则从缓存的应用资源包中获取所请求的应用资源包;否则,向服务器请求获取所请求的以应用组件为资源组织单位的应用资源包。
可选地,若缓存的应用资源中包括所请求的应用资源包,则还包括:针对缓存的所述应用资源包,确定该应用资源包是否有更新版本,若有,则从服务器请求获取更新版本的应用资源包,并用获取到的更新版本的应用资源包更新缓存的相应应用资源包。
可选地,所述应用资源包中包括应用组件的程序代码文件以及该应用组件所使用的资源文件;若缓存的应用资源包中包括所请求的应用资源包,则还包括:针对缓存的所述所请求的应用资源包,确定该应用资源包中包括的文件是否有更新版本,若有,则从服务器请求获取该应用资源包中的更新版本的文件,并用获取到的更新版本的文件更新缓存的该应用资源包中相应的文件。
可选地,所述应用组件所使用的资源文件,包括以下之一或任意组合:
用于描述应用组件之间的依赖关系的文件;
应用组件所使用的数据资源文件。
可选地,还包括:将从服务器获取到的应用资源包进行缓存。
本申请实施例提供的客户端设备,包括:
运行时调度模块,用于向应用管理模块发送应用资源获取请求;
所述应用管理模块,用于根据所述应用资源获取请求,获取所请求的以应用组件为资源组织单位的应用资源包,并将获取到的应用资源包发送给所述运行时调度模块;
所述运行时调度模块,还用于运行获取到的应用资源包中的应用组件。
可选地,所述应用管理模块具体用于:根据所述应用资源获取请求,查询缓存的以应用组件为资源组织单位的应用资源包,若缓存的应用资源中包括所请求的应用资源包,则从缓存的应用资源包中获取所请求的应用资源包;否则,向服务器请求获取所请求的以应用组件为资源组织单位的应用资源包。
可选地,所述应用管理模块还用于:若缓存的应用资源中包括所请求的应用资源包,则针对缓存的所述应用资源包,确定该应用资源包是否有更新版本,若有,则从服务器请求获取更新版本的应用资源包,并用获取到的更新版本的应用资源包更新缓存的相应应用资源包。
可选地,所述应用资源包中包括应用组件的程序代码文件以及该应用组件所使用的资源文件;所述应用管理模块还用于:若缓存的应用资源包中包括所请求的应用资源包,则针对缓存的所述所请求的应用资源包,确定该应用资源包中包括的文件是否有更新版本,若有,则从服务器请求获取该应用资源包中的更新版本的文件,并用获取到的更新版本的文件更新缓存的该应用资源包中相应的文件。
可选地,所述应用组件所使用的资源文件,包括以下之一或任意组合:
用于描述应用组件之间的依赖关系的文件;
应用组件所使用的数据资源文件。
可选地,所述应用管理模块还用于:将从服务器获取到的应用资源包进行缓存。
本申请实施例提供的通信装置,包括:一个或多个处理器;以及,一个或多个计算机可读介质,所述可读介质上存储有指令,所述指令被所述一个或多个处理器执行时,使得所述通信装置执行前述实施例提供的方法。
本申请实施例提供的一个或多个计算机可读介质,所述可读介质上存储有指令,所述指令被一个或多个处理器执行时,使得通信设备执行前述实施例提供的方法。
具体实施方式
虽然本申请的概念易于进行各种修改和替代形式,但是其具体实施例已经通过附图中的示例示出并且将在本文中详细描述。然而,应当理解,没有意图将本申请的概念限制为所公开的特定形式,而是相反,意图是覆盖与本申请以及所附权利要求一致的所有修改、等同物和替代物。
说明书中对“一个实施例”、“实施例”、“说明性实施例”等的引用,指示所描述的实施例可包括特定特征、结构或特性,但是每个实施例可以或可以不必包括特定特征、结构或特性。此外,这样的短语不一定指的是相同的实施例。进一步地,认为在本领域技术人员的知识范围内,当结合实施例描述特定特征、结构或特性时,结合无论是否明确描述的其它实施例影响这样的特征,结构或特性。另外,应当理解,以“A,B和C中的至少一个”的形式包括在列表中的项目可以表示(A);(B);(C);(A和B);(A和C);(B和C);或(A,B和C)。类似地,以“A,B或C中的至少一个”的形式列出的项目可以表示(A);(B);(C);(A和B);(A和C);(B和C)或(A,B和C)。
在一些情况下,所公开的实施例可以在硬件、固件、软件或其任何组合中实现。所公开的实施例还可以被实现为由一个或多个暂时性或非暂时性机器可读(例如,计算机可读)存储介质携带或存储的指令,其可以由一个或多个处理器读取和执行。机器可读存储介质可以体现为用于以机器可读形式(例如,易失性或非易失性存储器、介质盘或其他介质)存储或传输信息的任何存储设备,机制或其他物理结构的设备)。
在附图中,一些结构或方法特征可以以特定布置和/或顺序示出。然而,应当理解,可能不需要这样的具体布置和/或排序。相反,在一些实施例中,这些特征可以以与说明性附图中所示不同的方式和/或顺序来布置。另外,在特定图中包括结构或方法特征并不意味着暗示这种特征在所有实施例中都是需要的,并且在一些实施例中可以不包括或可以与其他特征组合。
本申请实施例中,实现用户在无需安装应用程序的情况下,能够使用应用程序的功能,而无需担心应用程序的卸载和清理。用户可根据需要使用应用组件,且无需进行安装,减少了终端的内存资源开销。本申请实施例可应用于多种操作系统,比如移动操作系统,尤其是云操作系统(YunOS)。
本申请实施例可包括应用资源的管理以及应用资源的使用等几个方面。应用资源管理主要包括应用资源的发布管理,主要由服务器对应用开发者开发并上传的应用开发包进行处理,以应用组件为资源组织单位进行存储、索引等管理。应用资源的使用主要包括应用资源的获取和运行,主要由客户端设备获取以应用组件为资源组织单位的应用资源并运行,以实现相应的功能。
其中,应用开发包是指应用开发者开发的并按照设定规则封装的数据结构体。应用开发包中可包括:一个或多个应用组件的资源,还可以包括一些用于描述和定义应用组件的配置信息。
其中,应用组件是指对数据和方法的封装。应用组件能够实现一定的功能,一个应用程序(Application)通常由多个应用组件组成,各个应用组件协同合作,共同组成一个完整的应用程序的功能。也就是说,应用组件是比应用程序粒度更小的运行单位,相比于应用程序,应用组件的代码规模较小。
以云操作系统为例,在云操作系统中,应用组件可被定义为Page。Page是提供本地或远程服务的基本单元,是对本地服务和远程服务的抽象,也即服务的基本单元,通过对数据和方法的封装,可以提供各种服务。运行态Page称为Page实例,是本地服务或远程服务的运行载体。一个Page可以在云操作系统中被唯一标识,比如可以使用唯一资源标识符(Uniform Resource Identifier,URI)对Page进行标识。
应用组件的资源,可包括但不限于以下内容之一或组合:应用组件的程序代码文件(应用组件的程序代码通常被编译为可执行文件),应用组件所使用的资源等。其中,应用组件所使用的资源可采用文件形式进行组织,具体可包括但不限于以下一种或多种文件:用于描述应用组件之间的依赖关系的文件,应用组件所使用的数据资源文件,比如,图片文件、视频文件、音频文件、文本文件等。
用于描述应用组件的配置信息也可以组织为文件形式,比如可包括应用组件配置文件、签名文件等。其中,应用组件配置文件用于对应用开发包中包含的有关应用组件进行声明以及配置信息。举例来说,应用组件配置文件中可包含应用组件在操作系统中的基本信息,比如,应用组件的名称、标识、版本等,还可以包含应用组件的其他配置信息,比如,是否将应用组件的数据存储在网络侧(如云端),是否允许硬件加速等。通常一个应用开发包中包含一个应用组件配置文件;签名文件中包含有相关签名信息,比如开发者身份信息、用于信息加密的数字签名等。
下面结合附图对本申请实施例进行详细描述。
图1示例性地示出了应用于本申请实施例的系统架构100。系统架构100中包括第一服务器110、第二服务器120、第一客户端设备130、第二客户端设备140,上述设备之间通过网络150连接,基于网络150进行通信。
系统架构100中的客户端设备的数量可以为多个,图1中仅示例性地示出了第一客户端设备130和第二客户端设备140。系统架构100中的客户端设备的类型可以包括多种,可以是任何适当的计算或移动设备,比如可包括:智能手机、平板电脑、笔记本电脑、个人数字助理(Personal Digital Assistant,PDA)、智能穿戴设备或类似设备。系统架构100中的客户端设备可使用云操作系统或者其他操作系统,本申请实施例对此不作限制。
系统架构100中的服务器的数量可以为多个,图1中仅示例性地示出了第一服务器110和第二服务器120。在另外的例子中,第一服务器110和第二服务器120也可以由一个服务器代替,该服务器可实现第一服务器110和第二服务器120的功能。
上述系统架构中,作为应用开发者的用户可通过第一客户端设备130将应用开发包发送给第一服务器110。第一客户端设备130中可包括应用开发模块,开发者用户可使用该应用开发模块进行应用组件的开发,并按照设定的规则封装成应用开发包。第一服务器110接收到第一客户端设备130发送的应用开发包后,可对该应用开发包进行分包,得到该应用开发包中包含的应用组件的资源,并以应用组件为资源组织单位进行封装,得到应用资源包,并对这些应用资源包进行索引和存储。可选地,可将应用资源存储在数据库160中。
上述系统架构中,作为应用使用者的用户可通过第二客户端设备140请求应用资源包,并在第二客户端140本地运行获取到的应用资源包中的应用组件。在应用资源包的获取过程中,第二客户端设备140可向第二服务器120发送应用资源获取请求,第二服务器120可根据该应用资源获取请求,从数据库160中获取所请求的应用资源包,并将获取到的应用资源包发送给第二客户端设备140。
如前所述,应用开发包可按照设定的规则进行封装,第一服务器110在接收到按照该规则封装的应用开发包后,可按照本申请实施例所描述的方式进行应用资源管理。进一步地,如果第一服务器110接收到的应用开发包未按照该规则进行封装,则第一服务器110可按照其他方式对应用资源进行管理。
在一些实施例中,应用开发包的封装规则可规定为:应用组件配置文件、应用组件处于同一级目录。一个应用组件的目录下可包括该应用组件的程序代码文件(如被编译后的可执行文件),还可包括该应用组件所使用的数据资源文件,比如图片文件等。如果一个应用组件的运行还依赖于其他应用组件,则该应用组件的目录中还包括用于描述该应用组件的依赖关系的文件。可选地,多个应用组件共享使用的数据文件可与应用组件配置文件、签名文件、应用组件处于同一级目录。
图2示例性地示出了一种应用开发包的目录结构。这里仅示例性地示出了核心目录结果,其中,Manifest为应用组件配置文件的文件名,该文件可采用JSON数据格式,该配置文件中声明了应用组件A和应用组件B。应用组件A和应用组件B为Manifest文件中定义的组件名,组件名和目录名保持统一。每个应用组件目录下保存对应应用组件相关的程序代码文件和资源文件(比如应用组件所使用的图片文件等)。其中,应用组件A的目录下还包括用于描述依赖关系的文件(图中该文件的文件名为bundle.json),该文件用于定义应用组件A对外部资源的依赖,例如,如果应用组件A依赖common定义的资源,则需要在bundle.json文件中明确定义该依赖关系。Signature目录下包含有签名文件(未在图中示出)。图2所示的目录结构仅为一种示例,本申请实施例对此不做限制。
下面结合图3和图4对本申请实施例提供的应用资源管理过程进行详细描述。
图3示例性地示出了第一服务器110的结构。第一服务器110中可包括校验模块111、封装模块112、存储模块113、发布模块114。上述校验模块111、发布模块114中的一个或多个,可作为可选模块。
校验模块111可对应用开发包进行校验,具体可进行身份合法性校验,或者进行数据完整性校验,或者进行身份合法性校验和数据完整性校验。封装模块112可从应用开发包中获取其中包含的应用组件的资源,并对获取到的应用组件的资源进行封装,得到以应用组件为资源组织单位的应用资源包。存储模块113可分别为应用资源包建立索引,并存储这些应用资源包。发布模块114可对应用资源包进行发布。
图4示例性地示出了应用资源管理流程示意图,该流程可由第一服务器110执行。
在图4所示的S401中,第一服务器110接收第一客户端设备130发送的应用开发包。该应用开发包中可包括一个或多个应用组件的相关资源。应用开发包中包含的内容可如前所述,在一个例子中,应用开发包的目录结构可如图2所示。
在图4所示的S402中,第一服务器110可对应用开发包进行校验。如果校验通过,则可执行后续操作,如果校验不通过,则可进入S410,将校验结果反馈给第一客户端设备130。S402为可选操作,如果不执行校验,则可直接转入后续流程进行处理。
以图3所示的第一服务器110为例,在S402中,校验模块111可从身份合法性和/或数据完整性方面对应用开发包进行校验。在进行身份合法性校验时,校验模块111可读取应用开发包中包含的签名文件,根据该签名文件中包含的开发者用户身份信息,对该开发者的身份进行合法性验证。应用开发包中还可包括用于验证数据完整性的校验码,一个例子中,该校验码可通过对应用开发包所包含的内容进行完整性校验算法运算得到。在进行数据完整性验证时,验证模块111可对接收到的应用开发包所包含的内容进行完整性校验算法运算,生成校验码,并用生成的校验码与该应用开发包中包含的校验码进行比较,如果一致,则数据完整性验证通过,否则数据完整性验证失败。通过验证模块111进行身份合法性和/或数据完整性验证,可保证应用开发包的安全性,比如可将恶意的应用资源排除在外。
在图4所示的S403中,第一服务器110获取应用开发包中包含的应用组件的资源。具体地,第一服务器110可首先根据应用开发包的封装规则对应用开发包进行解析,得到其中包含的用于描述应用组件的配置信息,根据用于描述应用组件的配置信息,从应用开发包中获得该配置信息所描述的应用组件的资源。
以图3所示的第一服务器110以及前述的应用开发包的目录结构为例,在S403中,封装模块112可根据应用开发包的目录结构对应用开发包进行解析,获得其中包含的应用组件配置文件,根据该应用组件配置文件中所声明的应用组件,从该应用开发包的相应目录下得到应用组件的相关资源(可包括应用组件目录下的程序代码文件、数据文件、用于描述依赖关系的文件中的一种或多种)。
在图4所示的S404中,第一服务器110对获取到的应用组件的资源进行封装,得到以应用组件为资源组织单位的应用资源包。第一服务器110可针对应用开发包中的每一个应用组件,将该应用组件的资源封装为一个应用资源包。进一步地,还可在应用资源包中设置签名信息,用于描述或声明该应用资源包的开发者、拥有者以及所使用的数字签名等。进一步地,还可以为应用资源包设置版本信息。
仍以图3所示的第一服务器110以及前述的应用开发包的目录结构为例,在S404中,封装模块112可对S403中获取到的应用组件A所在目录下的应用组件A程序代码文件、bundle.json文件、数据资源文件封装为应用组件A的应用资源包;对S403中获取到的应用组件B所在目录下的应用组件B程序代码文件、数据资源文件封装为应用组件B的应用资源包。
在图4的S405中,第一服务器110分别为应用资源包建立索引,并存储所述应用资源包,比如存储于数据库160中。进一步地,还可为应用资源包设置统一资源标识符(Uniform Resource Identifier,URI)。该操作可由图3所示的第一服务器110中的存储模块113实现。
在一些实施例中,第一服务器110可针对每个应用资源包,为相应应用资源包建立两级索引,具体包括第一级索引和第二级索引,并建立两级索引之间的映射关系。一个应用资源包的第一级索引用于描述该应用资源包提供的服务,一个应用资源包的第二级索引包括该应用资源包的唯一标识,比如应用资源包的URI。其中,第一级索引主要描述应用资源包的服务内容,可表现为描述应用资源包提供的服务的文本,第一级索引主要用于提供给用户,使用户可直观地了解应用资源包所提供的服务或实现的功能。第二级索引主要用于客户端设备和服务器之间的交互,用以唯一标识一个应用资源包。
在图4的S406中,第一服务器110可将应用资源包进行发布,以使用户可选择使用应用资源包。该操作可由图3所示的第一服务器110中的发布模块114执行。第一服务器110可采用多种方式进行应用资源包发布。作为一个例子,第一服务器110可发布应用资源包的链接信息,该链接信息的显示文本根据该应用资源包的第一级索引得到,该链接信息关联的URI根据该应用资源包的第二级索引得到。通过发布应用资源包的链接信息,一方面可以使用户直观地了解应用资源包所提供的服务,另一方面可以使用户通过点击等操作获得该应用资源包,从而获得该应用资源包所提供的服务或所实现的功能。作为另一个例子,第一服务器110可为应用资源包分配图形化识别码(比如二维码),该图形化识别码与应用资源包的二级索引关联,该图形化识别码可被展示在用户可能获得的场所,这样,用户可使用客户端设备扫描图形化标识码,从而获得该应用资源包,从而获得该应用资源包所提供的服务或所实现的功能。
上述图4所示的应用资源管理流程中,各部分的操作的执行顺序仅为一种示例,本申请实施例对此没有限制。
通过上述实施例所描述的应用资源管理方案,可以看出,本申请实施例可以以应用组件为单位进行应用资源的封装和管理,为以应用组件为单位进行应用资源的获取和使用提供了基础。
下面结合图5至图8对应用资源的使用过程进行描述。
图5示例性地示出了第二客户端设备140的结构示意图。第二客户端设备140中可包括:运行时调度模块(Runtime Scheduler)141、应用管理模块142,进一步地还可包括网络管理模块143。运行时调度模块141、应用管理模块142和网络管理模块143具体可以是操作系统中的功能模块。运行时调度模块141可向应用管理模块142发送应用资源获取请求,该应用资源获取请求用于请求获取以应用组件为资源组织单位的应用资源包。应用管理模块142可根据该应用资源获取请求,获取对应的应用资源包,并将获取到的应用资源包发送给运行时调度模块141。运行时调度模块141可启动该应用资源包中的应用组件。
进一步地,应用管理模块142可根据应用资源获取请求,查询第二客户端设备140本地缓存的应用资源包,若缓存的应用资源中包括所请求的应用资源包,则从缓存的应用资源包中获取所请求的应用资源包;否则,通过网络管理模块143向第二服务器120请求获取所请求的应用资源包。
图6示例性地示出了第二服务器120的结构示意图。第二服务器120中可包括:应用管理模块121和网络管理模块122。应用管理模块121可根据接收到的应用资源获取请求,查询所请求的应用资源包,并将查询到的应用资源包通过网络管理模块122发送给第二客户端设备140。
图7示例性地示出了应用资源的使用流程。
在图7所示的S701中,第二客户端设备140接收应用资源获取请求,该应用资源获取请求用于请求获取以应用组件为资源组织单位的应用资源包。
以图5所示的客户端设备的结构为例,在一个例子中,如图8所示,在S801中,当用户点击应用资源包对应的链接或以其他方式(比如扫描二维码的方式)以启动对应的应用组件时,操作系统将由该用户操作行为产生的相关事件通知给运行时调度模块141,运行时调度模块141发送请求给应用管理模块142,以请求获取与用户请求的功能对应的应用资源包。其中,在运行时调度模块141接收到的事件中,以及运行时调度模块141发送给应用管理模块142的请求中携带有应用资源包的URI。
上述过程可参见图9中的S901至S902。当用户点击应用资源包对应的链接或以其他方式以启动对应的应用组件时,操作系统发送消息给运行时调度模块(图9中的S901),运行时调度模块向应用管理模块请求对应的应用资源包(图9中的S902)。
在图7所示的S702中,第二客户端设备140根据该应用资源获取请求,获取所请求的应用资源包。具体实施时,第二客户端设备140可在该设备本地获取所请求的应用资源包,也可以从网络侧的第二服务器120获取所请求的应用资源包,还可以优先从该设备本地获取所请求的应用资源包,在未获取到的情况下,再从网络侧的第二服务器120获取所请求的应用资源包。
以图5所示的客户端设备的结构以及图6所示的服务器的结构为例,在一个例子中,如图8所示,在S802~S804中,第二客户端设备140中的应用管理模块142在本地缓存的应用资源包中查找所请求获取的应用资源包,如果本地已经缓存有所请求获取的应用资源包,则应用管理模块142将本地缓存的该应用资源包返回给运行时调度模块141。如果应用管理模块142无法在本地缓存的应用资源包中获取与用户请求功能对应的应用资源包,则通过网络管理模块143发起远程过程调用(Remote Procedure Call Protocol,RPC),向第二服务器120发送应用资源获取请求,以请求获取与用户请求功能对应的应用资源包。第二服务端120的应用管理模块121接收到该请求后,根据该请求获取对应的应用资源包,并将获取到的应用资源包通过网络管理模块122返回给第二客户端设备中的应用管理模块142。进一步地,第二客户端设备140还可以将从服务器获取到的应用资源包缓存在该客户端设备本地。
上述过程可参见图9中的S903至S912。如果客户端设备中的应用管理模块确定本地缓存有对应的应用资源包,则直接将该应用资源包返回给运行时调度模块(图9中的S903~S904),否则,通过网络管理模块向服务器发送应用资源获取请求,以请求获取远程的应用资源包(图9中的S905~S907)。服务器根据该请求获取指定的应用资源包后通过网络管理模块返回给客户端设备的应用管理模块(图9中的S908~S911)。应用管理模块将该应用资源包发送给运行时调度模块(图9中的S912)。
在图7所示的S703中,第二客户端设备140启动获取到的应用资源包中的应用组件。以图5所示的客户端设备的结构为例,在一个例子中,如图8中的S805所示,第二客户端设备140中的运行时调度模块141得到应用资源包后,启动该应用资源包中的应用组件,从而为用户启动请求的功能或提供相应的服务。
通过以上描述可以看出,本申请实施例中,可基于以应用组件为资源组织单位的应用资源包,进行应用资源的获取和使用,实现用户请求的功能,实现了根据用户需求加载应用资源,无需在客户端设备上进行安装,节省了客户端设备的内存和磁盘空间。
在一些实施例中,在客户端设备本地缓存有所请求的应用资源包的情况下,客户端设备(更具体地,比如客户端设备中的应用管理模块)可判断该应用资源包是否有更新版本,如果有更新版本,则从服务器请求获取更新版本的应用资源包,并将更新版本的应用资源包缓存在客户端设备本地。作为一个例子,可采用如下方式判断本地缓存的应用资源是否有更新版本:获取本地缓存的该应用资源的版本信息,向服务器发送查询请求,以请求查询该应用资源包的版本信息,通过版本信息的比较,可以判断本地缓存的应用资源包是否存在更新版本。
通过上述流程,可在以按需加载以应用组件为资源组织单位的应用资源包的基础上,以应用资源包为粒度来更新客户端设备本地缓存的应用资源,从而提升了应用升级的效率,并可节省网络资源开销。
为了进一步提升应用升级的效率以及节省网络资源开销,在另外一些实施例中,可以以比应用资源包更小的粒度来更新本地缓存的应用资源。具体地,若客户端设备本地缓存的应用资源包中包括所请求的应用资源包,则可针对缓存的该应用资源包,确定该应用资源包中的文件是否有更新版本,若有,则从服务器请求获取该应用资源包中的更新版本的文件,并用获取到的更新版本的文件更新缓存的该应用资源包中相应的文件。如前所述,应用资源包中可包括应用组件的程序代码文件以及应用组件所使用的资源文件(比如用于描述依赖关系的文件,图片文件等等),因此通过该方法可以以应用资源包中的文件作为资源粒度进行应用资源更新。
图10a和图10b示例性地示出了以应用资源包为粒度进行应用资源更新以及以应用资源包中的文件为粒度进行资源更新的比较示意图。若客户端设备本地未缓存有用户请求的应用资源包,则客户端设备从服务器获取应用资源包Page 1,并将该应用资源包的所有内容(比如该应用资源包中包括的所有文件)缓存在客户端设备本地,如图10a所示。图10a中的每个小方块代表应用资源包中的一个最小资源粒度(比如文件粒度)的组成部分,比如可包括应用组件的程序代码文件、用于描述应用组件的依赖关系的文件、应用组件所使用的图片文件等等。图中所示的文件R是Page 1中的一个文件。文件R可以是应用资源包中的一个最小资源粒度的组成部分,比如可包括应用组件的程序代码文件、用于描述应用组件的依赖关系的文件、应用组件所使用的图片文件等等。
若后续用户再次请求该应用资源包,客户端设备本地已经缓存有该应用资源包,则客户端设备可进一步判断该应用资源包中包括的文件是否有更新版本,如果文件R有更新的版本,则客户端设备从服务器获取该文件R的更新版本文件R’,并用文件R’更新缓存的该应用资源包中的文件R,如图10b所示。
在实际应用中,可针对不同的场景,选取适合的应用资源更新方法。作为一个例子,在网络性能较好或者采用WiFi方式联网时,可采用以应用资源包为资源更新粒度的应用资源更新方法,否则,可采用以应用资源包中的文件为资源更新粒度的应用资源更新方法。
为了更清楚地理解本申请实施例,下面结合具体应用场景进行说明。
服务器提供有以下应用资源包:
应用资源包1:用于实现机票查询功能,版本号是1.0,服务器为应用资源包1设置有二维码,该二维码与应用资源包1的URI关联。应用资源包1中包括以下文件(以下示例性地示出了文件名):
search:用于实现机票查询功能的应用组件(称为search组件)的程序代码文件;
page1_picture:search组件所使用的一个图片文件。
应用资源包2:用于实现机票订购功能,版本号是1.0。应用资源包2中包括以下文件(以下示例性地示出了文件名):
order:用于实现机票订购功能的应用组件(称为order组件)的程序代码文件;
page2_picture:order组件所使用的一个图片文件。
dependency:描述order组件与用于实现在线支付的应用组件(称为payment组件)之间的依赖关系,order组件的运行过程中会调用payment组件。
应用资源包3:用于实现在线支付功能,版本号是2.0。应用资源包3中包括以下文件(以下示例性地示出了文件名):
payment:用于实现payment组件的程序代码文件。
基于上述应用资源包,用户可实现机票查询、订购的功能,具体过程如下:
用户使用移动终端扫描与应用资源包1对应的二维码,获得应用资源包1的URI。由于该移动终端中未缓存有应用资源包1,因此向服务器发送应用资源获取请求,该请求中携带有应用资源包1的URI。服务器根据该请求,获取应用资源包1,并将应用资源包1发送给该移动终端。该移动终端缓存应用资源包1到本地,并启动和运行应用资源包1中的search组件。search组件启动后,如图11所示,在移动终端的屏幕上展示search组件的用户界面(User Interface,UI)1100,该UI中包括机票查询条件的一组输入框1101和查询功能键1102,应用资源包1中的page1_picture也被展示在该UI中。
用户通过search组件的UI输入机票查询条件并点击查询功能键1102,基于search组件的执行逻辑,移动终端将机票查询请求发送给服务器,接收服务器返回的机票查询结果,并将机票查询结果以及机票订购功能键1103显示在该UI 1100中,如图12所示。
用户从该查询结果中选择欲订购的机票,并点击机票订购功能键1103,该操作行为触发移动终端根据该机票订购功能键1103所关联的应用资源包URI获取用于实现机票订购功能的应用资源包2。由于移动终端中未缓存有应用资源包2,因此向服务器发送应用资源获取请求,该请求中携带有应用资源包2的URI。服务器根据该请求,获取应用资源包2,并将应用资源包1发送给该移动终端。该移动终端缓存应用资源包1到本地,并启动和运行应用资源包1中的order组件。order组件启动后,如图13所示,在移动终端的屏幕上展示order组件的UI1200,该UI中包括一组信息输入框1201,使用户可通过该UI输入机票订购过程所需提交的信息,还包括在线支付功能键1202,应用资源包2中的page2_picture1也被展示在该UI中。
用户通过order组件的UI输入订购信息并点击在线支付功能键1202,基于order组件所使用的依赖关系文件,移动终端获取用于实现在线支付功能的应用资源包3。移动终端3中已缓存有版本号为1.0的应用资源包3,该版本号低于服务器中的应用资源包3的版本号2.0,因此,移动终端从服务器获取版本号2.0的应用资源包3,并用版本号2.0的应用资源3更新缓存的版本号1.0的应用资源包3,并启动该应用资源包3中的payment组件。payment组件启动后,用户通过payment组件的UI进行在线支付操作,完成机票订购。
上述流程中,如果用户只需要进行机票查询而无需机票订购,则在获取到应用资源包1后运行其中的search组件即可,无需获取和启动应用资源包2和应用资源包3,从而实现了基于用户需要加载相应的应用组件。
基于相同的技术构思,本申请实施例还提供了一种通信装置,该通信装置可实现前述实施例中的第一服务器110的流程。
参见图14,为本申请实施例提供的应用加载装置的结构示意图。该装置1400可实现前述实施例描述的流程。图14示例性地示出了根据各种实施例的示例装置1400。装置1400可包括一个或多个处理器1402,系统控制逻辑1401耦合于至少一个处理器1402,非易失性存储器(non-volatile memory,NMV)/存储器1404耦合于系统控制逻辑1401,网络接口1406耦合于系统控制逻辑1401。
处理器1402可包括一个或多个单核处理器或多核处理器。处理器1402可包括任何一般用途处理器或专用处理器(如图像处理器、应用处理器基带处理器等)的组合。
一个实施例中的系统控制逻辑1401,可包括任何适当的接口控制器,以提供到处理器1402中的至少一个的任何合适的接口,和/或提供到与系统控制逻辑1401通信的任何合适的设备或组件的任何合适的接口。
一个实施例中的系统控制逻辑1401,可包括一个或多个内存控制器,以提供到系统内存1403的接口。系统内存1403用来加载以及存储数据和/或指令。例如,对应装置1400,在一个实施例中,系统内存1403可包括任何合适的易失性存储器。
NVM/存储器1404可包括一个或多个有形的非暂时的计算机可读介质,用于存储数据和/或指令。例如,NVM/存储器1404可包括任何合适的非易失性存储装置,如一个或多个硬盘(hard disk device,HDD),一个或多个光盘(compact disk,CD),和/或一个或多个数字通用盘(digital versatile disk,DVD)。
NVM/存储器1404可包括存储资源,该存储资源物理上是该系统所安装的或者可以被访问的设备的一部分,但不一定是设备的一部分。例如,NVM/存储器1404可经由网络接口1406被网络访问。
系统内存1403以及NVM/存储器1404可分别包括临时的或持久的指令1410的副本。指令1410可包括当由处理器1402中的至少一个执行时导致装置1400实现图4、图8和图9描述的方法之一或组合的指令。各实施例中,指令1410或硬件、固件,和/或软件组件可另外地/可替换地被置于系统控制逻辑1401,网络接口1406和/或处理器1402。
网络接口1406可包括一个接收器来为装置1400提供无线接口来与一个或多个网络和/或任何合适的设备进行通信。网络接口1406可包括任何合适的硬件和/或固件。网络接口1406可包括多个天线来提供多输入多输出无线接口。在一个实施例中,网络接口1406可包括一个网络适配器、一个无线网络适配器、一个电话调制解调器,和/或无线调制解调器。
在一个实施例中,处理器1402中的至少一个可以与用于系统控制逻辑的一个或多个控制器的逻辑一起封装。在一个实施例中,处理器中的至少一个可以与用于系统控制逻辑的一个或多个控制器的逻辑一起封装以形成系统级封装。在一个实施例中,处理器中的至少一个可以与用于系统控制逻辑的一个或多个控制器的逻辑集成在相同的管芯上。在一个实施例中,处理器中的至少一个可以与用于系统控制逻辑的一个或多个控制器的逻辑集成在相同的管芯上以形成系统芯片。
装置1400可进一步包括输入/输出装置1405,。输入/输出装置1405可包括用户接口旨在使用户与装置1400进行交互,可包括外围组件接口,其被设计为使得外围组件能够与系统交互,和/或,可包括传感器,旨在确定环境条件和/或有关装置1400的位置信息。
基于相同的技术构思,本申请实施例还提供了一种通信装置,该通信装置可实现前述实施例中的第二客户端设备130的流程。
参见图15,为本申请实施例提供的应用加载装置的结构示意图。该装置1500可实现前述实施例描述的流程。图15示例性地示出了根据各种实施例的示例装置1500。装置1500可包括一个或多个处理器1502,系统控制逻辑1501耦合于至少一个处理器1502,非易失性存储器(non-volatile memory,NMV)/存储器1504耦合于系统控制逻辑1501,网络接口1506耦合于系统控制逻辑1501。
处理器1502可包括一个或多个单核处理器或多核处理器。处理器1502可包括任何一般用途处理器或专用处理器(如图像处理器、应用处理器基带处理器等)的组合。
一个实施例中的系统控制逻辑1501,可包括任何适当的接口控制器,以提供到处理器1502中的至少一个的任何合适的接口,和/或提供到与系统控制逻辑1501通信的任何合适的设备或组件的任何合适的接口。
一个实施例中的系统控制逻辑1501,可包括一个或多个内存控制器,以提供到系统内存1503的接口。系统内存1503用来加载以及存储数据和/或指令。例如,对应装置1500,在一个实施例中,系统内存1503可包括任何合适的易失性存储器。
NVM/存储器1504可包括一个或多个有形的非暂时的计算机可读介质,用于存储数据和/或指令。例如,NVM/存储器1504可包括任何合适的非易失性存储装置,如一个或多个硬盘(hard disk device,HDD),一个或多个光盘(compact disk,CD),和/或一个或多个数字通用盘(digital versatile disk,DVD)。
NVM/存储器1504可包括存储资源,该存储资源物理上是该系统所安装的或者可以被访问的设备的一部分,但不一定是设备的一部分。例如,NVM/存储器1504可经由网络接口1506被网络访问。
系统内存1503以及NVM/存储器1504可分别包括临时的或持久的指令1510的副本。指令1510可包括当由处理器1502中的至少一个执行时导致装置1500实现图7、图8和图9描述的方法之一或组合的指令。各实施例中,指令1510或硬件、固件,和/或软件组件可另外地/可替换地被置于系统控制逻辑1501,网络接口1506和/或处理器1502。
网络接口1506可包括一个接收器来为装置1500提供无线接口来与一个或多个网络和/或任何合适的设备进行通信。网络接口1506可包括任何合适的硬件和/或固件。网络接口1506可包括多个天线来提供多输入多输出无线接口。在一个实施例中,网络接口1506可包括一个网络适配器、一个无线网络适配器、一个电话调制解调器,和/或无线调制解调器。
在一个实施例中,处理器1502中的至少一个可以与用于系统控制逻辑的一个或多个控制器的逻辑一起封装。在一个实施例中,处理器中的至少一个可以与用于系统控制逻辑的一个或多个控制器的逻辑一起封装以形成系统级封装。在一个实施例中,处理器中的至少一个可以与用于系统控制逻辑的一个或多个控制器的逻辑集成在相同的管芯上。在一个实施例中,处理器中的至少一个可以与用于系统控制逻辑的一个或多个控制器的逻辑集成在相同的管芯上以形成系统芯片。
装置1500可进一步包括输入/输出装置1505,。输入/输出装置1505可包括用户接口旨在使用户与装置1500进行交互,可包括外围组件接口,其被设计为使得外围组件能够与系统交互,和/或,可包括传感器,旨在确定环境条件和/或有关装置1500的位置信息。
本申请实施例还提供了一个或多个计算机可读介质,所述可读介质上存储有指令,所述指令被一个或多个处理器执行时,使得通信设备执行本申请实施例中第一服务器110实现的方法。
本申请实施例还提供了一个或多个计算机可读介质,所述可读介质上存储有指令,所述指令被一个或多个处理器执行时,使得通信设备执行本申请实施例中第二客户端设备实现的方法。