应用加载方法及系统的制作方法

文档序号:6443520阅读:199来源:国知局
专利名称:应用加载方法及系统的制作方法
应用加载方法及系统
技术领域
本发明涉及网络技术领域,特别涉及一种应用加载方法及系统。
背景技术
应用平台是一种能够聚合各种第三方软件提供商所开发的应用(俗称app),使得应用对用户的表现形式标准化、规范化的平台类服务软件。第三方应用提供商通过应用平台对外开放的应用程序接口(API)与应用平台对接,为应用平台提供相应的功能。应用平台则为应用程序提供基础的配套服务,如空间存储、平台调用、网络传输等。传统的应用平台在加载应用时,通常直接为应用直接分配一个进程,然后由该进程获取该应用的系统资源,并加载应用。或者应用平台为应用分配线程,然后由该线程获取该应用的系统资源,并加载应用。然而,传统技术中的应用平台的应用加载方法和系统对应用的加载缺乏统一的管理,且无法根据应用的类型或标识·选择相应的加载方式,使得应用的加载方法单一,从而导致了传统的应用加载方法和系统灵活性不足。

发明内容基于此,有必要提供一种提高应用加载的灵活性的应用加载方法。一种应用加载方法,所述方法包括以下步骤:获取应用加载请求;获取与所述应用加载请求对应的加载配置;根据所述应用加载请求通过预设的任务管理对象生成加载任务;通过所述预设的任务管理对象根据所述加载配置执行所述加载任务。优选的,所述加载配置中包含进程内加载和进程外加载方式;所述通过所述预设的任务管理对象根据所述加载配置执行所述加载任务的步骤具体为:根据所述加载配置选择加载方式,根据所述加载方式在进程内或进程外执行所述加载任务。优选的,所述通过所述预设的任务管理对象根据所述加载配置执行所述加载任务的步骤具体为:获取根据所述加载配置生成的代理对象,通过所述任务管理对象和代理对象执行所述加载任务。优选的,所述任务管理对象包括任务序列属性;所述根据所述应用加载请求通过预设的任务管理对象生成加载任务的步骤之后还包括:将所述加载任务添加到所述任务序列属性中;所述通过所述预设的任务管理对象根据所述与所述加载配置执行所述加载任务的步骤具体为:
根据所述加载配置,通过所述预设的任务管理对象,按照添加到所述任务序列属性的顺序同步执行所述加载任务。优选的,所述方法还包括: 获取所述任务管理对象中的任务序列属性,展示所述任务序列属性。此外,还有必要提供一种提高应用加载的灵活性的应用加载系统。—种应用加载系统,包括以下模块:请求获取模块,用于获取应用加载请求;配置获取模块,用于获取与所述应用加载请求对应的加载配置;任务管理模块,用于根据所述应用加载请求通过预设的任务管理对象生成加载任务;任务加载模块,用于通过所述预设的任务管理对象根据所述加载配置执行所述加载任务。 优选的,所述加载配置中包含进程内加载和进程外加载方式;所述任务加载模块还用于通过所述预设的任务管理对象根据所述加载配置选择加载方式,根据所述加载方式在进程内或进程外执行所述加载任务。优选的,所述任务加载模块还用于获取根据所述加载配置生成的代理对象,通过所述任务管理对象和代理对象执行所述加载任务。优选的,所述任务管理对象包括任务序列属性;所述任务管理模块还用于将所述加载任务添加到所述任务序列属性中;所述任务加载模块还用于根据所述加载配置,通过所述预设的任务管理对象,按照添加到所述任务序列属性的顺序同步执行所述加载任务。优选的,还包括任务展示模块,用于获取所述任务管理对象中的任务序列属性,并展示所述任务序列属性。上述应用加载方法和系统,在获取到加载请求之后,通过预设的任务管理对象生成加载任务,并根据与加载请求对应的预设的加载配置执行该加载任务,使得对应用的加载方式可以在根据应用的标识或类型通过配置进行预先定义,避免了在代码级对应用的加载方式进行限定,使得在修改应用的加载方式时只需要修改加载配置即可,从而提高了应用加载方法和系统的灵活性。

图1为一个实施例中应用加载方法的流程图;图2为一个实施例中应用加载系统的结构示意图;图3为另一个实施例中应用加载系统的结构示意图。
具体实施方式如图1所示,在一个实施例中,一种应用加载方法,包括以下步骤:步骤S102,获取应用加载请求。应用具有用于表示应用的应用标识。在获取应用加载请求之前,可在应用平台的显示界面上展示多个图标,每个图标对应应用的应用标识。通过获取用户点击或选中图标的操作,获取应用加载请求。应用加载请求中可包括应用标识和应用类型。步骤S104,获取与应用加载请求对应的加载配置。加载配置为预先定义,其中可记录与进程相关的具体加载方式。加载配置可以存储在应用的配置文件中,也可以以二进制流的形式与应用标识对应存储在数据库中。在一个实施例中,配置文件中包含应用标识和加载配置的映射关系,进一步的,可从应用加载请求中提取应用标识,根据应用标识查找与其对应的加载配置。步骤S106,根据应用加载请求通过预设的任务管理对象生成加载任务。在一个实施例中,可将应用加载请求作为函数调用参数传递给预设的任务管理对象中的请求处理函数,该请求处理函数可根据该函数调用参数生成加载任务,加载任务可以以对象或结构体的形式存在。生成的加载任务可包括任务标识和任务描述信息。任务描述信息可包括与任务对应的应用的应用名称、应用描述信息、任务加载时刻、任务运行状态(激活、挂起、终止等)。加载任务中可以加载函数的形式定义根据应用加载请求加载应用的加载逻辑。例如,可定义加载任务为对象task,为对象task定义加载方法load,加载函数load中则可定义如下逻辑:根据应用标识获取与其对应的应用的数据文件的存储位置,将该存储位置下的动态链接库文件注册,读取该存储位置下的应用的数据文件并加载到内存中。步骤S108,通过预设的任务管理对象根据加载配置执行加载任务。在一个实施例中,加载配置中包含进程内加载和进程外加载方式。可通过预设的任务管理对象根据加载配置选择加载方式,根据加载方式在进程内或进程外执行加载任务。若加载配置中的定义为在进程内加载,则表示应用与进程一一对应,同一个进程对应某应用的多个运行实例(例如,记事本应用可以打开多个窗口,具有多个运行实例);若加载配置中的定义为在进程外加载,则表示应用的运行实例与进程一一对应,一个应用对应多个进程(例如,需要使用socket进行通信的应用,由于socket端口与进程一一对应,因此一个应用的运行实例对应一个进程)。进一步的,加载配置中还可定义相同的应用类型(如web类的应用,均在web容器进程中被加载)对应一个进程。本实施例中,在根据加载配置执行加载任务时,可根据加载配置选择与加载配置中定义的加载逻辑对应的函数添加到加载任务中,然后再执行加载任务。例如,若读取的加载配置为进程内加载,则可在加载任务对象task中的load函数中注册dll加载(动态链接库方式加载)应用的函数;若读取的加载配置为进程外加载,则可在加载任务对象task中的load函数中注册exe加载(可执行程序方式加载)应用的函数。在一个实施例中,还可获取根据加载配置生成的代理对象,通过任务管理对象和代理对象执行加载任务。例如,可预先定义抽象类或接口 ModuleAgent,并将该接口或抽象类注册到加载任务的加载函数中。为多种加载配置定义多种具体的代理对象定义,并实例化为具体的代理对象,如dllAgent对象(对应进程内加载配置)和exeAgent对象(对应进程外加载配置)。在执行加载任务时,可通过任务管理对象调用加载任务对象的加载函数,然后加载函数通过已注册的ModuleAgent接口或抽象类动态绑定获取到的代理对象(如,若获取到的代理对象为dllAgent,则将其与加载函数中注册的ModuleAgent接口或抽象类绑定),然后调用代理对象的接口函数进行加载。
使用代理对象来加载应用,可以利用抽象类或接口的多态性,将对象绑定从编译器延迟到运行时,从而提高了应用加载的动态性。在一个实施例中,任务管理对象可包括任务序列属性。通过任务管理对象生成加载任务之后,可将加载任务添加到任务序列属性中。然后可根据加载配置,通过预设的任务管理对象,按照添加到任务序列属性的顺序同步执行加载任务。将加载任务以添加到任务序列属性的顺序同步执行可以保证应用的加载可按照生成加载任务的顺序执行。同步执行加载任务时,总是在加载完成一个任务后再继续加载下一个应用。若多个应用同时加载,则加载过程中可能会对相同的系统资源进行读取,易使得多个应用的加载过程出现死锁。因此按照顺序同步执行加载任务可以避免加载过程死锁,提闻了系统的稳定性。进一步的,还可获取任务管理对象中的任务序列属性,展示任务序列属性。在获取到任务序列属性后,将任务序列属性中的加载任务的任务标识和任务描述信息以及与任务对应的应用标识以列表的形式展示给用户,可以方便用户知晓当前已加载了哪些应用,以及任务运行情况如何。如图2所不,在一个实施例中,一种应用加载系统,包括请求获取模块102、配置获取模块104、任务管理模块106以及任务加载模块108,其中:请求获取模块102,用于获取应用加载请求。应用具有用于表示应用的应用标识。在获取应用加载请求之前,可在应用平台的显示界面上展示多个图标,每个图标对应应用的应用标识。请求获取模块102可用于通过获取用户点击或选中图标的操作,获取应用加载请求。应用加载请求中可包括应用标识和应用类型。配置获取模块104,用于获取与应用加载请求对应的加载配置。加载配置为预先定义,其中可记录与进程相关的具体加载方式。加载配置可以存储在应用的配置文件中,也可以以二进制流的形式与应用标识对应存储在数据库中。在一个实施例中,配置文件中包含应用标识和加载配置的映射关系,进一步的,配置获取模块104可用于从应用加载请求中提取应用标识,根据应用标识查找与其对应的加载配置。任务管理模块106,用于根据应用加载请求通过预设的任务管理对象生成加载任务。在一个实施例中,任务管理模块106可用于将应用加载请求作为函数调用参数传递给预设的任务管理对象中的请求处理函数,该请求处理函数可根据该函数调用参数生成加载任务,加载任务可以以对象或结构体的形式存在。生成的加载任务可包括任务标识和任务描述信息。任务描述信息可包括与任务对应的应用的应用名称、应用描述信息、任务加载时刻、任务运行状态(激活、挂起、终止等)。加载任务中可以加载函数的形式定义根据应用加载请求加载应用的加载逻辑。例如,可定义加载任务为对象task,为对象task定义加载方法load,加载函数load中则可定义如下逻辑:根据应用标识获取与其对应的应用的数据文件的存储位置,将该存储位置下的动态链接库文件注册,读取该存储位置下的应用的数据文件并加载到内存中。任务加载模块108,用于通过预设的任务管理对象根据加载配置执行加载任务。
在一个实施例中,加载配置中包含进程内加载和进程外加载方式。任务加载模块108可用于通过预设的任务管理对象根据加载配置选择加载方式,根据加载方式在进程内或进程外执行加载任务。若加载配置中的定义为在进程内加载,则表示应用与进程一一对应,同一个进程对应某应用的多个运行实例(例如,记事本应用可以打开多个窗口,具有多个运行实例);若加载配置中的定义为在进程外加载,则表示应用的运行实例与进程一一对应,一个应用对应多个进程(例如,需要使用socket进行通信的应用,由于socket端口与进程一一对应,因此一个应用的运行实例对应一个进程)。进一步的,加载配置中还可定义相同的应用类型(如web类的应用,均在web容器进程中被加载)对应一个进程。本实施例中,在根据加载配置执行加载任务时,可根据加载配置选择与加载配置中定义的加载逻辑对应的函数添加到加载任务中,然后再执行加载任务。例如,若读取的加载配置为进程内加载,则可在加载任务对象task中的load函数中注册dll加载(动态链接库方式加载)应用的函数;若读取的加载配置为进程外加载,则可在加载任务对象task中的load函数中注册exe加载(可执行程序方式加载)应用的函数。在一个实施例中,任务加载模块108还可用于获取根据加载配置生成的代理对象,通过任务管理对象和代理对象执行加载任务。例如,可预先定义抽象类或接口ModuleAgent,并将该接口或抽象类注册到加载任务的加载函数中。为多种加载配置定义多种具体的代理对象定义,并实例化为具体的代理对象,如dllAgent对象(对应进程内加载配置)和exeAgent对象(对应进程外加载配置)。在执行加载任务时,可通过任务管理对象调用加载任务对象的加载函数,然后加载函数通过已注册的ModuleAgent接口或抽象类动态绑定获取到的代理对象(如,若获取到的代理对象为dllAgent,则将其与加载函数中注册的ModuleAgent接口或抽象类绑定),然后调用代理对象的接口函数进行加载。使用代理对象来加载应用,可以利用抽象类或接口的多态性,将对象绑定从编译器延迟到运行时,从而提高了应用加载的动态性。在一个实施例中,任务管理对象可包括任务序列属性。任务管理模块106还可用于将加载任务添加到任务序列属性中,并根据加载配置,通过预设的任务管理对象,按照添加到任务序列属性的顺序同步执行加载任务。将加载任务以添加到任务序列属性的顺序同步执行可以保证应用的加载可按照生成加载任务的顺序执行。同步执行加载任务时,总是在加载完成一个任务后再继续加载下一个应用。若多个应用同时加载,则加载过程中可能会对相同的系统资源进行读取,易使得多个应用的加载过程出现死锁。因此按照顺序同步执行加载任务可以避免加载过程死锁,提闻了系统的稳定性。进一步的,如图3所示,应用加载系统还可包括任务展示模块110,用于获取任务管理对象中的任务序列属性,展示任务序列属性。任务展示模块110获取到任务序列属性后,可将任务序列属性中的加载任务的任务标识和任务描述信息以及与任务对应的应用标识以列表的形式展示给用户,可以方便用户知晓当前已加载了哪些应用,以及任务运行情况如何。上述应用加载方法和系统,在获取到加载请求之后,通过预设的任务管理对象生成加载任务,并根据与加载请求对应的预设的加载配置执行该加载任务,使得对应用的加载方式可以在根据应用的标识或类型通过配置进行预先定义,避免了在代码级对应用的加载方式进行限定,使得在修改应用的加载方式时只需要修改加载配置即可,从而提高了应用加载方法和系统的灵活性。以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。
权利要求
1.一种应用加载方法,所述方法包括以下步骤: 获取应用加载请求; 获取与所述应用加载请求对应的加载配置; 根据所述应用加载请求通过预设的任务管理对象生成加载任务; 通过所述预设的任务管理对象根据所述加载配置执行所述加载任务。
2.根据权利要求1所述的应用加载方法,其特征在于,所述加载配置中包含进程内加载和进程外加载方式;所述通过所述预设的任务管理对象根据所述加载配置执行所述加载任务的步骤具体为: 根据所述加载配置选择加载方式,根据所述加载方式在进程内或进程外执行所述加载任务。
3.根据权利要求 1所述的应用加载方法,其特征在于,所述通过所述预设的任务管理对象根据所述加载配置执行所述加载任务的步骤具体为: 获取根据所述加载配置生成的代理对象,通过所述任务管理对象和代理对象执行所述加载任务。
4.根据权利要求1至3中的任意一项所述的应用加载方法,其特征在于,所述任务管理对象包括任务序列属性; 所述根据所述应用加载请求通过预设的任务管理对象生成加载任务的步骤之后还包括: 将所述加载任务添加到所述任务序列属性中; 所述通过所述预设的任务管理对象根据所述与所述加载配置执行所述加载任务的步骤具体为: 根据所述加载配置,通过所述预设的任务管理对象,按照添加到所述任务序列属性的顺序同步执行所述加载任务。
5.根据权利要求4所述的应用加载方法,其特征在于,所述方法还包括: 获取所述任务管理对象中的任务序列属性,展示所述任务序列属性。
6.—种应用加载系统,其特征在于,包括以下模块: 请求获取模块,用于获取应用加载请求; 配置获取模块,用于获取与所述应用加载请求对应的加载配置; 任务管理模块,用于根据所述应用加载请求通过预设的任务管理对象生成加载任务; 任务加载模块,用于通过所述预设的任务管理对象根据所述加载配置执行所述加载任务。
7.根据权利要求6所述的应用加载系统,其特征在于,所述加载配置中包含进程内加载和进程外加载方式; 所述任务加载模块还用于通过所述预设的任务管理对象根据所述加载配置选择加载方式,根据所述加载方式在进程内或进程外执行所述加载任务。
8.根据权利要求6所述的应用加载系统,其特征在于,所述任务加载模块还用于获取根据所述加载配置生成的代理对象,通过所述任务管理对象和代理对象执行所述加载任务。
9.根据权利要求6至8中的任意一项所述的应用加载系统,其特征在于,所述任务管理对象包括任务序列属性; 所述任务管理模块还用于将所述加载任务添加到所述任务序列属性中; 所述任务加载模块还用于根据所述加载配置,通过所述预设的任务管理对象,按照添加到所述任务序列属性的顺序同步执行所述加载任务。
10.根据权利要求9所述的应用加载系统,其特征在于,还包括任务展示模块,用于获取所述任务管理对象中 的任务序列属性,并展示所述任务序列属性。
全文摘要
一种应用加载方法,所述方法包括以下步骤获取应用加载请求;获取与所述应用加载请求对应的加载配置;根据所述应用加载请求通过预设的任务管理对象生成加载任务;通过所述预设的任务管理对象根据所述加载配置执行所述加载任务。此外,还对应提供了一种应用加载系统。上述应用加载方法和系统可以有效地提高应用加载时的灵活性。
文档编号G06F9/445GK103186386SQ20111044475
公开日2013年7月3日 申请日期2011年12月27日 优先权日2011年12月27日
发明者邹代柱, 彭勇 申请人:腾讯科技(深圳)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1