Login| Sign Up| Help| Contact|

Patent Searching and Data


Title:
METHOD AND DEVICE FOR RUNNING REMOTE APPLICATION PROGRAM
Document Type and Number:
WIPO Patent Application WO/2015/062339
Kind Code:
A1
Abstract:
Disclosed are a method and device for running a remote application program. The method comprises: acquiring, by a client, an application program from a server, and running the application program on the client; detecting, by the client, whether the application program triggers an application program interface (API) invocation request; and if the application program triggers the API invocation request, according to a preset invocation policy, determining, by the client, to execute an API invocation by the client or the server. The method and device for running a remote application program of the present invention can not only use a device resource of a client to execute some API invocations, thereby increasing the remote running efficiency of the application program, and improving the user experience; but can also save the latest data obtained according to the running result of the application program to a server, thereby guaranteeing the security of data access, thus enabling the application program remotely running to achieve the same effect of locally running on the server.

Inventors:
CHEN PU (CN)
WEI KAIZHI (CN)
Application Number:
PCT/CN2014/084492
Publication Date:
May 07, 2015
Filing Date:
August 15, 2014
Export Citation:
Click for automatic bibliography generation   Help
Assignee:
HUAWEI TECH CO LTD (CN)
International Classes:
G06F17/30; G06F9/46
Foreign References:
CN102662741A2012-09-12
CN101534196A2009-09-16
CN103023906A2013-04-03
US20100064299A12010-03-11
Other References:
See also references of EP 2993583A4
Download PDF:
Claims:
权 利 要 求 书

1、 一种远程应用程序运行的方法, 其特征在于, 包括:

客户端从服务器获取应用程序, 并在所述客户端上运行所述应用程序; 所述客户端检测所述应用程序是否触发应用程序接口 API调用请求; 若所述应用程序触发所述 API调用请求,则所述客户端根据预先设定的调 用策略, 确定由所述客户端或所述服务器执行所述 API调用。

2、 根据权利要求 1所述的方法, 其特征在于, 所述客户端从服务器获取 应用程序, 并在所述客户端上运行所述应用程序, 包括:

所述客户端向所述服务器发送对所述应用程序的目标程序的获取请求, 所述获取请求用于指示所述服务器返回所述应用程序的目标程序;

所述客户端从所述服务器接收所述目标程序;

所述客户端执行所述目标程序, 以在所述客户端上运行所述应用程序。

3、 根据权利要求 1所述的方法, 其特征在于, 所述客户端根据预先设定 的调用策略, 确定由所述客户端或者所述服务器执行所述 API调用, 包括: 所述客户端判定所述 API调用是否需要利用所述客户端的设备资源执行; 若所述 API调用需要利用所述客户端的设备资源执行,则确定由所述客户 端执行所述 API调用;

若所述 API调用不需要利用所述客户端的设备资源执行,则确定由所述服 务器执行所述 API调用。

4、 根据权利要求 3所述的方法, 其特征在于, 所述调用策略包括: 若所述 API调用为请求向所述服务器的注册表中写入数据、或者请求将所 述应用程序运行结束后得到的数据保存到所述服务器、 或者请求利用所述服 务器的网络资源访问网络,则确定所述 API调用不需要利用所述客户端的设备 资源执行。

5、 根据权利要求 3所述的方法, 其特征在于, 在确定由所述客户端执行 所述 API调用之后, 包括:

所述客户端根据所述 API调用请求, 生成本地 API调用请求;

所述客户端根据所述本地 API调用请求,调用所述客户端的设备资源,执 行所述本地 API调用, 以生成所述本地 API调用的执行结果;

所述客户端向所述应用程序发送所述本地 API调用的执行结果。

6、 根据权利要求 3所述的方法, 其特征在于, 在确定由所述服务器执行 所述 API调用之后, 包括:

所述客户端根据所述 API调用请求, 生成远程 API调用请求;

所述客户端向所述服务器发送所述远程 API调用请求, 所述远程 API调用 请求用于指示所述服务器执行所述远程 API调用, 并返回所述远程 API调用的 执行结果;

所述客户端从所述服务器接收所述远程 API调用的执行结果;

所述客户端向所述应用程序发送所述远程 API调用的执行结果。

7、 根据权利要求 5所述的方法, 其特征在于, 所述客户端向所述服务器 发送所述远程 API调用请求, 包括:

所述客户端将所述远程 API调用请求序列化, 以生成所述远程 API调用的 请求数据, 所述请求数据携带有所述远程 API调用请求序列化后的信息; 所述客户端对所述请求数据加密;

所述客户端向所述服务器发送加密后的所述请求数据。

8、 根据权利要求 5所述的方法, 其特征在于, 所述客户端从所述服务器 接收所述 API调用的执行结果, 包括:

所述客户端从所述服务器接收所述 API调用的响应数据,所述响应数据携 带有所述远程 API调用的执行结果序列化后的信息;

若所述响应数据已加密, 则所述客户端对所述响应数据解密;

所述客户端将解密后的所述响应数据反序列化,以得到所述远程 API调用 的执行结果。

9、 根据权利要求 1至 7中任一项所述的方法, 其特征在于, 所述客户端检 测所述应用程序是否触发 API调用请求的方式, 具体包括钩子 HOOK方式、过 滤驱动方式和替换系统中断表方式中的任意一种。

10、 一种远程应用程序运行的方法, 其特征在于, 包括:

服务器从客户端接收远程 API调用请求, 所述远程 API调用请求携带有所 述客户端请求所述服务器执行所述 API调用的信息;

所述服务器根据所述远程 API调用请求,调用所述服务器的设备资源,执 行所述远程 API调用, 以生成所述远程 API调用的执行结果;

所述服务器向所述客户端发送所述远程 API调用的执行结果。

11、 根据权利要求 10所述的方法, 其特征在于, 在所述服务器从客户端 接收远程 API调用请求之前, 包括:

所述服务器从所述客户端接收对所述应用程序的目标程序的获取请求, 所述获取请求携带有请求所述服务器返回所述应用程序的目标程序的信息; 所述服务器根据所述获取请求, 向所述客户端发送所述应用程序的目标 程序。

12、 根据权利要求 10所述的方法, 其特征在于, 所述服务器接收所述客 户端的远程 API调用请求, 包括:

所述服务器从所述客户端接收所述远程 API调用的请求数据,所述请求数 据携带有所述远程 API调用请求序列化后的信息;

若所述请求数据已加密, 则所述服务器对所述请求数据解密;

所述服务器将解密后的所述请求数据反序列化,以得到所述远程 API调用 请求。

13、 根据权利要求 12所述的方法, 其特征在于, 所述服务器向所述客户 端发送所述执行结果, 包括: 所述服务器将所述远程 API调用的执行结果序列化, 以生成所述远程 API 调用的响应数据,所述响应数据携带有所述远程 API调用的执行结果序列化后 的信息;

所述服务器对所述响应数据加密;

所述服务器向所述客户端发送加密后的所述响应数据。

14、 一种远程应用程序运行的装置, 其特征在于, 包括:

运行单元, 用于从服务器获取应用程序, 并在所述客户端上运行所述应 用程序;

检测单元, 与所述运行单元连接, 用于检测所述应用程序是否触发应用 程序接口 API调用请求;

处理单元, 与所述检测单元连接,用于若所述应用程序触发所述 API调用 请求, 则根据预先设定的调用策略, 确定由所述客户端或所述服务器执行所 述 API调用。

15、 根据权利要求 14所述的装置, 其特征在于, 所述运行单元包括获取 模块和运行模块,

所述获取模块用于, 向所述服务器发送对所述应用程序的目标程序的获 取请求, 所述获取请求用于指示所述服务器返回所述应用程序的目标程序; 所述获取模块还用于, 从所述服务器接收所述目标程序;

所述运行模块, 与所述获取模块连接, 用于执行所述目标程序, 以在所 述客户端上运行所述应用程序。

16、 根据权利要求 14所述的装置, 其特征在于, 所述处理单元包括判定 模块, 所述判定模块与所述检测单元连接, 用于,

判定所述 API调用是否需要利用所述客户端的设备资源执行;

若所述 API调用需要利用所述客户端的设备资源执行,则确定由所述客户 端执行所述 API调用; 若所述 API调用不需要利用所述客户端的设备资源执行,则确定由所述服 务器执行所述 API调用。

17、 根据权利要求 16所述的方法, 其特征在于, 所述调用策略包括: 若所述 API调用为请求向所述服务器的注册表中写入数据、或者请求将所 述应用程序运行结束后得到的数据保存到所述服务器、 或者请求利用所述服 务器的网络资源访问网络,则确定所述 API调用不需要利用所述客户端的设备 资源执行。

18、 根据权利要求 16所述的装置, 其特征在于, 所述处理单元还包括本 地执行模块, 所述本地执行模块与所述判定模块连接, 在确定由所述客户端 执行所述 API调用之后, 用于,

根据所述 API调用请求, 生成本地 API调用请求;

根据所述本地 API调用请求,调用所述客户端的设备资源,执行所述本地 API调用, 以生成所述本地 API调用的执行结果;

向所述应用程序发送所述本地 API调用的执行结果。

19、 根据权利要求 16所述的装置, 其特征在于, 所述处理单元还包括远 程执行模块, 所述远程执行模块与所述判定模块连接, 在确定由所述服务器 执行所述 API调用之后, 用于,

根据所述 API调用请求, 生成远程 API调用请求;

向所述服务器发送所述远程 API调用请求, 所述远程 API调用请求用于指 示所述服务器执行所述远程 API调用, 并返回所述远程 API调用的执行结果; 从所述服务器接收所述远程 API调用的执行结果;

向所述应用程序发送所述远程 API调用的执行结果。

20、 根据权利要求 19所述的装置, 其特征在于, 所述远程执行模块, 还 用于,

将所述远程 API调用请求序列化, 以生成所述远程 API调用的请求数据, 所述请求数据携带有所述远程 API调用请求序列化后的信息;

对所述请求数据加密;

向所述服务器发送加密后的所述请求数据。

21、 根据权利要求 19所述的装置, 其特征在于, 所述远程执行模块, 还 用于,

从所述服务器接收所述 API调用的响应数据,所述响应数据携带有所述远 程 API调用的执行结果序列化后的信息;

若所述响应数据已加密, 则对所述响应数据解密;

将解密后的所述响应数据反序列化, 以得到所述远程 API调用的执行结 果。

22、 根据权利要求 14至 21中任一项所述的装置, 其特征在于, 所述检测 单元检测所述应用程序是否触发 API调用请求的方式,具体包括钩子 HOOK方 式、 过滤驱动方式和替换系统中断表方式中的任意一种。

23、 一种远程应用程序运行的装置, 其特征在于, 包括:

接收单元, 用于从客户端接收远程 API调用请求, 所述远程 API调用请求 携带有所述客户端请求所述服务器执行所述 API调用的信息;

执行单元, 与所述接收单元连接, 用于根据所述远程 API调用请求, 调用 所述服务器的设备资源, 执行所述远程 API调用, 以生成所述远程 API调用的 执行结果;

发送单元, 与所述接收单元和执行单元连接, 用于向所述客户端发送所 述远程 API调用的执行结果。

24、 根据权利要求 23所述的装置, 其特征在于,

所述接收单元还用于, 从所述客户端接收对所述应用程序的目标程序的 获取请求, 所述获取请求携带有请求所述服务器返回所述应用程序的目标程 序的信息; 所述发送单元还用于, 根据所述获取请求, 向所述客户端发送所述应用 程序的目标程序。

25、 根据权利要求 22所述的装置, 其特征在于, 所述接收单元还用于, 从所述客户端接收所述远程 API调用的请求数据,所述请求数据携带有所述远 程 API调用请求序列化后的信息; 若所述请求数据已加密, 则对所述请求数据解密;

将解密后的所述请求数据反序列化, 以得到所述远程 API调用请求。

26、 根据权利要求 25所述的装置, 其特征在于, 所述发送单元还用于, 将所述远程 API调用的执行结果序列化, 以生成所述远程 API调用的响应 数据, 所述响应数据携带有所述远程 API调用的执行结果序列化后的信息; 对所述响应数据加密;

向所述客户端发送加密后的所述响应数据。

Description:
远程应用程序运行的方法和装置 技术领域

本发明涉及计算机技术领域, 尤其涉及一种远程应用程序运行的方法和 装置。 背景技术

远程桌面 (又称为虚拟桌面) 如思杰应用虚拟化、 微软的 APP-V等常用 于实现应用程序的远程运行。 在虚拟桌面场景下至少存在一台服务器和一台 客户端。 当用户在客户端上通过远程登录应用程序的客 户端软件, 例如 Windows系统中的远程登录应用程序 (mstsc.exe), 经由通信网络如 IP网络, 远程登录到远程设备如服务器之后, 这种方式能够将客户端的屏幕上显示的 内容传送到服务器的屏幕上进行显示, 还可以支持客户端和服务器之间的声 音传送或可插拔硬件映射等, 并且能够在结束远程运行后, 将根据应用程序 远程运行的结果得到的最新数据保存到服务器 上。

通常, 无盘工作站可以用于实现基于远程桌面的应用 程序的远程运行。 通过在客户端不挂载硬盘, 而使用 PXE (preboot execute environment, 远程网 络启动) 技术, 将服务器上的磁盘映像文件映射到客户端上, 并生成挂载到 客户端的虚拟硬盘。 用户可以在虚拟硬盘上运行操作系统和各种应 用程序, 通过网络访问服务器上的硬件资源和在服务器 上读写数据。

此外, RPC (Remote Procedure Call Protocol, 远程过程调用协议) 技术 也可以用于实现基于远程桌面的应用程序的远 程运行。 通过在客户端上安装 应用程序及其运行所需的数据, 客户端通过接口的远程调用, 从远程设备的 应用程序上直接请求服务, 而不需要了解底层网络技术的协议。 但是, 这种 方式需要应用程序在客户端和服务器均能够从 软件代码层次上适配网络协 议, 因此现有的应用程序不能全部平滑的支持远程 启动和运行, 兼容性较差。 综上所述, 所述基于远程桌面技术的应用程序远程运行的 方法均需要在 应用程序的远程运行过程中, 在客户端和服务器间传输数据, 对于某些执行 复杂的图形处理或数值计算的应用程序, 例如高清制图和游戏等, 要传输的 数据量较大, 不但占用较大的网络带宽, 降低应用程序远程运行的运行效率, 而且数据传输和压缩、 编解码过程中可能导致失真, 从而使远程运行的应用 程序无法达到在服务器上本地运行相同的效果 , 导致用户体验差。 此外, 上 述基于远程桌面技术实现应用程序的远程运行 , 其网络部署方式和技术实现 过程均比较复杂。 发明内容

技术问题

有鉴于此, 本发明要解决的技术问题是, 如何使远程运行的应用程序能 达到与在服务器上本地运行相同的效果。

解决方案

为了解决上述技术问题, 在第一方面, 本发明提出了一种远程应用程序 运行的方法, 包括: 客户端从服务器获取应用程序, 并在所述客户端上运行 所述应用程序;所述客户端检测所述应用程序 是否触发应用程序接口 API调用 请求; 若所述应用程序触发所述 API调用请求,则所述客户端根据预先设定的 调用策略, 确定由所述客户端或所述服务器执行所述 API调用。

结合第一方面, 在第一种可能的实现方式中, 所述客户端从服务器获取 应用程序, 并在所述客户端上运行所述应用程序, 包括: 所述客户端向所述 服务器发送对所述应用程序的目标程序的获取 请求, 所述获取请求用于指示 所述服务器返回所述应用程序的目标程序; 所述客户端从所述服务器接收所 述目标程序; 所述客户端执行所述目标程序, 以在所述客户端上运行所述应 用程序。

结合第一方面, 在第二种可能的实现方式中, 所述客户端根据预先设定 的调用策略, 确定由所述客户端或者所述服务器执行所述 API调用, 包括: 所 述客户端判定所述 API调用是否需要利用所述客户端的设备资源执 行;若所述 API调用需要利用所述客户端的设备资源执行, 则确定由所述客户端执行所述

API调用; 若所述 API调用不需要利用所述客户端的设备资源执行 , 则确定由 所述服务器执行所述 API调用。

结合第一方面的第二种可能的实现方式, 在第三种可能的实现方式中, 所述调用策略包括: 若所述 API调用为请求向所述服务器的注册表中写入数 据、 或者请求将所述应用程序运行结束后得到的数 据保存到所述服务器、 或 者请求利用所述服务器的网络资源访问网络, 则确定所述 API调用不需要利用 所述客户端的设备资源执行。

结合第一方面的第二种可能的实现方式, 在第四种可能的实现方式中, 在确定由所述客户端执行所述 API调用之后, 包括: 所述客户端根据所述 API 调用请求, 生成本地 API调用请求; 所述客户端根据所述本地 API调用请求, 调用所述客户端的设备资源, 执行所述本地 API调用, 以生成所述本地 API调 用的执行结果; 所述客户端向所述应用程序发送所述本地 API调用的执行结 果。

结合第一方面的第二种可能的实现方式, 在第五种可能的实现方式中, 在确定由所述服务器执行所述 API调用之后, 包括: 所述客户端根据所述 API 调用请求, 生成远程 API调用请求; 所述客户端向所述服务器发送所述远程 API调用请求, 所述远程 API调用请求用于指示所述服务器执行所述远程 API 调用, 并返回所述远程 API调用的执行结果; 所述客户端从所述服务器接收所 述远程 API调用的执行结果; 所述客户端向所述应用程序发送所述远程 API调 用的执行结果。 结合第一方面的第五种可能的实现方式, 在第六种可能的实现方式中, 所述客户端向所述服务器发送所述远程 API调用请求,包括:所述客户端将所 述远程 API调用请求序列化, 以生成所述远程 API调用的请求数据, 所述请求 数据携带有所述远程 API调用请求序列化后的信息;所述客户端对所 述请求数 据加密; 所述客户端向所述服务器发送加密后的所述请 求数据。

结合第一方面的第五种可能的实现方式, 在第七种可能的实现方式中, 所述客户端从所述服务器接收所述 API调用的执行结果,包括:所述客户端从 所述服务器接收所述 API调用的响应数据, 所述响应数据携带有所述远程 API 调用的执行结果序列化后的信息; 若所述响应数据已加密, 则所述客户端对 所述响应数据解密; 所述客户端将解密后的所述响应数据反序列化 , 以得到 所述远程 API调用的执行结果。

结合第一方面的上述可能的实现方式, 在第八种可能的实现方式中, 所 述客户端检测所述应用程序是否触发 API调用请求的方式, 具体包括钩子 HOOK方式、 过滤驱动方式和替换系统中断表方式中的任意 一种。

为了解决上述技术问题, 在第二方面, 本发明提出了一种远程应用程序 运行的方法, 包括: 服务器从客户端接收远程 API调用请求, 所述远程 API调 用请求携带有所述客户端请求所述服务器执行 所述 API调用的信息;所述服务 器根据所述远程 API调用请求, 调用所述服务器的设备资源, 执行所述远程 API调用, 以生成所述远程 API调用的执行结果; 所述服务器向所述客户端发 送所述远程 API调用的执行结果。

结合第一.方面, 在第一种可能的实现方式中, 在所述服务器从客户端接 收远程 API调用请求之前,包括:所述服务器从所述客 户端接收对所述应用程 序的目标程序的获取请求, 所述获取请求携带有请求所述服务器返回所述 应 用程序的目标程序的信息; 所述服务器根据所述获取请求, 向所述客户端发 送所述应用程序的目标程序。 结合第二方面, 在第二种可能的实现方式中, 所述服务器接收所述客户 端的远程 API调用请求, 包括: 所述服务器从所述客户端接收所述远程 API调 用的请求数据, 所述请求数据携带有所述远程 API调用请求序列化后的信息; 若所述请求数据已加密, 所述服务器对所述请求数据解密; 所述服务器将解 密后的所述请求数据反序列化, 以得到所述远程 API调用请求。

结合第二方面的第二种可能的实现方式, 在第三种可能的实现方式中, 所述服务器向所述客户端发送所述执行结果, 包括: 所述服务器将所述远程 API调用的执行结果序列化, 以生成所述远程 API调用的响应数据, 所述响应 数据携带有所述远程 API调用的执行结果序列化后的信息;所述服务 器对所述 响应数据加密; 所述服务器向所述客户端发送加密后的所述响 应数据。

为了解决上述技术问题, 在第三方面, 本发明提出了一种远程应用程序 运行的装置, 包括: 运行单元, 用于从服务器获取应用程序, 并在所述客户 端上运行所述应用程序; 检测单元, 与所述运行单元连接, 用于检测所述应 用程序是否触发应用程序接口 API调用请求;处理单元,与所述检测单元连接 , 用于若所述应用程序触发所述 API调用请求, 则根据预先设定的调用策略, 确 定由所述客户端或所述服务器执行所述 API调用。

结合第三方面, 在第一种可能的实现方式中, 所述运行单元包括获取模 块和运行模块。 所述获取模块用于, 向所述服务器发送对所述应用程序的目 标程序的获取请求, 所述获取请求用于指示所述服务器返回所述应 用程序的 目标程序; 所述获取模块还用于, 从所述服务器接收所述目标程序; 所述运 行模块, 与所述获取模块连接, 用于执行所述目标程序, 以在所述客户端上 运行所述应用程序。

结合第三方面, 在第二种可能的实现方式中, 所述处理单元包括判定模 块, 所述判定模块与所述检测单元连接, 用于, 判定所述 API调用是否需要利 用所述客户端的设备资源执行;若所述 API调用需要利用所述客户端的设备资 源执行, 则确定由所述客户端执行所述 API调用; 若所述 API调用不需要利用 所述客户端的设备资源执行, 则确定由所述服务器执行所述 API调用。

结合第三方面的第二种可能的实现方式, 在第三种可能的实现方式中, 所述调用策略包括: 若所述 API调用为请求向所述服务器的注册表中写入数 据、 或者请求将所述应用程序运行结束后得到的数 据保存到所述服务器、 或 者请求利用所述服务器的网络资源访问网络, 则确定所述 API调用不需要利用 所述客户端的设备资源执行。

结合第三方面的第二种可能的实现方式, 在第四种可能的实现方式中, 所述处理单元还包括本地执行模块,所述本地 执行模块与所述判定模块连接, 在确定由所述客户端执行所述 API调用之后, 用于, 根据所述 API调用请求, 生成本地 API调用请求; 根据所述本地 API调用请求, 调用所述客户端的设备 资源, 执行所述本地 API调用, 以生成所述本地 API调用的执行结果; 向所述 应用程序发送所述本地 API调用的执行结果。

结合第三方面的第二种可能的实现方式, 在第五种可能的实现方式中, 所述处理单元还包括远程执行模块,所述远程 执行模块与所述判定模块连接, 在确定由所述服务器执行所述 API调用之后, 用于, 根据所述 API调用请求, 生成远程 API调用请求; 向所述服务器发送所述远程 API调用请求, 所述远程 API调用请求用于指示所述服务器执行所述远程 API调用, 并返回所述远程 API调用的执行结果; 从所述服务器接收所述远程 API调用的执行结果; 向所 述应用程序发送所述远程 API调用的执行结果。

结合第三方面的第五种可能的实现方式, 在第六种可能的实现方式中, 所述远程执行模块, 还用于, 将所述远程 API调用请求序列化, 以生成所述远 程 API调用的请求数据, 所述请求数据携带有所述远程 API调用请求序列化后 的信息; 对所述请求数据加密; 向所述服务器发送加密后的所述请求数据。

结合第三方面的第五种可能的实现方式, 在第七种可能的实现方式中, 所述远程执行模块, 还用于, 从所述服务器接收所述 API调用的响应数据, 所 述响应数据携带有所述远程 API调用的执行结果序列化后的信息;若所述响 应 数据已加密, 则对所述响应数据解密; 将解密后的所述响应数据反序列化, 以得到所述远程 API调用的执行结果。

结合第三方面的上述可能的实现方式, 在第八种可能的实现方式中, 所 述检测单元检测所述应用程序是否触发 API调用请求的方式, 具体包括钩子 HOOK方式、 过滤驱动方式和替换系统中断表方式中的任意 一种。

为了解决上述技术问题, 在第四方面, 本发明提出了一种远程应用程序 运行的装置, 包括: 接收单元, 用于从客户端接收远程 API调用请求, 所述远 程 API调用请求携带有所述客户端请求所述服务器 执行所述 API调用的信息; 执行单元, 与所述接收单元连接, 用于根据所述远程 API调用请求, 调用所述 服务器的设备资源, 执行所述远程 API调用, 以生成所述远程 API调用的执行 结果; 发送单元, 与所述接收单元和执行单元连接, 用于向所述客户端发送 所述远程 API调用的执行结果。

结合第四方面, 在第一种可能的实现方式中, 所述接收单元还用于, 从 所述客户端接收对所述应用程序的目标程序的 获取请求, 所述获取请求携带 有请求所述服务器返回所述应用程序的目标程 序的信息; 所述发送单元还用 于, 根据所述获取请求, 向所述客户端发送所述应用程序的目标程序。

结合第四方面, 在第二种可能的实现方式中, 所述接收单元还用于, 从 所述客户端接收所述远程 API调用的请求数据,所述请求数据携带有所述 远程 API调用请求序列化后的信息; 若所述请求数据已加密, 则对所述请求数据解 密; 将解密后的所述请求数据反序列化, 以得到所述远程 API调用请求。

结合第二方面的第二种可能的实现方式, 在第三种可能的实现方式中, 所述发送单元还用于,将所述远程 API调用的执行结果序列化, 以生成所述远 程 API调用的响应数据, 所述响应数据携带有所述远程 API调用的执行结果序 列化后的信息; 对所述响应数据加密; 向所述客户端发送加密后的所述响应 数据。

有益效果

通过根据应用程序运行过程中的 API调用的类型,采用客户端或服务器执 行 API调用, 根据本发明的远程应用程序运行的方法和装置 , 不但能够利用客 户端的设备资源执行部分 API调用,提高了应用程序远程运行的效率, 改善了 用户体验; 而且能够将根据应用程序运行的结果得到的最 新数据保存到服务 器上, 保证了数据访问的安全性, 从而使远程运行的应用程序达到在服务器 上本地运行相同的效果。

根据下面参考附图对示例性实施例的详细说明 , 本发明的其它特征及方 面将变得清楚。 附图说明

包含在说明书中并且构成说明书的一部分的附 图与说明书一起示出了本 发明的示例性实施例、 特征和方面, 并且用于解释本发明的原理。

图 1示出根据本发明一实施例的远程应用程序运 的方法的流程图; 图 2a〜图 2c示出根据本发明另一实施例的远程应用程序 行的方法的流 程图;

图 3示出根据本发明再一实施例的远程应用程序 行的方法的流程图; 图 4a〜图 4c示出根据本发明又一实施例的远程应用程序 行的方法的流 程图;

图 5示出根据本发明一实施例的远程应用程序运 的装置的框图; 图 6示出根据本发明另一实施例的远程应用程序 行的装置的框图; 图 7示出根据本发明再一实施例的远程应用程序 行的装置的框图; 图 8示出根据本发明再一实施例的远程应用程序 行的装置的框图; 图 9示出根据本发明又一实施例的远程应用程序 行的装置的框图。 具体实施方式

以下将参考附图详细说明本发明的各种示例性 实施例、 特征和方面。 附 图中相同的附图标记表示功能相同或相似的元 件。 尽管在附图中示出了实施 例的各种方面, 但是除非特别指出, 不必按比例绘制附图。

在这里专用的词"示例性 "意为 "用作例子、 实施例或说明性"。 这里作为 "示例性"所说明的任何实施例不必解释为优于 好于其它实施例。

另外, 为了更好的说明本发明, 在下文的具体实施方式中给出了众多的 具体细节。 本领域技术人员应当理解, 没有这些具体细节, 本发明同样可以 实施。 在另外一些实例中, 对于大家熟知的方法、 手段、 元件和电路未作详 细描述, 以便于凸显本发明的主旨。

如背景技术所述, 为了解决应用程序的远程运行问题, 本发明的发明人 创新性的提出, 通过解耦 API调用, 客户端根据所述 API调用请求和预先设定 的调用策略, 确定由所述客户端或所述服务器执行所述 API调用。

本发明的远程应用程序运行的方法可以应用于 以下场景: 通过网络连接 的至少两台计算机。 例如: 用户通过手机、 PDA、 平板电脑等设备访问办公 网络中服务器中支持远程运行的应用程序。 其中, 用户直接操作的计算机称 为客户端, 用户远端访问的计算机称为服务器。 其中, 客户端可以包括但不 限于以下几种: PC、 瘦客户端。 客户端包括中央处理器、 显卡、 系统内存、 硬盘驱动控制器、 光驱控制器、 串口、 网卡等部件, 各部件之间通过系统总 线连接; 硬盘驱动控制器可挂接硬盘, 通常硬盘中会放置操作系统、 应用程 序和其他数据。 光驱控制器可挂接光驱, 光驱可插入光盘; 串口可连接鼠标、 键盘; 显卡可连接显示器。 客户端和服务器还可以通过网卡连接到其他计 算 机。 服务器可以包括但不限于以下几种: 物理机、 各种大中型服务器、 云环 境下的虚拟机、 云存储等。

实施例 1

图 1示出根据本发明一实施例的远程应用程序运 的方法的流程图。如图 1所示, 该远程应用程序运行的方法主要包括:

歩骤 S110、 客户端从服务器获取应用程序, 并在所述客户端上运行所述 应用程序。

具体地, 当用户要在客户端远程运行某个应用程序时, 客户端可以通过 网络将应用程序的执行部分从服务器复制到客 户端, 并在客户端运行应用程 序的执行部分。 在此过程中, 应用程序依然会调用服务器的操作系统层次的 各种接口。 例如: 用户需要在 PDA上访问办公网络中的服务器的应用程序 Word, 则客户端可以据此将服务器的 "Word.exe"文件拷贝到客户端, 并在 客户端执行 "Word.exe"文件, 以运行 Word应用程序。 这个过程用户感知不 到, 对用户是透明的。

歩骤 S120、所述客户端检测所述应用程序是否触发 用程序接口 API调用 请求。

具体地, 在客户端运行应用程序的执行部分的过程中, 客户端可以检测 应用程序是否有应用程序接口 (英文: Application Programming Interface; 缩 写: API) 调用请求。 例如: 客户端采用钩子 Hook技术, 拦截应用程序对系 统 API的访问; 若客户端拦截到应用程序对系统 API的访问, 则说明检测到该 应用程序有 API调用请求。

歩骤 S130、若所述应用程序触发 API调用请求,则所述客户端根据预先设 定的调用策略, 确定由所述客户端或所述服务器执行所述 API调用。

具体地,可以根据 API调用的类型、客户端和服务器的设备资源配 置情况, 预先设定调用策略。例如: 调用策略可以包括, 若所述 API调用为请求向所述 服务器的注册表中写入数据、 或者请求将所述应用程序运行结束后得到的数 据保存到所述服务器、 或者请求利用所述服务器的网络资源访问网络 , 则确 定所述 API调用不需要利用所述客户端的设备资源执行 。调用策略,可以具体 包括以下策略:

策略一、 如果 API调用是对设备资源的访问请求, 例如对内存、 显卡、 处 理器、 鼠标键盘等的访问请求, 由于这类 API调用需要占用大量计算资源, 并 且内存等资源只存储应用程序执行过程中间的 数据, 并不需要将数据持久保 存到服务器上, 也不需要持续访问服务器的网络资源, 则客户端可以直接调 用客户端的本地系统接口实现 API调用。 例如: 若 API调用为请求视频渲染、 请求 GPU加速、 请求 3D加速等类型的 API调用, 可以直接使用客户端的本地 处理器、 显卡和内存等完成 API调用。 由于客户端在本地访问内存的速度快, 因此这种方式能够提高用户体验。 又由于不需要对应用程序所在的服务器的 数据或者网络资源进行持续访问如读写操作, 因此能够减少客户端和服务器 之间网络传输的数据量, 并且具有较低的安全风险。 为了提高客户端的应用 程序运行速度, 客户端还可以使用更高性能的计算机配置, 从而进一歩改善 用户体验。

策略二、如果 API调用是需要持续访问应用程序所在的服务器 上的数据或 者需要持续访问服务器的网络资源的访问请求 , 由于这些访问请求不能够在 客户端执行, 只能在服务器执行, 则将该 API调用重定向到服务器上, 即调用 应用程序所在的服务器的资源执行 API调用。 例如: 若 API调用为请求向服务 器保存的注册表中写入数据、 或者请求将应用程序在客户端运行完成后得到 的数据或文件保存到服务器、 或者请求利用服务器的网卡访问互联网等类型 的 API调用, 则可以将该 API调用请求发送给服务器。 由于可以将需要持久化 访问和安全存储的数据或文件保存在服务器如 云端上,而不是保存在客户端, 因此保证了数据存储的信息安全; 并且, 在客户端不具有网络访问能力的情 况下, 应用程序仍然可以利用服务器的网络资源访问 外部网络。 通过根据客户端的应用程序 API调用的不同类型, 采用不同的调用策略, 选择使用客户端或服务器的资源完成 API调用,不但能够利用客户端的设备资 源执行部分 API调用, 提高了应用程序远程运行的效率, 改善了用户体验; 而 且能够将根据应用程序运行的结果得到的最新 数据保存到服务器上, 保证了 数据访问的安全性, 从而使远程运行的应用程序达到在服务器上本 地运行相 同的效果。

实施例 2

图 2a〜图 2c示出根据本发明另一实施例的远程应用程序 行的方法的流 程图。 图 2a〜图 2c中标号与图 1中相同的组件具有相同的功能, 为简明起见, 省略对这些组件的详细说明。

如图 2a所示, 图 2a所示的方法与图 1所示的方法的主要区别在于: 客户端 可以从服务器接收应用程序的目标程序, 并执行目标程序, 以在客户端上运 行应用程序。

具言之, 歩骤 S110可以具体包括以下歩骤:

歩骤 S210、 客户端向服务器发送对应用程序的目标程序的 获取请求。 歩骤 S220、 客户端从服务器接收目标程序。

歩骤 S230、 客户端执行目标程序, 以在客户端上运行应用程序。

具体地, 如图 2a所示, 若用户要在客户端上远程运行服务器上已安装 的 应用程序, 则用户可以在客户端操作, 以确定要远程运行的应用程序, 并向 服务器发送对应用程序的目标程序的获取请求 , 从服务器获取目标程序, 并 执行目标程序, 以在客户端上运行应用程序。

例如: 客户端可以向服务器发送查询请求, 查询请求用于指示服务器将 生成的查询结果返回给客户端, 查询结果可以包括服务器上安装的所有支持 远端运行的应用程序的列表, 例如列表中可以包括文档应用程序、 注册表应 用程序和网络应用程序。 客户端接收查询结果后, 可以使用远端应用程序显 示模块, 将查询结果显示在客户端, 例如可以通过列表方式将从服务器接收 的所有支持远端运行的应用程序显示在客户端 。 用户可以在客户端显示的应 用程序列表中, 选择要运行的应用程序, 例如文档应用程序 Word。

根据用户的选择结果, 客户端可以向服务器发送向服务器发送对应用 程 序的目标程序的获取请求。 获取请求中可以包括客户端根据当前网络环境 , 自动指定的数据传输方式, 例如客户端可以请求服务器利用共享拷贝或 TCP/IP等方式, 将服务器上保存的应用程序的执行部分复制到 客户端, 例如 Word.exe文件。 客户端可以使用客户端的沙箱执行环境, 调用客户端的系统 接口, 运行应用程序的执行部分, 例如通过执行 Word.exe文件来运行文档应 用程序 Word。其中, 应用程序的执行部分, 仅包括应用程序的目标程序本身, 并不包括应用程序运行所需要的其他数据如各 种资源和运行库。 其中, 沙箱 执行环境是指在客户端利用沙箱(英文: Sandbox)方式来运行应用程序, 并 且, 当应用程序需要执行 API调用时, 客户端会将系统控制权交给沙箱执行环 境。

通过这种方式, 无需将服务器的存储设备如硬盘等挂载到客户 端, 客户 端就可以远程运行应用程序, 提高了应用程序远程运行的信息安全性。并且 , 由于仅复制应用程序的执行部分, 因此应用程序在客户端所占用的资源空间 较小, 有利于客户端能够随时接入需要远程运行的其 他应用程序。

在一种可能的实现方式中, 歩骤 S120中, 客户端检测所述应用程序是否 触发 API调用请求的方式, 具体可以包括但不限于钩子 HOOK方式、过滤驱动 方式和替换系统中断表方式中的任意一种。

具体地, 如图 2a所示, 客户端可以采用钩子 HOOK技术拦截应用程序对 系统 API的访问, 以判断所述应用程序是否有 API调用请求。

例如: 客户端可以使用沙箱执行环境, 首先在应用程序的目标程序运行 前注入动态链接库 dll, 使沙箱执行环境初始化的 dll进入目标进程的进程空间 中; 然后, 客户端执行该 dll中 API的 HOOK过程, 这个过程会将应用程序的所 有 API调用都指向沙箱执行环境相应的 API实现, 当应用程序需要执行 API调 用时, 会将系统控制权交给沙箱执行环境; 若客户端拦截到应用程序对系统 API的访问请求, 则判定应用程序有 API调用请求。 此外, 客户端还可以使用 过滤驱动方式或替换系统终端表等方式,检测 应用程序运行中是否有 API调用 请求。

通过这种方式, 客户端能够获得应用程序每次对系统 API的调用, 以确定 由客户端或服务器执行 API调用。

在一种可能的实现方式中, 歩骤 S130可以具体包括以下歩骤:

歩骤 S250、 客户端判定 API调用是否需要利用客户端的设备资源执行。 歩骤 S260、若 API调用需要利用客户端的设备资源执行,则确 定由客户端 执行 API调用。

歩骤 S270、若 API调用不需要利用客户端的设备资源执行,则 确定由服务 器执行 API调用。

具体地, 如图 2a所示, 首先确定 API调用是否需要利用客户端的设备资源 执行, 只有在 API调用不需要利用客户端的设备资源执行的情 况下,才确定由 服务器执行 API调用。

例如: 客户端的沙箱执行环境在截取到一次 API调用后, 首先由客户端的

API调用决策模块, 根据预先设定的调用策略, 判断此次 API调用是否需要重 定向到服务器所在的服务器上去执行。 对于内存、 显卡、 CPU等资源的访问 的 API调用, 则在客户端执行。而对于需要持久化资源的访 问如创建文件、访 问文件等的 API调用, 交由服务器执行。

通过这种方式,既能够将需持久访问资源的 API调用重定向到远程服务器 的系统执行, 使应用程序运行结果能够保存到远程服务器, 保证应用程序远 程运行的安全性和可靠性; 而且,将处理过程复杂或数据量大的 API调用交由 客户端执行, 能够充分利用客户端的设备资源, 提高了用户体验。

在一种可能的实现方式中, 歩骤 S260之后, 可以具体包括以下歩骤: 歩骤 S261、 客户端根据所述 API调用请求, 生成本地 API调用请求。

歩骤 S262、客户端根据本地 API调用请求, 调用客户端的设备资源, 执行 本地 API调用, 并生成本地 API调用的执行结果。

歩骤 S263、 客户端向应用程序发送本地 API调用的执行结果。

具体地, 如图 2a所示, 如果 API调用是对设备如内存、 显卡、 处理器、 鼠 标键盘等的访问请求, 则客户端可以利用客户端资源, 执行 API调用。

例如: 用户在 PDA上访问办公网络中的服务器上的应用程序 Word, 当用 户在客户端的沙箱执行环境中运行应用程序 Word的过程中, 若沙箱执行环境 检测到应用程序 Word的 API调用为编辑文件如输入文本、 绘制图形, 由于该 API调用不需要读写服务器上的数据, 则客户端根据该 API调用请求, 生成本 地 API调用请求,在沙箱执行环境中直接调用客户 端的本地接口, 利用客户端 的鼠标、键盘等设备资源执行编辑操作, 并将该 API调用的执行结果如所编辑 的文本、 所绘制的图形等返回给应用程序 Word, 完成本次 API调用。 通过重 复上述过程, 最终在客户端上完成文件的编辑。

通过这种方式, 当客户端配置了性能较高的硬件资源如内存、 显卡、 CPU 等时, 客户端能够充分利用客户端的硬件资源执行 API调用,提高了应用程序 远程运行的效率, 改善了用户体验。

在一种可能的实现方式中, 歩骤 S270之后, 可以具体包括以下歩骤: 歩骤 S271、 客户端根据 API调用请求, 生成远程 API调用请求。

歩骤 S272、 客户端向服务器发送远程 API调用请求, 远程 API调用请求用 于指示服务器执行远程 API调用, 并返回远程 API调用的执行结果。

歩骤 S273、 客户端从服务器接收远程 API调用的执行结果。

歩骤 S274、 客户端向应用程序发送远程 API调用的执行结果。 具体地,如图 2a所示,如果 API调用是需要持久化访问数据如读写注册表、 读写文件 (如打开文件、 创建文件或保存文件等) 等请求, 或者网络访问等 请求, 则客户端可以指示服务器利用服务器资源执行 API调用。

例如: 用户在 PDA上访问办公网络的服务器上的应用程序 Word, 在用户 在客户端的沙箱执行环境运行应用程序 Word的过程中, 若沙箱执行环境检测 到应用程序 Word的 API调用请求为创建文件, 由于该 API调用需要读写服务器 上的数据如模板或文件, 则客户端将 API调用请求发送给服务器, 由服务器执 行该 API调用, 并将 API调用的执行结果如已创建的文件等, 返回给客户端的 应用程序, 以完成本次 API调用过程, 最终在服务器上完成文件的创建。

通过这种方式, 客户端能够将应用程序远程运行过程中需要持 续访问资 源的数据保存在服务器, 保证了数据访问的安全性。

在一种可能的实现方式中, 歩骤 S272可以具体包括以下歩骤:

歩骤 S2721、 客户端将远程 API调用请求序列化, 以生成远程 API调用请 求数据, 请求数据携带有远程 API调用请求序列化后的信息。

歩骤 S2722、 客户端对请求数据加密。

歩骤 S2723、 客户端向所述服务器发送加密后的请求数据。

具体地, 如图 2b所示, 客户端可以先通过序列化方式, 将应用程序的 API 调用请求转化为请求数据,并在客户端和服务 器之间经由协议进行网络传输。 为了保证数据传输的安全性, 还可以利用加密算法对请求数据进行加密。

例如: 对于需要持久访问资源的 API调用如读写文件、 读写注册表等, 客 户端可以先利用客户端的 API序列化模块, 将 API调用函数进行序列化, 转换 成可以便于网络传输的协议数据流, 其中,序列化的内容包括 API调用函数的 名称、 函数参数、 此次调用的 ID号等内容; 然后, 利用客户端的安全代理模 块将序列化后请求数据加密; 最后, 通过网络将加密后请求数据传输到服务 器, 以使服务器执行 API调用并将执行结果返回给客户端。 在一种可能的实现方式中, 歩骤 S274可以具体包括以下歩骤: 歩骤 S2741、 客户端从服务器接收远程 API调用的响应数据, 响应数据携 带有所述远程 API调用的执行结果序列化后的信息;

歩骤 S2742、 客户端判断响应数据是否已加密;

歩骤 S2743、 若远程 API调用的响应数据已加密, 客户端解密响应数据; 歩骤 S2744、 客户端将解密后的响应数据反序列化, 以得到远程 API调用 的执行结果。

具体地, 如图 2c所示, 客户端在接收服务器返回的响应数据后先解密 和 反序列化, 再返回给应用程序。

例如: 客户端接收到服务器传输的 API调用的响应数据后,若判定响应数 据已加密, 则先利用客户端的安全代理模块对响应数据进 行解密; 然后, 利 用客户端的序列化模块对响应数据进行解析, 得到服务器对本次 API调用的执 行结果, 以便将执行结果返回给应用程序。

通过这种方式,无需应用程序在客户端和服务 器从代码层次上适配协议, 直接利用已有的网络传输协议,就可以将 API调用请求和执行结果, 安全透明 的在客户端和服务器之间传输, 现有应用程序能够平滑的支持远程启动和运 行, 提高了应用程序远程运行的兼容性; 并且, 通过数据加密的方式, 保证 了数据传输的安全性。

实施例 3

图 3示出根据本发明再一实施例的远程应用程序 行的方法的流程图。如 图 3所示, 该远程应用程序运行的方法主要包括:

歩骤 S310、 服务器接收客户端的远程 API调用请求, 远程 API调用请求携 带有请求服务器执行 API调用的信息;

歩骤 S320、服务器根据远程 API调用请求, 调用服务器的设备资源, 执行 远程 API调用, 以生成远程 API调用的执行结果; 歩骤 S330、 服务器向客户端发送远程 API调用的执行结果。

具体地,服务器可以利用服务器的设备资源, 执行远程 API调用如读写文 件、 读写注册表或者网络访问, 并将执行结果发送给客户端。

例如: 若服务器接收客户端的远程 API调用请求为创建文件,服务器的服 务器沙箱模块据此生成服务器的本地 API调用为创建文件, 其中, 远程 API调 用请求包括 API的名称、 调用函数的参数、 调用的协议 ID编号等; 然后, 服务 器沙箱模块利用服务器的系统接口和设备资源 , 调用系统 API来创建文件, 最 终在服务器上创建了文件, 并将本地 API调用的执行结果, 即已创建的文件, 发送到客户端, 以使客户端的应用程序完成该 API调用。

通过这种方式, 能够将注册表、 文件等数据资源持久化和安全的保存到 应用程序所在的服务器的系统中。 由于数据不存储在客户端, 而是存储在应 用程序所在的设备或者其它安全设备如云端, 因此用户不用担心数据的安全 问题, 保证了数据存储的安全性和可靠性。

实施例 4

图 4a〜图 4c示出根据本发明又一实施例的远程应用程序 行的方法的流 程图。 图 4a〜图 4c中标号与图 3相同的组件具有相同的功能, 为简明起见, 省 略对这些组件的详细说明。

如图 4a所示, 图 4a所示的远程应用程序运行的方法与图 4所示的方法的主 要区别在于: 服务器根据接收到的对应用程序的目标程序的 获取请求, 向客 户端发送应用程序的目标程序。

具言之, 歩骤 310之前, 可以具体包括以下歩骤:

歩骤 S410、 服务器从客户端接收对应用程序的目标程序的 获取请求, 所 述获取请求携带有请求所述服务器返回所述应 用程序的目标程序的信息; 歩骤 S420、 服务器根据获取请求, 向客户端发送应用程序的目标程序。 具体地, 如图 4a所示, 若服务器从客户端接收对应用程序的目标程序 的 获取请求, 则服务器根据获取请求, 向客户端发送应用程序的目标程序。 例如: 服务器可以根据客户端的查询请求, 生成查询结果, 并将查询结 果返回给客户端, 查询结果可以包括服务器上安装的所有支持远 端运行的应 用程序的列表, 例如列表中可以包括文档应用程序、 注册表应用程序和网络 应用程序。 其中, 可以根据服务器预先设定的应用程序选择策略 , 生成应用 程序列表。 例如, 选择策略可以为根据应用程序的使用频率、 应用程序的用 途和其它自定义的策略等, 预先设定一定的选择条件, 只有满足选择条件的 应用程序才会进入列表。

若服务器从客户端接收对应用程序的目标程序 的获取请求, 获取请求携 带有客户端请求服务器将应用程序的目标程序 返回客户端的信息。 其中, 获 取请求中还可以包括客户端指定的数据传输方 式, 例如客户端请求服务器利 用共享拷贝或 TCP/IP等方式, 将服务器上保存的应用程序的执行部分, 例如 Word.exe文件, 返回到客户端, 则服务器可以据此向客户端传输目标程序。

在一种可能的实现方式中, 歩骤 310可以具体包括以下歩骤:

歩骤 S311、服务器接收客户端的远程 API调用请求数据,请求数据携带有 远程 API调用请求序列化后的信息;

歩骤 S312、 服务器判断请求数据是否已加密;

歩骤 S313、 若请求数据已加密, 服务器对请求数据解密;

歩骤 S314、服务器将解密后的请求数据反序列化, 到远程 API调用请求。 具体地, 如图 4b所示, 服务器接收到响应数据后先解密和反序列化, 再 执行远程 API调用; 得到执行结果也要先序列化和加密后, 再发送给客户端。

例如: 服务器从客户端接收 API调用请求数据, 若判定请求数据已加密, 则可以先利用服务器的安全代理模块对请求数 据进行解密, 服务器的反序列 化模块可以将解密后请求数据反序列化,解析 得到远程 API调用请求,其中远 程 API调用请求包括 API的名称、 调用函数的参数、 调用的协议 ID编号等; 接 着,服务器的服务器沙箱模块可以将远程 API调用请求,转化为服务器的本地 API调用, 并利用服务器的系统接口和设备资源, 执行本地 API调用。

在一种可能的实现方式中, 歩骤 330可以具体包括以下歩骤:

歩骤 S331、 服务器将远程 API调用的执行结果序列化, 以生成远程 API调 用的响应数据, 响应数据携带有远程 API调用的执行结果序列化后的信息; 歩骤 S332、 服务器对响应数据加密;

歩骤 S333、 服务器向客户端发送加密后的响应数据。

具体地,如图 4c所示,服务器先将本地 API调用的执行结果序列化和加密, 再发送给客户端。

例如:服务器在完成本地 API调用后, 先利用服务器的序列化模块将本地

API调用的执行结果进行序列化, 转换成可以便于网络传输的协议数据流, 得 到远程 API调用的响应数据; 然后, 服务器的安全代理模块对响应数据加密; 最后, 服务器将加密后的响应数据发送到客户端, 以使客户端的应用程序完 成 API调用。

通过这种方式, 无需应用程序在客户端和服务器从软件代码层 次上适配 协议, 直接利用已有的网络传输协议, 就可以将 API调用请求和执行结果, 安 全透明的在客户端和服务器之间传输, 现有应用程序能够平滑的支持远程启 动和运行, 提高了应用程序远程运行的兼容性; 并且, 通过数据加密的方式, 保证了数据传输的安全性。

实施例 5

图 5示出根据本发明一实施例的远程应用程序运 的装置的框图。

如图 5所示, 该远程应用程序运行的装置包括: 运行单元 510、 检测单元 520和处理单元 530。 其中, 运行单元 510, 用于从服务器获取应用程序, 并在 所述客户端上运行所述应用程序。 检测单元 520, 与所述运行单元 510连接, 用于检测所述应用程序是否触发应用程序接口 API调用请求。 处理单元 530, 与所述检测单元连接,用于若所述应用程序触 发所述 API调用请求, 则根据预 先设定的调用策略, 确定由所述客户端或所述服务器执行所述 API调用。

图 6示出根据本发明另一实施例的远程应用程序 行的装置的框图。 图 6 中标号与图 5相同的组件具有相同的功能, 为简明起见, 省略对这些组件的详 细说明。

如图 6所示,图 6所示的远程应用程序运行的装置与图 5所示装置的主要区 别在于: 所述运行单元 510包括获取模块 610和运行模块 620。 其中, 所述获取 模块 610用于, 向所述服务器发送对所述应用程序的目标程序 的获取请求, 所 述获取请求用于指示所述服务器返回所述应用 程序的目标程序。 所述获取模 块 610还用于, 从所述服务器接收所述目标程序。 所述运行模块 620, 与所述 获取模块 610连接, 用于执行所述目标程序, 以在所述客户端上运行所述应用 程序。

在一种可能的实现方式中, 所述处理单元 530包括判定模块 630, 所述判定模 块 630与所述检测单元 520连接,用于,判定所述 API调用是否需要利用所述客 户端的设备资源执行; 若所述 API调用需要利用所述客户端的设备资源执行, 则确定由所述客户端执行所述 API调用; 若所述 API调用不需要利用所述客户 端的设备资源执行, 则确定由所述服务器执行所述 API调用。

在一种可能的实现方式中, 所述处理单元 530还包括本地执行模块 640, 所述本地执行模块 640与所述判定模块 630连接, 在确定由所述客户端执行所 述 API调用之后, 用于, 根据所述 API调用请求, 生成本地 API调用请求; 根 据所述本地 API调用请求, 调用所述客户端的设备资源, 执行所述本地 API调 用, 以生成所述本地 API调用的执行结果; 向所述应用程序发送所述本地 API 调用的执行结果。

在一种可能的实现方式中, 所述处理单元 530还包括远程执行模块 650, 所述远程执行模块 650与所述判定模块 630连接, 在确定由所述服务器执行所 述 API调用之后, 用于, 根据所述 API调用请求, 生成远程 API调用请求; 向 所述服务器发送所述远程 API调用请求, 所述远程 API调用请求用于指示所述 服务器执行所述远程 API调用, 并返回所述远程 API调用的执行结果; 从所述 服务器接收所述远程 API调用的执行结果; 向所述应用程序发送所述远程 API 调用的执行结果。

在一种可能的实现方式中, 所述远程执行模块 650, 还用于, 将所述远程 API调用请求序列化, 以生成所述远程 API调用的请求数据, 所述请求数据携 带有所述远程 API调用请求序列化后的信息; 对所述请求数据加密; 向所述服 务器发送加密后的所述请求数据。

在一种可能的实现方式中, 所述远程执行模块 650, 还用于, 从所述服务 器接收所述 API调用的响应数据, 所述响应数据携带有所述远程 API调用的执 行结果序列化后的信息; 若所述响应数据已加密, 则对所述响应数据解密; 将解密后的所述响应数据反序列化, 以得到所述远程 API调用的执行结果。

在一种可能的实现方式中,所述检测单元 520检测所述应用程序是否触发 API调用请求的方式, 具体包括钩子 HOOK方式、过滤驱动方式和替换系统中 断表方式中的任意一种。

其中, 所述远程应用程序运行的装置用于实现远程应 用程序运行的具体 机制和有益效果, 可以参考图 1〜图 2c及其相关描述。

实施例 6

图 7示出根据本发明再一实施例的远程应用程序 行的装置的框图。

如图 7所示, 该远程应用程序运行的装置包括: 接收单元 710、 执行单元 720和发送单元 730。 其中, 接收单元 710, 用于从客户端接收远程 API调用请 求, 所述远程 API调用请求携带有所述客户端请求所述服务器 执行所述 API调 用的信息。 执行单元 720, 与所述接收单元 710连接, 用于根据所述远程 API 调用请求, 调用所述服务器的设备资源, 执行所述远程 API调用, 以生成所述 远程 API调用的执行结果。 发送单元 730, 与所述接收单元 710和执行单元 720 连接, 用于向所述客户端发送所述远程 API调用的执行结果。

在一种可能的实现方式中, 所述接收单元 710还用于, 从所述客户端接收 对所述应用程序的目标程序的获取请求, 所述获取请求携带有请求所述服务 器返回所述应用程序的目标程序的信息。所述 发送单元 730还用于, 根据所述 获取请求, 向所述客户端发送所述应用程序的目标程序。

在一种可能的实现方式中, 所述接收单元 710还用于, 从所述客户端接收 所述远程 API调用的请求数据, 所述请求数据携带有所述远程 API调用请求序 列化后的信息; 若所述请求数据已加密, 则对所述请求数据解密; 将解密后 的所述请求数据反序列化, 以得到所述远程 API调用请求。

在一种可能的实现方式中, 所述发送单元 730还用于, 将所述远程 API调 用的执行结果序列化, 以生成所述远程 API调用的响应数据,所述响应数据携 带有所述远程 API调用的执行结果序列化后的信息; 对所述响应数据加密; 向 所述客户端发送加密后的所述响应数据。

其中, 所述远程应用程序运行的装置用于实现远程应 用程序运行的具体 机制和有益效果, 可以参考图 3〜图 4c及其相关描述。

实施例 7

图 8示出了本发明的再一实施例的一种远程应用 序运行的装置的结构 框图。所述远程应用程序运行的装置 1100可以是具备计算能力的主机服务器、 个人计算机 PC、 或者可携带的便携式计算机或终端等。 本发明具体实施例并 不对计算节点的具体实现做限定。

所述远程应用程序运行的装置 1100包括处理器 (processor)1110、通信接口 (Communications Interface) 1120、存储器 (memory array)1130和总线 1140。其中, 处理器 1110、 通信接口 1120、 以及存储器 1130通过总线 1140完成相互间的通 信。 通信接口 1120用于与网络设备通信, 其中网络设备包括例如虚拟机管理 中心、 共享存储等。

处理器 1110用于执行应用程序。 处理器 1110可能是一个中央处理器 CPU, 或者是专用集成电路 ASIC (Application Specific Integrated Circuit), 或者是被 配置成实施本发明实施例的一个或多个集成电 路。

存储器 1130用于存放文件。 存储器 1130可能包含高速 RAM存储器, 也可 能还包括非易失性存储器non-volatile memory), 例如至少一个磁盘存储器。 存储器 1130也可以是存储器阵列。 存储器 1130还可能被分块, 并且所述块可 按一定的规则组合成虚拟卷。

在一种可能的实施方式中, 上述应用程序可为包括计算机操作指令的应 用程序代码。 该应用程序具体可用于使客户端: 从服务器获取应用程序, 并 在所述客户端上运行所述应用程序; 所述客户端检测所述应用程序是否触发 应用程序接口 API调用请求; 若所述应用程序触发所述 API调用请求, 则所述 客户端根据预先设定的调用策略, 确定由所述客户端或所述服务器执行所述 API调用。

在一种可能的实施方式中, 该应用程序还可用于使客户端: 向所述服务 器发送对所述应用程序的目标程序的获取请求 , 所述获取请求用于指示所述 服务器返回所述应用程序的目标程序; 从所述服务器接收所述目标程序; 执 行所述目标程序, 以在所述客户端上运行所述应用程序。

在一种可能的实施方式中, 该应用程序还可用于使客户端:判定所述 API 调用是否需要利用所述客户端的设备资源执行 ;若所述 API调用需要利用所述 客户端的设备资源执行, 则确定由所述客户端执行所述 API调用; 若所述 API 调用不需要利用所述客户端的设备资源执行, 则确定由所述服务器执行所述 API调用。

在一种可能的实施方式中, 该应用程序还可用于使客户端: 所述调用策 略包括, 若所述 API调用为请求向所述服务器的注册表中写入数 据、或者请求 将所述应用程序运行结束后得到的数据保存到 所述服务器、 或者请求利用所 述服务器的网络资源访问网络,则确定所述 API调用不需要利用所述客户端的 设备资源执行。

在一种可能的实施方式中, 该应用程序还可用于使客户端: 在确定由所 述客户端执行所述 API调用之后, 根据所述 API调用请求, 生成本地 API调用 请求; 根据所述本地 API调用请求, 调用所述客户端的设备资源, 执行所述本 地 API调用, 以生成所述本地 API调用的执行结果; 向所述应用程序发送所述 本地 API调用的执行结果。

在一种可能的实施方式中, 该应用程序还可用于使客户端: 在确定由所 述服务器执行所述 API调用之后, 根据所述 API调用请求, 生成远程 API调用 请求; 向所述服务器发送所述远程 API调用请求, 所述远程 API调用请求用于 指示所述服务器执行所述远程 API调用, 并返回所述远程 API调用的执行结 果; 从所述服务器接收所述远程 API调用的执行结果; 向所述应用程序发送所 述远程 API调用的执行结果。

在一种可能的实施方式中, 该应用程序还可用于使客户端: 将所述远程 API调用请求序列化, 以生成所述远程 API调用的请求数据, 所述请求数据携 带有所述远程 API调用请求序列化后的信息; 对所述请求数据加密; 向所述服 务器发送加密后的所述请求数据。

在一种可能的实施方式中, 该应用程序还可用于使客户端: 从所述服务 器接收所述 API调用的响应数据, 所述响应数据携带有所述远程 API调用的执 行结果序列化后的信息; 若所述响应数据已加密, 则对所述响应数据解密; 将解密后的所述响应数据反序列化, 以得到所述远程 API调用的执行结果。

在一种可能的实施方式中, 该应用程序还可用于使客户端: 检测所述应 用程序是否触发 API调用请求的方式, 具体包括钩子 HOOK方式、过滤驱动方 式和替换系统中断表方式中的任意一种。

其中, 所述远程应用程序运行的装置用于实现远程应 用程序运行的具体 机制和有益效果, 可以参考图 1〜图 2c及其相关描述。

实施例 9

图 9示出了本发明的又一实施例的一种远程应用 序运行的装置的结构 框图。所述远程应用程序运行的装置 1200可以是具备计算能力的主机服务器、 个人计算机 PC、 或者可携带的便携式计算机或终端等。 本发明具体实施例并 不对计算节点的具体实现做限定。

所述远程应用程序运行的装置 1200包括处理器processor;>1210、通信接口 (Communications Interface) 1220、存储器 (memory array)1230和总线 1240。其中, 处理器 1210、 通信接口 1220、 以及存储器 1230通过总线 1240完成相互间的通 信。

通信接口 1220用于与网络设备通信, 其中网络设备包括例如虚拟机管理 中心、 共享存储等。

处理器 1210用于执行应用程序。处理器 1210可能是一个中央处理器 CPU, 或者是专用集成电路 ASIC (Application Specific Integrated Circuit) , 或者是被 配置成实施本发明实施例的一个或多个集成电 路。

存储器 1230用于存放文件。 存储器 1230可能包含高速 RAM存储器, 也可 能还包括非易失性存储器non-volatile memory), 例如至少一个磁盘存储器。 存储器 1230也可以是存储器阵列。 存储器 1230还可能被分块, 并且所述块可 按一定的规则组合成虚拟卷。

在一种可能的实施方式中, 上述应用程序可为包括计算机操作指令的应 用程序代码。该应用程序具体可用于使服务器 :从客户端接收远程 API调用请 求, 所述远程 API调用请求携带有所述客户端请求所述服务器 执行所述 API调 用的信息; 根据所述远程 API调用请求, 调用所述服务器的设备资源, 执行所 述远程 API调用, 以生成所述远程 API调用的执行结果; 向所述客户端发送所 述远程 API调用的执行结果。

在一种可能的实施方式中, 该应用程序还可用于使服务器: 在所述服务 器从客户端接收远程 API调用请求之前,从所述客户端接收对所述应 用程序的 目标程序的获取请求, 所述获取请求携带有请求所述服务器返回所述 应用程 序的目标程序的信息; 根据所述获取请求, 向所述客户端发送所述应用程序 的目标程序。

在一种可能的实施方式中, 该应用程序还可用于使服务器: 从所述客户 端接收所述远程 API调用的请求数据, 所述请求数据携带有所述远程 API调用 请求序列化后的信息; 若所述请求数据已加密, 对所述请求数据解密; 将解 密后的所述请求数据反序列化, 以得到所述远程 API调用请求。

在一种可能的实施方式中, 该应用程序还可用于使服务器: 将所述远程 API调用的执行结果序列化, 以生成所述远程 API调用的响应数据, 所述响应 数据携带有所述远程 API调用的执行结果序列化后的信息;对所述响 应数据加 密; 向所述客户端发送加密后的所述响应数据。

其中, 所述远程应用程序运行的装置用于实现远程应 用程序运行的具体 机制和有益效果, 可以参考图 3〜图 4c及其相关描述。

本领域普通技术人员可以意识到, 本文所描述的实施例中的各示例性单 元及算法歩骤, 能够以电子硬件、或者计算机软件和电子硬件 的结合来实现。 这些功能究竟以硬件还是软件形式来实现, 取决于技术方案的特定应用和设 计约束条件。 专业技术人员可以针对特定的应用选择不同的 方法来实现所描 述的功能, 但是这种实现不应认为超出本发明的范围。

如果以计算机软件的形式来实现所述功能并作 为独立的产品销售或使用 时, 则在一定程度上可认为本发明的技术方案的全 部或部分 (例如对现有技 术做出贡献的部分) 是以计算机软件产品的形式体现的。 该计算机软件产品 通常存储在计算机可读取的存储介质中, 包括若干指令用以使得计算机设备 (可以是个人计算机、 服务器、 或者网络设备等) 执行本发明各实施例方法 的全部或部分歩骤。 而前述的存储介质包括 U盘、 移动硬盘、 只读存储器

( ROM , Read-Only Memory )、 随机存取存储器 ( RAM , Random Access

Memory), 磁碟或者光盘等各种可以存储应用程序代码的 介质。

以上所述, 仅为本发明的具体实施方式, 但本发明的保护范围并不局限 于此, 任何熟悉本技术领域的技术人员在本发明揭露 的技术范围内, 可轻易 想到变化或替换, 都应涵盖在本发明的保护范围之内。 因此, 本发明的保护 范围应所述以权利要求的保护范围为准。