CN104598257B - 远程应用程序运行的方法和装置 - Google Patents

远程应用程序运行的方法和装置 Download PDF

Info

Publication number
CN104598257B
CN104598257B CN201310530387.7A CN201310530387A CN104598257B CN 104598257 B CN104598257 B CN 104598257B CN 201310530387 A CN201310530387 A CN 201310530387A CN 104598257 B CN104598257 B CN 104598257B
Authority
CN
China
Prior art keywords
api calls
client
server
request
long
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.)
Active
Application number
CN201310530387.7A
Other languages
English (en)
Other versions
CN104598257A (zh
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.)
Huawei Cloud Computing Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
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 Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN201310530387.7A priority Critical patent/CN104598257B/zh
Priority to PCT/CN2014/084492 priority patent/WO2015062339A1/zh
Priority to EP14858791.8A priority patent/EP2993583A4/en
Publication of CN104598257A publication Critical patent/CN104598257A/zh
Priority to US14/961,270 priority patent/US10057364B2/en
Application granted granted Critical
Publication of CN104598257B publication Critical patent/CN104598257B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/561Adding application-functional data or data for application control, e.g. adding metadata
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/51Discovery or management thereof, e.g. service location protocol [SLP] or web services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/547Remote procedure calls [RPC]; Web services

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Library & Information Science (AREA)
  • Stored Programmes (AREA)
  • Information Transfer Between Computers (AREA)
  • Computer And Data Communications (AREA)

Abstract

本发明公开了一种远程应用程序运行的方法和装置。该方法包括:客户端从服务器获取应用程序,并在所述客户端上运行所述应用程序;所述客户端检测所述应用程序是否触发应用程序接口API调用请求;若所述应用程序触发所述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)、磁碟或者光盘等各种可以存储应用程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。

Claims (24)

1.一种远程应用程序运行的方法,其特征在于,包括:
客户端从服务器获取应用程序,并在所述客户端上运行所述应用程序;
所述客户端检测所述应用程序是否触发应用程序接口API调用请求;
若所述应用程序触发所述API调用请求,则所述客户端根据预先设定的调用策略,确定由所述客户端或所述服务器执行所述API调用,
其中,所述客户端根据预先设定的调用策略,确定由所述客户端或者所述服务器执行所述API调用,包括:
所述客户端判定所述API调用是否需要利用所述客户端的设备资源执行;
若所述API调用需要利用所述客户端的设备资源执行,则确定由所述客户端执行所述API调用;
若所述API调用不需要利用所述客户端的设备资源执行,则确定由所述服务器执行所述API调用。
2.根据权利要求1所述的方法,其特征在于,所述客户端从服务器获取应用程序,并在所述客户端上运行所述应用程序,包括:
所述客户端向所述服务器发送对所述应用程序的目标程序的获取请求,所述获取请求用于指示所述服务器返回所述应用程序的目标程序;
所述客户端从所述服务器接收所述目标程序;
所述客户端执行所述目标程序,以在所述客户端上运行所述应用程序。
3.根据权利要求1所述的方法,其特征在于,所述调用策略包括:
若所述API调用为请求向所述服务器的注册表中写入数据、或者请求将所述应用程序运行结束后得到的数据保存到所述服务器、或者请求利用所述服务器的网络资源访问网络,则确定所述API调用不需要利用所述客户端的设备资源执行。
4.根据权利要求1所述的方法,其特征在于,在确定由所述客户端执行所述API调用之后,包括:
所述客户端根据所述API调用请求,生成本地API调用请求;
所述客户端根据所述本地API调用请求,调用所述客户端的设备资源,执行所述本地API调用,以生成所述本地API调用的执行结果;
所述客户端向所述应用程序发送所述本地API调用的执行结果。
5.根据权利要求1所述的方法,其特征在于,在确定由所述服务器执行所述API调用之后,包括:
所述客户端根据所述API调用请求,生成远程API调用请求;
所述客户端向所述服务器发送所述远程API调用请求,所述远程API调用请求用于指示所述服务器执行所述远程API调用,并返回所述远程API调用的执行结果;
所述客户端从所述服务器接收所述远程API调用的执行结果;
所述客户端向所述应用程序发送所述远程API调用的执行结果。
6.根据权利要求5所述的方法,其特征在于,所述客户端向所述服务器发送所述远程API调用请求,包括:
所述客户端将所述远程API调用请求序列化,以生成所述远程API调用的请求数据,所述请求数据携带有所述远程API调用请求序列化后的信息;
所述客户端对所述请求数据加密;
所述客户端向所述服务器发送加密后的所述请求数据。
7.根据权利要求5所述的方法,其特征在于,所述客户端从所述服务器接收所述远程API调用的执行结果,包括:
所述客户端从所述服务器接收所述远程API调用的响应数据,所述响应数据携带有所述远程API调用的执行结果序列化后的信息;
若所述响应数据已加密,则所述客户端对所述响应数据解密;
所述客户端将解密后的所述响应数据反序列化,以得到所述远程API调用的执行结果。
8.根据权利要求1至6中任一项所述的方法,其特征在于,所述客户端检测所述应用程序是否触发API调用请求的方式,具体包括钩子HOOK方式、过滤驱动方式和替换系统中断表方式中的任意一种。
9.一种远程应用程序运行的方法,其特征在于,包括:
服务器从客户端接收远程API调用请求,所述远程API调用请求携带有所述客户端请求所述服务器执行所述API调用的信息,其中,所述远程API调用请求是所述客户端判定所述API调用不需要利用所述客户端的设备资源执行之后生成的;
所述服务器根据所述远程API调用请求,调用所述服务器的设备资源,执行所述远程API调用,以生成所述远程API调用的执行结果;
所述服务器向所述客户端发送所述远程API调用的执行结果。
10.根据权利要求9所述的方法,其特征在于,在所述服务器从客户端接收远程API调用请求之前,包括:
所述服务器从所述客户端接收对所述应用程序的目标程序的获取请求,所述获取请求携带有请求所述服务器返回所述应用程序的目标程序的信息;
所述服务器根据所述获取请求,向所述客户端发送所述应用程序的目标程序。
11.根据权利要求9所述的方法,其特征在于,所述服务器接收所述客户端的远程API调用请求,包括:
所述服务器从所述客户端接收所述远程API调用的请求数据,所述请求数据携带有所述远程API调用请求序列化后的信息;
若所述请求数据已加密,则所述服务器对所述请求数据解密;
所述服务器将解密后的所述请求数据反序列化,以得到所述远程API调用请求。
12.根据权利要求11所述的方法,其特征在于,所述服务器向所述客户端发送所述执行结果,包括:
所述服务器将所述远程API调用的执行结果序列化,以生成所述远程API调用的响应数据,所述响应数据携带有所述远程API调用的执行结果序列化后的信息;
所述服务器对所述响应数据加密;
所述服务器向所述客户端发送加密后的所述响应数据。
13.一种远程应用程序运行的装置,其特征在于,包括:
运行单元,用于从服务器获取应用程序,并在客户端上运行所述应用程序;
检测单元,与所述运行单元连接,用于检测所述应用程序是否触发应用程序接口API调用请求;
处理单元,与所述检测单元连接,用于若所述应用程序触发所述API调用请求,则根据预先设定的调用策略,确定由所述客户端或所述服务器执行所述API调用,
其中,所述处理单元包括判定模块,所述判定模块与所述检测单元连接,用于,
判定所述API调用是否需要利用所述客户端的设备资源执行;
若所述API调用需要利用所述客户端的设备资源执行,则确定由所述客户端执行所述API调用;
若所述API调用不需要利用所述客户端的设备资源执行,则确定由所述服务器执行所述API调用。
14.根据权利要求13所述的装置,其特征在于,所述运行单元包括获取模块和运行模块,
所述获取模块用于,向所述服务器发送对所述应用程序的目标程序的获取请求,所述获取请求用于指示所述服务器返回所述应用程序的目标程序;
所述获取模块还用于,从所述服务器接收所述目标程序;
所述运行模块,与所述获取模块连接,用于执行所述目标程序,以在所述客户端上运行所述应用程序。
15.根据权利要求13所述的装置,其特征在于,所述调用策略包括:
若所述API调用为请求向所述服务器的注册表中写入数据、或者请求将所述应用程序运行结束后得到的数据保存到所述服务器、或者请求利用所述服务器的网络资源访问网络,则确定所述API调用不需要利用所述客户端的设备资源执行。
16.根据权利要求13所述的装置,其特征在于,所述处理单元还包括本地执行模块,所述本地执行模块与所述判定模块连接,在确定由所述客户端执行所述API调用之后,用于,
根据所述API调用请求,生成本地API调用请求;
根据所述本地API调用请求,调用所述客户端的设备资源,执行所述本地API调用,以生成所述本地API调用的执行结果;
向所述应用程序发送所述本地API调用的执行结果。
17.根据权利要求13所述的装置,其特征在于,所述处理单元还包括远程执行模块,所述远程执行模块与所述判定模块连接,在确定由所述服务器执行所述API调用之后,用于,
根据所述API调用请求,生成远程API调用请求;
向所述服务器发送所述远程API调用请求,所述远程API调用请求用于指示所述服务器执行所述远程API调用,并返回所述远程API调用的执行结果;
从所述服务器接收所述远程API调用的执行结果;
向所述应用程序发送所述远程API调用的执行结果。
18.根据权利要求17所述的装置,其特征在于,所述远程执行模块,还用于,
将所述远程API调用请求序列化,以生成所述远程API调用的请求数据,所述请求数据携带有所述远程API调用请求序列化后的信息;
对所述请求数据加密;
向所述服务器发送加密后的所述请求数据。
19.根据权利要求17所述的装置,其特征在于,所述远程执行模块,还用于,
从所述服务器接收所述API调用的响应数据,所述响应数据携带有所述远程API调用的执行结果序列化后的信息;
若所述响应数据已加密,则对所述响应数据解密;
将解密后的所述响应数据反序列化,以得到所述远程API调用的执行结果。
20.根据权利要求13至19中任一项所述的装置,其特征在于,所述检测单元检测所述应用程序是否触发API调用请求的方式,具体包括钩子HOOK方式、过滤驱动方式和替换系统中断表方式中的任意一种。
21.一种远程应用程序运行的装置,其特征在于,包括:
接收单元,用于从客户端接收远程API调用请求,所述远程API调用请求携带有所述客户端请求服务器执行所述API调用的信息,其中,所述远程API调用请求是所述客户端判定所述API调用不需要利用所述客户端的设备资源执行之后生成的;
执行单元,与所述接收单元连接,用于根据所述远程API调用请求,调用所述服务器的设备资源,执行所述远程API调用,以生成所述远程API调用的执行结果;
发送单元,与所述接收单元和执行单元连接,用于向所述客户端发送所述远程API调用的执行结果。
22.根据权利要求21所述的装置,其特征在于,
所述接收单元还用于,从所述客户端接收对所述应用程序的目标程序的获取请求,所述获取请求携带有请求所述服务器返回所述应用程序的目标程序的信息;
所述发送单元还用于,根据所述获取请求,向所述客户端发送所述应用程序的目标程序。
23.根据权利要求21所述的装置,其特征在于,所述接收单元还用于,从所述客户端接收所述远程API调用的请求数据,所述请求数据携带有所述远程API调用请求序列化后的信息;
若所述请求数据已加密,则对所述请求数据解密;
将解密后的所述请求数据反序列化,以得到所述远程API调用请求。
24.根据权利要求23所述的装置,其特征在于,所述发送单元还用于,
将所述远程API调用的执行结果序列化,以生成所述远程API调用的响应数据,所述响应数据携带有所述远程API调用的执行结果序列化后的信息;
对所述响应数据加密;
向所述客户端发送加密后的所述响应数据。
CN201310530387.7A 2013-10-30 2013-10-30 远程应用程序运行的方法和装置 Active CN104598257B (zh)

Priority Applications (4)

Application Number Priority Date Filing Date Title
CN201310530387.7A CN104598257B (zh) 2013-10-30 2013-10-30 远程应用程序运行的方法和装置
PCT/CN2014/084492 WO2015062339A1 (zh) 2013-10-30 2014-08-15 远程应用程序运行的方法和装置
EP14858791.8A EP2993583A4 (en) 2013-10-30 2014-08-15 METHOD AND DEVICE FOR PERFORMING A REMOTE APPLICATION PROGRAM
US14/961,270 US10057364B2 (en) 2013-10-30 2015-12-07 Method and apparatus for remotely running application program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201310530387.7A CN104598257B (zh) 2013-10-30 2013-10-30 远程应用程序运行的方法和装置

Publications (2)

Publication Number Publication Date
CN104598257A CN104598257A (zh) 2015-05-06
CN104598257B true CN104598257B (zh) 2019-01-18

Family

ID=53003281

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310530387.7A Active CN104598257B (zh) 2013-10-30 2013-10-30 远程应用程序运行的方法和装置

Country Status (4)

Country Link
US (1) US10057364B2 (zh)
EP (1) EP2993583A4 (zh)
CN (1) CN104598257B (zh)
WO (1) WO2015062339A1 (zh)

Families Citing this family (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
IN2015CH01317A (zh) * 2015-03-18 2015-04-10 Wipro Ltd
CN106559467B (zh) * 2015-09-30 2021-02-05 北京奇虎科技有限公司 一种远程桌面管理方法和系统
CN106557310B (zh) * 2015-09-30 2021-08-20 北京奇虎科技有限公司 一种远程桌面管理方法和系统
CN107203408B (zh) * 2016-03-17 2021-02-23 华为技术有限公司 重定向的方法、装置和系统
CN107438060B (zh) 2016-05-28 2020-12-15 华为技术有限公司 一种网络设备中的远程过程调用方法及网络设备
US11150925B2 (en) 2016-07-07 2021-10-19 Data Accelerator Ltd. Method and system for compound application virtualization
US11048660B2 (en) 2017-06-20 2021-06-29 Netflix, Inc. Acceleration system for facilitating processing of API calls
US11303676B2 (en) * 2017-11-16 2022-04-12 Samsung Electronics Co., Ltd. Method and system for authenticating application program interface (API) invokers
CN108255542B (zh) * 2018-01-05 2021-08-10 北京北信源信息安全技术有限公司 一种虚拟机的串口并口管控方法与装置
US11693832B2 (en) * 2018-03-15 2023-07-04 Vmware, Inc. Flattening of hierarchical data into a relational schema in a computing system
WO2019194665A1 (en) * 2018-04-06 2019-10-10 Samsung Electronics Co., Ltd. Method and device for performing onboarding
CN109144512B (zh) * 2018-08-22 2022-05-03 杭州数澜科技有限公司 一种生成api的方法和系统
CN109450766B (zh) * 2018-09-21 2021-05-25 北京奇安信科技有限公司 一种工作区级vpn的访问处理方法及装置
US11184162B1 (en) * 2018-09-28 2021-11-23 NortonLifeLock Inc. Privacy preserving secure task automation
WO2020073267A1 (en) * 2018-10-11 2020-04-16 Entit Software Llc Asymmetric-man-in-the-middle capture based application sharing protocol traffic recordation
CN111367684B (zh) * 2018-12-26 2023-11-10 北京天融信网络安全技术有限公司 一种过滤远程过程调用的方法和装置
US11070371B2 (en) 2019-03-14 2021-07-20 International Business Machines Corporation Detection and protection of data in API calls
CN110221880B (zh) * 2019-06-05 2023-06-20 北京金山安全软件有限公司 应用程序编程接口调用方法、装置、设备及介质
CN110430100B (zh) * 2019-08-27 2021-06-04 中国工商银行股份有限公司 网络连通性探测方法和装置
CN110825537B (zh) * 2019-11-04 2023-03-14 联思智云(北京)科技有限公司 基于c/s架构的远程应用的调用方法、装置和设备
CN111274554B (zh) * 2020-02-10 2023-03-21 广州虎牙科技有限公司 小程序的api调用方法、装置、设备和介质
CN111309445B (zh) * 2020-03-09 2021-08-06 腾讯科技(深圳)有限公司 程序运行方法和装置及存储介质
US11579950B2 (en) * 2020-09-09 2023-02-14 Ciena Corporation Configuring an API to provide customized access constraints
CN114443172A (zh) * 2020-12-18 2022-05-06 北京信息科技大学 一种应用程序运行方法及系统
CN113176957B (zh) * 2021-04-29 2024-05-03 上海云扩信息科技有限公司 一种基于rpc的远程应用自动化系统
CN113486331A (zh) * 2021-07-21 2021-10-08 维沃移动通信(杭州)有限公司 Api调用请求处理方法、装置、电子设备及可读存储介质
US12015607B2 (en) 2021-08-13 2024-06-18 The Toronto-Dominion Bank System and method for authenticating client devices communicating with an enterprise system
CN114301896A (zh) * 2021-12-31 2022-04-08 高新兴物联科技有限公司 通信方法、通信系统及计算机可读存储介质
CN115329389B (zh) * 2022-10-17 2023-01-24 中安网脉(北京)技术股份有限公司 一种基于数据沙箱的文件保护系统及方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1323435A (zh) * 1998-10-02 2001-11-21 国际商业机器公司 提供网络协同会话服务的系统和方法
CN1848774A (zh) * 2005-04-11 2006-10-18 华为技术有限公司 一种远程调用通信组件的系统及方法
CN101534196A (zh) * 2008-03-12 2009-09-16 因特伟特公司 用于安全调用rest api的方法和装置
CN102662741A (zh) * 2012-04-05 2012-09-12 华为技术有限公司 虚拟桌面的实现方法、装置和系统

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7003463B1 (en) 1998-10-02 2006-02-21 International Business Machines Corporation System and method for providing network coordinated conversational services
US20070276651A1 (en) * 2006-05-23 2007-11-29 Motorola, Inc. Grammar adaptation through cooperative client and server based speech recognition
GB2475011B (en) * 2008-09-09 2013-06-26 Kace Networks Inc Deployment and management of virtual containers
CN101969469B (zh) * 2010-10-25 2013-11-06 华为技术有限公司 电信能力开放中的回调处理方法及装置
US8866701B2 (en) * 2011-03-03 2014-10-21 Citrix Systems, Inc. Transparent user interface integration between local and remote computing environments
WO2013095485A1 (en) * 2011-12-22 2013-06-27 Hewlett-Packard Development Company, L.P. Enabling execution of remotely-hosted applications using application metadata and client updates
US20130185810A1 (en) * 2012-01-13 2013-07-18 Microsoft Corporation Controlled serialization and/or deserialization
WO2014062804A1 (en) * 2012-10-16 2014-04-24 Citrix Systems, Inc. Application wrapping for application management framework
CN103023906B (zh) * 2012-12-20 2017-04-19 北京奇虎科技有限公司 针对远程过程调用协议进行状态跟踪的方法及系统

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1323435A (zh) * 1998-10-02 2001-11-21 国际商业机器公司 提供网络协同会话服务的系统和方法
CN1848774A (zh) * 2005-04-11 2006-10-18 华为技术有限公司 一种远程调用通信组件的系统及方法
CN101534196A (zh) * 2008-03-12 2009-09-16 因特伟特公司 用于安全调用rest api的方法和装置
CN102662741A (zh) * 2012-04-05 2012-09-12 华为技术有限公司 虚拟桌面的实现方法、装置和系统

Also Published As

Publication number Publication date
EP2993583A4 (en) 2016-07-27
CN104598257A (zh) 2015-05-06
US10057364B2 (en) 2018-08-21
US20160088109A1 (en) 2016-03-24
EP2993583A1 (en) 2016-03-09
WO2015062339A1 (zh) 2015-05-07

Similar Documents

Publication Publication Date Title
CN104598257B (zh) 远程应用程序运行的方法和装置
US9940119B2 (en) Providing limited versions of applications
US8924592B2 (en) Synchronization of server-side cookies with client-side cookies
US10579442B2 (en) Inversion-of-control component service models for virtual environments
US7984438B2 (en) Virtual machine transitioning from emulating mode to enlightened mode
CN109634718B (zh) 云平台创建镜像的方法及系统
CN103888485A (zh) 云计算资源的分配方法、装置及系统
CN105378661A (zh) 资源包索引
KR20150064063A (ko) 컴퓨팅 장치의 보안 식별 및 보안 식별 방법
KR20100015532A (ko) 폐쇄된 시스템용의 프로그래밍 프레임워크
JP7412594B2 (ja) データ処理方法、データ処理装置、コンピュータ機器、及びコンピュータプログラム
CN105378662A (zh) 捆绑包生成
CN109542862B (zh) 用于控制文件系统的挂载的方法、装置和系统
EP3374858B1 (en) Creating and modifying applications from a mobile device
US10140166B2 (en) Message oriented middleware with integrated rules engine
US10963621B2 (en) Management of remote access user application layouts
US8127026B2 (en) User operation acting device, user operation acting program, and computer readable recording medium
CN114328272B (zh) 应用测试方法、装置、系统和电子设备
CN109462604A (zh) 一种数据传输方法、装置、设备及存储介质
CN114466401B (zh) 图像传输方法和电子设备
CN114095533B (zh) 云游戏账号登录方法、装置、计算机设备及存储介质
US20230315826A1 (en) User verification with state machines
Vermeulen Linux sea
US20110099276A1 (en) System and method for enabling software applications as a service in a non-intrusive manner
CN114564403A (zh) 信息展示方法和计算设备

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20220215

Address after: 550025 Huawei cloud data center, jiaoxinggong Road, Qianzhong Avenue, Gui'an New District, Guiyang City, Guizhou Province

Patentee after: Huawei Cloud Computing Technologies Co.,Ltd.

Address before: 518129 Bantian HUAWEI headquarters office building, Longgang District, Guangdong, Shenzhen

Patentee before: HUAWEI TECHNOLOGIES Co.,Ltd.