《应用加载方法及系统.pdf》由会员分享,可在线阅读,更多相关《应用加载方法及系统.pdf(11页珍藏版)》请在专利查询网上搜索。
1、(10)申请公布号 CN 103186386 A (43)申请公布日 2013.07.03 CN 103186386 A *CN103186386A* (21)申请号 201110444755.7 (22)申请日 2011.12.27 G06F 9/445(2006.01) (71)申请人 腾讯科技 (深圳) 有限公司 地址 518044 广东省深圳市福田区振兴路赛 格科技园 2 栋东 403 室 (72)发明人 邹代柱 彭勇 (74)专利代理机构 广州华进联合专利商标代理 有限公司 44224 代理人 何平 曾旻辉 (54) 发明名称 应用加载方法及系统 (57) 摘要 一种应用加载方法, 。
2、所述方法包括以下步骤 : 获取应用加载请求 ; 获取与所述应用加载请求对 应的加载配置 ; 根据所述应用加载请求通过预设 的任务管理对象生成加载任务 ; 通过所述预设的 任务管理对象根据所述加载配置执行所述加载任 务。 此外, 还对应提供了一种应用加载系统。 上述 应用加载方法和系统可以有效地提高应用加载时 的灵活性。 (51)Int.Cl. 权利要求书 2 页 说明书 6 页 附图 2 页 (19)中华人民共和国国家知识产权局 (12)发明专利申请 权利要求书2页 说明书6页 附图2页 (10)申请公布号 CN 103186386 A CN 103186386 A *CN103186386A。
3、* 1/2 页 2 1. 一种应用加载方法, 所述方法包括以下步骤 : 获取应用加载请求 ; 获取与所述应用加载请求对应的加载配置 ; 根据所述应用加载请求通过预设的任务管理对象生成加载任务 ; 通过所述预设的任务管理对象根据所述加载配置执行所述加载任务。 2. 根据权利要求 1 所述的应用加载方法, 其特征在于, 所述加载配置中包含进程内加 载和进程外加载方式 ; 所述通过所述预设的任务管理对象根据所述加载配置执行所述加载 任务的步骤具体为 : 根据所述加载配置选择加载方式, 根据所述加载方式在进程内或进程外执行所述加载 任务。 3. 根据权利要求 1 所述的应用加载方法, 其特征在于, 所。
4、述通过所述预设的任务管理 对象根据所述加载配置执行所述加载任务的步骤具体为 : 获取根据所述加载配置生成的代理对象, 通过所述任务管理对象和代理对象执行所述 加载任务。 4.根据权利要求1至3中的任意一项所述的应用加载方法, 其特征在于, 所述任务管理 对象包括任务序列属性 ; 所述根据所述应用加载请求通过预设的任务管理对象生成加载任务的步骤之后还包 括 : 将所述加载任务添加到所述任务序列属性中 ; 所述通过所述预设的任务管理对象根据所述与所述加载配置执行所述加载任务的步 骤具体为 : 根据所述加载配置, 通过所述预设的任务管理对象, 按照添加到所述任务序列属性的 顺序同步执行所述加载任务。。
5、 5. 根据权利要求 4 所述的应用加载方法, 其特征在于, 所述方法还包括 : 获取所述任务管理对象中的任务序列属性, 展示所述任务序列属性。 6. 一种应用加载系统, 其特征在于, 包括以下模块 : 请求获取模块, 用于获取应用加载请求 ; 配置获取模块, 用于获取与所述应用加载请求对应的加载配置 ; 任务管理模块, 用于根据所述应用加载请求通过预设的任务管理对象生成加载任务 ; 任务加载模块, 用于通过所述预设的任务管理对象根据所述加载配置执行所述加载任 务。 7. 根据权利要求 6 所述的应用加载系统, 其特征在于, 所述加载配置中包含进程内加 载和进程外加载方式 ; 所述任务加载模块。
6、还用于通过所述预设的任务管理对象根据所述加载配置选择加载 方式, 根据所述加载方式在进程内或进程外执行所述加载任务。 8. 根据权利要求 6 所述的应用加载系统, 其特征在于, 所述任务加载模块还用于获取 根据所述加载配置生成的代理对象, 通过所述任务管理对象和代理对象执行所述加载任 务。 9.根据权利要求6至8中的任意一项所述的应用加载系统, 其特征在于, 所述任务管理 权 利 要 求 书 CN 103186386 A 2 2/2 页 3 对象包括任务序列属性 ; 所述任务管理模块还用于将所述加载任务添加到所述任务序列属性中 ; 所述任务加载模块还用于根据所述加载配置, 通过所述预设的任务管。
7、理对象, 按照添 加到所述任务序列属性的顺序同步执行所述加载任务。 10. 根据权利要求 9 所述的应用加载系统, 其特征在于, 还包括任务展示模块, 用于获 取所述任务管理对象中的任务序列属性, 并展示所述任务序列属性。 权 利 要 求 书 CN 103186386 A 3 1/6 页 4 应用加载方法及系统 【技术领域】 0001 本发明涉及网络技术领域, 特别涉及一种应用加载方法及系统。 【背景技术】 0002 应用平台是一种能够聚合各种第三方软件提供商所开发的应用 ( 俗称 app), 使得 应用对用户的表现形式标准化、 规范化的平台类服务软件。第三方应用提供商通过应用平 台对外开放的。
8、应用程序接口 (API) 与应用平台对接, 为应用平台提供相应的功能。应用平 台则为应用程序提供基础的配套服务, 如空间存储、 平台调用、 网络传输等。 0003 传统的应用平台在加载应用时, 通常直接为应用直接分配一个进程, 然后由该进 程获取该应用的系统资源, 并加载应用。 或者应用平台为应用分配线程, 然后由该线程获取 该应用的系统资源, 并加载应用。 0004 然而, 传统技术中的应用平台的应用加载方法和系统对应用的加载缺乏统一的管 理, 且无法根据应用的类型或标识选择相应的加载方式, 使得应用的加载方法单一, 从而导 致了传统的应用加载方法和系统灵活性不足。 【发明内容】 0005 。
9、基于此, 有必要提供一种提高应用加载的灵活性的应用加载方法。 0006 一种应用加载方法, 所述方法包括以下步骤 : 0007 获取应用加载请求 ; 0008 获取与所述应用加载请求对应的加载配置 ; 0009 根据所述应用加载请求通过预设的任务管理对象生成加载任务 ; 0010 通过所述预设的任务管理对象根据所述加载配置执行所述加载任务。 0011 优选的, 所述加载配置中包含进程内加载和进程外加载方式 ; 所述通过所述预设 的任务管理对象根据所述加载配置执行所述加载任务的步骤具体为 : 0012 根据所述加载配置选择加载方式, 根据所述加载方式在进程内或进程外执行所述 加载任务。 0013。
10、 优选的, 所述通过所述预设的任务管理对象根据所述加载配置执行所述加载任务 的步骤具体为 : 0014 获取根据所述加载配置生成的代理对象, 通过所述任务管理对象和代理对象执行 所述加载任务。 0015 优选的, 所述任务管理对象包括任务序列属性 ; 0016 所述根据所述应用加载请求通过预设的任务管理对象生成加载任务的步骤之后 还包括 : 0017 将所述加载任务添加到所述任务序列属性中 ; 0018 所述通过所述预设的任务管理对象根据所述与所述加载配置执行所述加载任务 的步骤具体为 : 说 明 书 CN 103186386 A 4 2/6 页 5 0019 根据所述加载配置, 通过所述预设。
11、的任务管理对象, 按照添加到所述任务序列属 性的顺序同步执行所述加载任务。 0020 优选的, 所述方法还包括 : 0021 获取所述任务管理对象中的任务序列属性, 展示所述任务序列属性。 0022 此外, 还有必要提供一种提高应用加载的灵活性的应用加载系统。 0023 一种应用加载系统, 包括以下模块 : 0024 请求获取模块, 用于获取应用加载请求 ; 0025 配置获取模块, 用于获取与所述应用加载请求对应的加载配置 ; 0026 任务管理模块, 用于根据所述应用加载请求通过预设的任务管理对象生成加载任 务 ; 0027 任务加载模块, 用于通过所述预设的任务管理对象根据所述加载配置执。
12、行所述加 载任务。 0028 优选的, 所述加载配置中包含进程内加载和进程外加载方式 ; 0029 所述任务加载模块还用于通过所述预设的任务管理对象根据所述加载配置选择 加载方式, 根据所述加载方式在进程内或进程外执行所述加载任务。 0030 优选的, 所述任务加载模块还用于获取根据所述加载配置生成的代理对象, 通过 所述任务管理对象和代理对象执行所述加载任务。 0031 优选的, 所述任务管理对象包括任务序列属性 ; 0032 所述任务管理模块还用于将所述加载任务添加到所述任务序列属性中 ; 0033 所述任务加载模块还用于根据所述加载配置, 通过所述预设的任务管理对象, 按 照添加到所述任。
13、务序列属性的顺序同步执行所述加载任务。 0034 优选的, 还包括任务展示模块, 用于获取所述任务管理对象中的任务序列属性, 并 展示所述任务序列属性。 0035 上述应用加载方法和系统, 在获取到加载请求之后, 通过预设的任务管理对象生 成加载任务, 并根据与加载请求对应的预设的加载配置执行该加载任务, 使得对应用的加 载方式可以在根据应用的标识或类型通过配置进行预先定义, 避免了在代码级对应用的加 载方式进行限定, 使得在修改应用的加载方式时只需要修改加载配置即可, 从而提高了应 用加载方法和系统的灵活性。 【附图说明】 0036 图 1 为一个实施例中应用加载方法的流程图 ; 0037 。
14、图 2 为一个实施例中应用加载系统的结构示意图 ; 0038 图 3 为另一个实施例中应用加载系统的结构示意图。 【具体实施方式】 0039 如图 1 所示, 在一个实施例中, 一种应用加载方法, 包括以下步骤 : 0040 步骤 S102, 获取应用加载请求。 0041 应用具有用于表示应用的应用标识。在获取应用加载请求之前, 可在应用平台的 显示界面上展示多个图标, 每个图标对应应用的应用标识。通过获取用户点击或选中图标 说 明 书 CN 103186386 A 5 3/6 页 6 的操作, 获取应用加载请求。应用加载请求中可包括应用标识和应用类型。 0042 步骤 S104, 获取与应用。
15、加载请求对应的加载配置。 0043 加载配置为预先定义, 其中可记录与进程相关的具体加载方式。加载配置可以存 储在应用的配置文件中, 也可以以二进制流的形式与应用标识对应存储在数据库中。在一 个实施例中, 配置文件中包含应用标识和加载配置的映射关系, 进一步的, 可从应用加载请 求中提取应用标识, 根据应用标识查找与其对应的加载配置。 0044 步骤 S106, 根据应用加载请求通过预设的任务管理对象生成加载任务。 0045 在一个实施例中, 可将应用加载请求作为函数调用参数传递给预设的任务管理对 象中的请求处理函数, 该请求处理函数可根据该函数调用参数生成加载任务, 加载任务可 以以对象或结。
16、构体的形式存在。生成的加载任务可包括任务标识和任务描述信息。任务描 述信息可包括与任务对应的应用的应用名称、 应用描述信息、 任务加载时刻、 任务运行状态 ( 激活、 挂起、 终止等 )。加载任务中可以加载函数的形式定义根据应用加载请求加载应用 的加载逻辑。 0046 例如, 可定义加载任务为对象 task, 为对象 task 定义加载方法 load, 加载函数 load 中则可定义如下逻辑 : 根据应用标识获取与其对应的应用的数据文件的存储位置, 将 该存储位置下的动态链接库文件注册, 读取该存储位置下的应用的数据文件并加载到内存 中。 0047 步骤 S108, 通过预设的任务管理对象根据。
17、加载配置执行加载任务。 0048 在一个实施例中, 加载配置中包含进程内加载和进程外加载方式。可通过预设的 任务管理对象根据加载配置选择加载方式, 根据加载方式在进程内或进程外执行加载任 务。 若加载配置中的定义为在进程内加载, 则表示应用与进程一一对应, 同一个进程对应某 应用的多个运行实例 ( 例如, 记事本应用可以打开多个窗口, 具有多个运行实例 ) ; 若加载 配置中的定义为在进程外加载, 则表示应用的运行实例与进程一一对应, 一个应用对应多 个进程 ( 例如, 需要使用 socket 进行通信的应用, 由于 socket 端口与进程一一对应, 因此 一个应用的运行实例对应一个进程)。。
18、 进一步的, 加载配置中还可定义相同的应用类型(如 web 类的应用, 均在 web 容器进程中被加载 ) 对应一个进程。 0049 本实施例中, 在根据加载配置执行加载任务时, 可根据加载配置选择与加载配置 中定义的加载逻辑对应的函数添加到加载任务中, 然后再执行加载任务。 例如, 若读取的加 载配置为进程内加载, 则可在加载任务对象 task 中的 load 函数中注册 dll 加载 ( 动态链 接库方式加载 ) 应用的函数 ; 若读取的加载配置为进程外加载, 则可在加载任务对象 task 中的 load 函数中注册 exe 加载 ( 可执行程序方式加载 ) 应用的函数。 0050 在一个。
19、实施例中, 还可获取根据加载配置生成的代理对象, 通过任务管理对象和 代理对象执行加载任务。例如, 可预先定义抽象类或接口 ModuleAgent, 并将该接口或抽象 类注册到加载任务的加载函数中。为多种加载配置定义多种具体的代理对象定义, 并实例 化为具体的代理对象, 如dllAgent对象(对应进程内加载配置)和exeAgent对象(对应进 程外加载配置 )。在执行加载任务时, 可通过任务管理对象调用加载任务对象的加载函数, 然后加载函数通过已注册的 ModuleAgent 接口或抽象类动态绑定获取到的代理对象 ( 如, 若获取到的代理对象为 dllAgent, 则将其与加载函数中注册的 。
20、ModuleAgent 接口或抽象类 绑定 ), 然后调用代理对象的接口函数进行加载。 说 明 书 CN 103186386 A 6 4/6 页 7 0051 使用代理对象来加载应用, 可以利用抽象类或接口的多态性, 将对象绑定从编译 器延迟到运行时, 从而提高了应用加载的动态性。 0052 在一个实施例中, 任务管理对象可包括任务序列属性。通过任务管理对象生成加 载任务之后, 可将加载任务添加到任务序列属性中。 然后可根据加载配置, 通过预设的任务 管理对象, 按照添加到任务序列属性的顺序同步执行加载任务。 0053 将加载任务以添加到任务序列属性的顺序同步执行可以保证应用的加载可按照 生成。
21、加载任务的顺序执行。同步执行加载任务时, 总是在加载完成一个任务后再继续加载 下一个应用。 若多个应用同时加载, 则加载过程中可能会对相同的系统资源进行读取, 易使 得多个应用的加载过程出现死锁。因此按照顺序同步执行加载任务可以避免加载过程死 锁, 提高了系统的稳定性。 0054 进一步的, 还可获取任务管理对象中的任务序列属性, 展示任务序列属性。 在获取 到任务序列属性后, 将任务序列属性中的加载任务的任务标识和任务描述信息以及与任务 对应的应用标识以列表的形式展示给用户, 可以方便用户知晓当前已加载了哪些应用, 以 及任务运行情况如何。 0055 如图 2 所示, 在一个实施例中, 一种。
22、应用加载系统, 包括请求获取模块 102、 配置获 取模块 104、 任务管理模块 106 以及任务加载模块 108, 其中 : 0056 请求获取模块 102, 用于获取应用加载请求。 0057 应用具有用于表示应用的应用标识。在获取应用加载请求之前, 可在应用平台的 显示界面上展示多个图标, 每个图标对应应用的应用标识。请求获取模块 102 可用于通过 获取用户点击或选中图标的操作, 获取应用加载请求。应用加载请求中可包括应用标识和 应用类型。 0058 配置获取模块 104, 用于获取与应用加载请求对应的加载配置。 0059 加载配置为预先定义, 其中可记录与进程相关的具体加载方式。加载。
23、配置可以存 储在应用的配置文件中, 也可以以二进制流的形式与应用标识对应存储在数据库中。在一 个实施例中, 配置文件中包含应用标识和加载配置的映射关系, 进一步的, 配置获取模块 104 可用于从应用加载请求中提取应用标识, 根据应用标识查找与其对应的加载配置。 0060 任务管理模块 106, 用于根据应用加载请求通过预设的任务管理对象生成加载任 务。 0061 在一个实施例中, 任务管理模块 106 可用于将应用加载请求作为函数调用参数传 递给预设的任务管理对象中的请求处理函数, 该请求处理函数可根据该函数调用参数生成 加载任务, 加载任务可以以对象或结构体的形式存在。生成的加载任务可包括。
24、任务标识和 任务描述信息。 任务描述信息可包括与任务对应的应用的应用名称、 应用描述信息、 任务加 载时刻、 任务运行状态(激活、 挂起、 终止等)。 加载任务中可以加载函数的形式定义根据应 用加载请求加载应用的加载逻辑。 0062 例如, 可定义加载任务为对象 task, 为对象 task 定义加载方法 load, 加载函数 load 中则可定义如下逻辑 : 根据应用标识获取与其对应的应用的数据文件的存储位置, 将 该存储位置下的动态链接库文件注册, 读取该存储位置下的应用的数据文件并加载到内存 中。 0063 任务加载模块 108, 用于通过预设的任务管理对象根据加载配置执行加载任务。 说。
25、 明 书 CN 103186386 A 7 5/6 页 8 0064 在一个实施例中, 加载配置中包含进程内加载和进程外加载方式。任务加载模块 108 可用于通过预设的任务管理对象根据加载配置选择加载方式, 根据加载方式在进程内 或进程外执行加载任务。若加载配置中的定义为在进程内加载, 则表示应用与进程一一对 应, 同一个进程对应某应用的多个运行实例 ( 例如, 记事本应用可以打开多个窗口, 具有多 个运行实例 ) ; 若加载配置中的定义为在进程外加载, 则表示应用的运行实例与进程一一 对应, 一个应用对应多个进程 ( 例如, 需要使用 socket 进行通信的应用, 由于 socket 端口。
26、 与进程一一对应, 因此一个应用的运行实例对应一个进程 )。进一步的, 加载配置中还可定 义相同的应用类型 ( 如 web 类的应用, 均在 web 容器进程中被加载 ) 对应一个进程。 0065 本实施例中, 在根据加载配置执行加载任务时, 可根据加载配置选择与加载配置 中定义的加载逻辑对应的函数添加到加载任务中, 然后再执行加载任务。 例如, 若读取的加 载配置为进程内加载, 则可在加载任务对象 task 中的 load 函数中注册 dll 加载 ( 动态链 接库方式加载 ) 应用的函数 ; 若读取的加载配置为进程外加载, 则可在加载任务对象 task 中的 load 函数中注册 exe 。
27、加载 ( 可执行程序方式加载 ) 应用的函数。 0066 在一个实施例中, 任务加载模块 108 还可用于获取根据加载配置生成的代理 对象, 通过任务管理对象和代理对象执行加载任务。例如, 可预先定义抽象类或接口 ModuleAgent, 并将该接口或抽象类注册到加载任务的加载函数中。 为多种加载配置定义多 种具体的代理对象定义, 并实例化为具体的代理对象, 如 dllAgent 对象 ( 对应进程内加载 配置 ) 和 exeAgent 对象 ( 对应进程外加载配置 )。在执行加载任务时, 可通过任务管理对 象调用加载任务对象的加载函数, 然后加载函数通过已注册的 ModuleAgent 接口。
28、或抽象类 动态绑定获取到的代理对象 ( 如, 若获取到的代理对象为 dllAgent, 则将其与加载函数中 注册的 ModuleAgent 接口或抽象类绑定 ), 然后调用代理对象的接口函数进行加载。 0067 使用代理对象来加载应用, 可以利用抽象类或接口的多态性, 将对象绑定从编译 器延迟到运行时, 从而提高了应用加载的动态性。 0068 在一个实施例中, 任务管理对象可包括任务序列属性。任务管理模块 106 还可用 于将加载任务添加到任务序列属性中, 并根据加载配置, 通过预设的任务管理对象, 按照添 加到任务序列属性的顺序同步执行加载任务。 0069 将加载任务以添加到任务序列属性的顺。
29、序同步执行可以保证应用的加载可按照 生成加载任务的顺序执行。同步执行加载任务时, 总是在加载完成一个任务后再继续加载 下一个应用。 若多个应用同时加载, 则加载过程中可能会对相同的系统资源进行读取, 易使 得多个应用的加载过程出现死锁。因此按照顺序同步执行加载任务可以避免加载过程死 锁, 提高了系统的稳定性。 0070 进一步的, 如图 3 所示, 应用加载系统还可包括任务展示模块 110, 用于获取任务 管理对象中的任务序列属性, 展示任务序列属性。任务展示模块 110 获取到任务序列属性 后, 可将任务序列属性中的加载任务的任务标识和任务描述信息以及与任务对应的应用标 识以列表的形式展示给。
30、用户, 可以方便用户知晓当前已加载了哪些应用, 以及任务运行情 况如何。 0071 上述应用加载方法和系统, 在获取到加载请求之后, 通过预设的任务管理对象生 成加载任务, 并根据与加载请求对应的预设的加载配置执行该加载任务, 使得对应用的加 载方式可以在根据应用的标识或类型通过配置进行预先定义, 避免了在代码级对应用的加 说 明 书 CN 103186386 A 8 6/6 页 9 载方式进行限定, 使得在修改应用的加载方式时只需要修改加载配置即可, 从而提高了应 用加载方法和系统的灵活性。 0072 以上所述实施例仅表达了本发明的几种实施方式, 其描述较为具体和详细, 但并 不能因此而理解为对本发明专利范围的限制。应当指出的是, 对于本领域的普通技术人员 来说, 在不脱离本发明构思的前提下, 还可以做出若干变形和改进, 这些都属于本发明的保 护范围。因此, 本发明专利的保护范围应以所附权利要求为准。 说 明 书 CN 103186386 A 9 1/2 页 10 图 1 图 2 说 明 书 附 图 CN 103186386 A 10 2/2 页 11 图 3 说 明 书 附 图 CN 103186386 A 11 。