发明内容
为了克服上述现有技术的不足和缺陷,本发明的一个目的在于,提供一种基于远程服务的软件保护系统。
为了实现上述任务,本发明采用的技术方案如下:
一种基于远程服务的软件保护系统,包括客户端和服务端两大部分:
所述客户端包括以下各单元:
应用软件客户端,用于实现用户在本机上对软件进行使用操作,并根据用户在使用操作过程中的软件使用需求,通过应用软件通信模块向客户端大厅发送请求;
应用软件通信模块,加载在应用软件客户端以及客户端大厅上,实现应用软件客户端与客户端大厅之间的通信连接;用于将应用软件客户端的远程调用请求发送到客户端大厅;
通信代理模块,加载在客户端大厅上,用于客户端大厅与客户端代理之间的通信连接,即客户端与服务端之间的通信连接;用于将应用软件通信模块发送的请求发送到服务端的客户端代理,并接收客户端代理发出的请求返回信息,传递客户端与服务端所需数据,屏蔽服务器的异构;
客户端大厅,与应用软件客户端通过应用软件通信模块进行交互,与服务端的客户端代理通过通信代理模块进行交互;用于用户输入或者客户端大厅自动获取用户身份信息以及使用权限信息;用于根据需要下载、安装、启动使用应用软件;用于监听并接收应用软件客户端的请求,并将该请求通过通信代理模块发送至服务端的客户端代理;
所述服务端包括以下各单元:
客户端代理,与计算中心和身份与权限认证模块交互;用于接收客户端大厅发出的请求,并根据接收到的请求类型进行处理操作,并将处理结果通过通信代理模块返回给客户端大厅;所述处理操作包括:将用户身份验证信息和应用软件使用权限信息发送到身份与权限认证模块,并接收身份与权限认证模块返回的验证结果;将计算资源执行请求发送给计算中心,并将计算中心返回的结果发送给客户端;
数据库,用以存储用户的身份信息、使用权限信息、计算节点配置信息、计算资源信息、用户操作日志;其中,计算节点配置信息包括计算节点IP、端口、调用地址;计算资源信息包括计算资源ID、资源名称、最大资源请求数、资源权重;
计算中心,与客户端代理以及计算节点交互,用于接收客户端代理发送的请求,然后根据请求类型进行操作处理:对计算资源进行标记;将计算资源执行请求以及从数据库中提取的计算节点配置信息发送给计算节点,并将计算节点返回的结果返回给客户端代理;
计算节点,与计算中心交互,加载有应用软件服务端;用于接收计算中心发出的计算资源执行请求和计算节点配置信息,并根据计算节点配置信息自动获取应用软件服务端的路径,根据该路径调用应用软件服务端并将其返回给计算中心;
应用软件服务端,是应用软件中的核心功能模块,其加载在计算节点上;其用于实现应用软件的核心分析与计算功能;
身份与权限认证模块,与客户端代理交互,用于接收客户端代理发送的用户身份和软件使用权限信息,并根据数据库中存储的相应信息,对用户身份和软件使用权限进行验证,并将验证结果发送给客户端代理;
用户与服务管理模块,为用户提供用户注册、用户信息维护、应用软件服务购买的功能与界面;为系统管理员提供对用户和软件服务统一管理和配置的功能与界面,包括用户注册、用户信息维护、应用软件服务购买、用户管理、订单管理、支付管理、应用软件服务管理;
服务端的计算中心、身份与权限认证模块、用户与服务管理模块分别与数据库连接,服务端和客户端通过通信代理模块进行连接。
进一步的,所述应用软件通信模块有4个供调用的接口,分别是计算资源申请请求接口、计算资源执行请求接口、计算资源释放请求接口、直接计算接口;
(1)计算资源申请请求接口
用于应用软件客户端发起远程调用前进行计算资源申请请求,格式如下:
601:计算资源ID,标志将要申请的计算资源,计算资源ID是应用软件服务端的唯一标识ID,应用软件客户端的每次计算资源申请请求都必须携带对应的计算资源ID,占用4个字节;
602:线程数,标识将要申请的计算资源线程数,每一个计算资源都配置有供申请调用的线程资源数,只有当计算资源可供申请的线程数大于本次申请的线程数,计算资源申请请求才可成功,线程数占用4个字节;
603:错误代码,用来存储调用时发生的错误代码,占用4个字节;
604:错误信息,用来存储调用时发生错误时,返回的错误信息,占用256个字节;
(2)计算资源执行请求接口
用于应用软件客户端向应用软件服务端发起计算资源执行请求(即远程计算调用),接口格式如下:
701:计算资源ID,标志计算调用的计算资源ID,应用软件客户端的每一次调用必须携带需要请求调用的计算资源ID,占用4个字节;
702:函数ID,标识将要调用的计算资源中的函数ID,每一个计算资源中可包括多个函数ID,函数ID占用4个字节;
703:输入缓冲区,用于存储调用时需要的传入的输入数据,输入缓冲区最大为64*1024个字节;
704:输入缓冲区长度,标识输入缓冲区实际的长度,输入缓冲区长度占用4个字节;
705:输出缓冲区,用于存储调用返回时传出的输出数据,输出缓冲区最大为64*1024个字节;
706:输出缓冲区长度,标识输出缓冲区实际的长度,输出缓冲区长度占用4个字节;
707:错误代码,用来存储调用时发生的错误代码,占用4个字节;
708:错误信息,用来存储调用时发生错误时,返回的错误信息,占用256个字节;
(3)计算资源释放请求接口
用于应用软件客户端释放已经申请的计算资源,接口格式如下:
801:计算资源ID,标志将要释放的计算资源ID,应用软件客户端的每一次调用都必须携带需要请求调用的计算资源ID,占用4个字节;
802:错误代码,用来存储调用时发生的错误代码,占用4个字节;
803:错误信息,用来存储调用时发生错误时,返回的错误信息,占用256个字节;
(4)直接计算接口
用于应用软件客户端直接向应用软件服务端的发起远程计算调用,而无需经过计算资源申请请求、计算资源计算请求、计算资源释放请求三个步骤,接口格式如下:
901:计算资源ID,标志计算调用的计算资源ID,应用软件客户端的每一次调用都必须携带需要请求调用的计算资源ID,占用4个字节;
902:函数ID,标识将要调用的计算资源中的函数ID,每一个计算资源中可包括多个函数ID,函数ID占用4个字节;
903:输入缓冲区,用于存储调用时需要的传入的输入数据,输入缓冲区最大为64*1024个字节;
904:输入缓冲区长度,标识输入缓冲区实际的长度,输入缓冲区长度占用4个字节;
905:输出缓冲区,用于存储调用返回时传出的输出数据,输出缓冲区最大为64*1024个字节;
906:输出缓冲区长度,标识输出缓冲区实际的长度,输出缓冲区长度占用4个字节;
907:错误代码,用来存储调用时发生的错误代码,占用4个字节;
908:错误信息,用来存储调用时发生错误时,返回的错误信息,占用256个字节。
进一步的,所述应用软件服务端包含一个或多个功能函数,并提供一个接口,接口参数如下:
1001:输入缓冲区,用于存储调用时需要的传入的输入数据,输入缓冲区最大为64*1024个字节;
1002:输入缓冲区长度,标识输入缓冲区实际的长度,输入缓冲区长度占用4个字节;
1003:输出缓冲区,用于存储调用返回时传出的输出数据,输出缓冲区最大为64*1024个字节;
1004:输出缓冲区长度,标识输出缓冲区实际的长度,输出缓冲区长度占用4个字节;
1005:函数ID,用于标示此次调用是针对该应用软件服务端所包含的哪个具体功能函数。
本发明的另一个目的在于,提供一种基于远程服务的软件保护方法,该方法包括步骤1:申请计算资源;步骤2:执行计算资源;步骤3:释放计算资源。
进一步的,所述步骤1申请计算资源的具体步骤如下:
步骤301:在用户操作应用软件时,触发应用软件客户端发起计算资源申请请求;
步骤302:应用软件客户端通过应用软件通信模块向客户端大厅发送计算资源申请请求,然后等待结果返回;
步骤303:客户端大厅收到计算资源申请请求后,通过通信代理模块将请求转发给服务端的客户端代理,然后等待结果返回;
步骤304:客户端代理收到计算资源申请请求后,向身份与权限认证模块请求验证该用户的身份与使用权限,如果客户端代理随后接收到该用户拥有使用软件服务端的权限,则执行步骤305,然后等待结果返回;否则,直接向客户端大厅返回该用户无权调用该软件服务端的错误信息;在该过程中,身份与权限认证模块将客户端代理提供的用户信息及使用权限信息与数据库中相应信息进行比对判断,并将判断结果返回给客户端代理;
步骤305:客户端代理将计算资源申请请求发至计算中心,然后等待结果返回;
步骤306:计算中心收到客户端代理发来的计算资源申请请求后,如果应用软件客户端发来的线程数未超出最大可用资源数则有足够计算资源可用,返回计算资源申请成功信息,并根据应用软件客户端发来的计算资源ID对相应的计算资源进行标记;否则,向客户端代理返回计算资源申请失败的错误信息,该错误信息被一路返回到应用软件客户端;
步骤307:应用软件客户端接收客户端大厅返回的结果,此时应用软件客户端进行判断,计算资源申请成功继续执行步骤2,否则,提示资源申请失败,计算资源申请调用过程结束。
进一步的,所述步骤2执行计算资源的具体步骤如下:
步骤401:应用软件客户端发起计算资源执行请求;
步骤402:应用软件客户端通过应用软件通信模块向客户端大厅发送计算资源执行请求,然后等待结果返回;
步骤403:客户端大厅收到计算资源执行请求后,通过通信代理模块将请求发送给服务端的客户端代理,然后等待结果返回;
步骤404:客户端代理收到计算资源执行请求后,根据缓存的使用权限信息判断,如果该用户有调用该应用软件服务端的权限,则将计算资源执行请求发至计算中心,然后等待结果返回;否则,直接向客户端大厅返回该用户无权调用该软件服务端的错误信息;
步骤405:计算中心收到计算资源执行请求后,根据缓存的计算节点配置信息选择计算节点,并将计算节点配置信息发送至计算节点;
步骤406:计算节点接收到计算节点配置信息后,根据计算节点配置信息自动获取应用软件服务端的路径,并将应用软件客户端发来的输入数据利用被标记的应用软件服务端进行处理,并将处理结果作为输出数据返回给计算中心,计算中心将该处理结果返回给客户端代理,客户端代理再将结果返回给客户端大厅,客户端大厅最后将结果返回给应用软件客户端;
步骤407:应用软件客户端接收到处理结果后,应用软件客户端再根据自身流程对接收到的处理结果进一步处理,计算资源执行请求结束。
进一步的,所述步骤405中计算中心根据计算节点配置信息选择计算节点过程中,当有多个计算节点时,计算中心根据配置随机选取或根据优先级选取某一个计算节点。
进一步的,所述步骤3释放计算资源的具体步骤如下:
步骤501:应用软件客户端发起计算资源释放请求;
步骤502:应用软件客户端通过应用软件通信模块向客户端大厅发送计算资源释放请求,然后等待结果返回;
步骤503:客户端大厅收到计算资源释放请求后,通过通信代理模块将请求发送给服务端的客户端代理,然后等待结果返回;
步骤504:客户端代理收到计算资源释放请求后,根据缓存的使用权限信息判断,如果该用户拥有调用该应用软件服务端的权限,则将计算资源释放请求发至计算中心,然后等待结果返回;否则,直接向客户端大厅返回该用户无权调用该软件服务端的错误信息;
步骤505:计算中心收到计算资源释放请求后,对应用软件服务端的标记取消,返回计算资源释放请求成功;计算中心将该结果返回给客户端代理,客户端代理再返回给客户端大厅,最后返回给应用软件客户端;
步骤506:应用软件客户端接收到返回结果,计算资源释放请求结束。
进一步的,所述应用软件通信模块有4个供调用的接口,分别是计算资源申请请求接口、计算资源执行请求接口、计算资源释放请求接口、直接计算接口;
(1)计算资源申请请求接口
用于应用软件客户端发起远程调用前进行计算资源申请请求,格式如下:
601:计算资源ID,标志将要申请的计算资源,计算资源ID是应用软件服务端的唯一标识ID,应用软件客户端的每次计算资源申请请求都必须携带对应的计算资源ID,占用4个字节;
602:线程数,标识将要申请的计算资源线程数,每一个计算资源都配置有供申请调用的线程资源数,只有当计算资源可供申请的线程数大于本次申请的线程数,计算资源申请请求才可成功,线程数占用4个字节;
603:错误代码,用来存储调用时发生的错误代码,占用4个字节;
604:错误信息,用来存储调用时发生错误时,返回的错误信息,占用256个字节;
(2)计算资源执行请求接口
用于应用软件客户端向应用软件服务端发起计算资源执行请求,接口格式如下:
701:计算资源ID,标志计算调用的计算资源ID,应用软件客户端的每一次调用必须携带需要请求调用的计算资源ID,占用4个字节;
702:函数ID,标识将要调用的计算资源中的函数ID,每一个计算资源中可包括多个函数ID,函数ID占用4个字节;
703:输入缓冲区,用于存储调用时需要的传入的输入数据,输入缓冲区最大为64*1024个字节;
704:输入缓冲区长度,标识输入缓冲区实际的长度,输入缓冲区长度占用4个字节;
705:输出缓冲区,用于存储调用返回时传出的输出数据,输出缓冲区最大为64*1024个字节;
706:输出缓冲区长度,标识输出缓冲区实际的长度,输出缓冲区长度占用4个字节;
707:错误代码,用来存储调用时发生的错误代码,占用4个字节;
708:错误信息,用来存储调用时发生错误时,返回的错误信息,占用256个字节;
(3)计算资源释放请求接口
用于应用软件客户端释放已经申请的计算资源,接口格式如下:
801:计算资源ID,标志将要释放的计算资源ID,应用软件客户端的每一次调用都必须携带需要请求调用的计算资源ID,占用4个字节;
802:错误代码,用来存储调用时发生的错误代码,占用4个字节;
803:错误信息,用来存储调用时发生错误时,返回的错误信息,占用256个字节;
(4)直接计算接口
用于应用软件客户端直接向应用软件服务端的发起远程计算调用,而无需经过计算资源申请请求、计算资源计算请求、计算资源释放请求三个步骤,接口格式如下:
901:计算资源ID,标志计算调用的计算资源ID,应用软件客户端的每一次调用都必须携带需要请求调用的计算资源ID,占用4个字节;
902:函数ID,标识将要调用的计算资源中的函数ID,每一个计算资源中可包括多个函数ID,函数ID占用4个字节;
903:输入缓冲区,用于存储调用时需要的传入的输入数据,输入缓冲区最大为64*1024个字节;
904:输入缓冲区长度,标识输入缓冲区实际的长度,输入缓冲区长度占用4个字节;
905:输出缓冲区,用于存储调用返回时传出的输出数据,输出缓冲区最大为64*1024个字节;
906:输出缓冲区长度,标识输出缓冲区实际的长度,输出缓冲区长度占用4个字节;
907:错误代码,用来存储调用时发生的错误代码,占用4个字节;
908:错误信息,用来存储调用时发生错误时,返回的错误信息,占用256个字节;
进一步的,所述应用软件服务端包含一个或多个功能函数,并提供一个接口,接口参数如下:
1001:输入缓冲区,用于存储调用时需要的传入的输入数据,输入缓冲区最大为64*1024个字节;
1002:输入缓冲区长度,标识输入缓冲区实际的长度,输入缓冲区长度占用4个字节;
1003:输出缓冲区,用于存储调用返回时传出的输出数据,输出缓冲区最大为64*1024个字节;
1004:输出缓冲区长度,标识输出缓冲区实际的长度,输出缓冲区长度占用4个字节;
1005:函数ID,用于标示此次调用是针对该应用软件服务端所包含的哪个具体功能函数。
与现有技术相比,本发明的基于远程服务的软件保护系统和方法具有以下优点:
1、资源共享。本发明基于系统与平台方式设计,系统中应用软件共用服务器端资源,不局限于某一款软件产品内部,能够有效实现信息与资源共享,适用面广。
2、应用软件模式多样化。由于本发明采用SOA架构设计,将应用软件客户端与应用软件服务端进行分离,并通过系统提供的标准接口与方法进行远程调用,任何软件均可通过此方式实现。
3、资源利用率高。本发明采用远程调用方式,只将需要进行处理的数据发送至服务端,核心计算功能由服务端完成,网络数据传输量小,服务器计算负载轻,可承载的服务量大,资源利用率高。
4、安全性好。本发明采用远程调用方式,将应用软件客户端与应用软件服务端进行分离部署,应用软件的核心功能模块实现由服务端完成,应用软件远程、异地、协同使用,稳定可靠、资源占用量少,可有效防止应用软件的核心技术被破解和盗版,安全性好。
具体实施方式
本发明适用的操作系统有:Microsoft Windows XP,Microsoft Windows2000,Microsoft Windows 2003,Microsoft Windows vista,Microsoft Windows7,MicrosoftWindows8等;硬件环境:Pentium(R)4 CPU,512M内存以上;应用软件指计算机辅助设计软件(Computer Aided Design,CAD)、计算机辅助工程软件(Computer Aided Engineering,CAE)、工程设计类基础应用软件(AutoCAD2002/2004/2006/2008/2009/20010/2011/2012/2013,中望CAD、浩辰CAD等)以及其他类别应用软件(如财务软件、办公软件等)。适用的开发语言:C、C++、C#、Java、PHP、Python等。
参见图1,本发明给出了一种基于远程服务的软件保护系统,包括客户端和服务端两大部分,其中:
客户端包括以下各单元:
应用软件客户端,用于实现用户在本机上对软件进行使用操作,并根据用户在使用操作过程中的软件使用需求,通过应用软件通信模块向客户端大厅发送请求;
本发明中,应用软件被拆分为应用软件客户端和应用软件服务端。应用软件客户端仅包含应用软件中非核心功能模块,而应用软件服务端为应用软件中的核心功能模块。当应用软件客户端使用应用软件中的核心功能模块时,应用软件客户端会向客户端大厅发出请求。
应用软件通信模块,加载在应用软件客户端以及客户端大厅上,实现应用软件客户端与客户端大厅之间的通信连接;用于将应用软件客户端的远程调用请求发送到客户端大厅。
通信代理模块,加载在客户端大厅上,用于客户端大厅与客户端代理之间的通信连接,即客户端与服务端之间的通信连接;用于将应用软件通信模块发送的请求(计算资源申请请求、计算资源执行请求或计算资源释放请求)发送到服务端的客户端代理,并接收客户端代理发出的请求返回信息,传递客户端与服务端所需数据,屏蔽服务器的异构。
客户端大厅,与应用软件客户端通过应用软件通信模块进行交互,与服务端的客户端代理通过通信代理模块进行交互;用于用户输入或者客户端大厅自动获取用户身份信息以及使用权限信息;用于根据需要下载、安装、启动使用应用软件;用于监听并接收应用软件客户端的请求(计算资源申请请求、计算资源执行请求或计算资源释放请求),并将该请求通过通信代理模块发送至服务端的客户端代理。
服务端包括以下各单元:
客户端代理(Client Proxy),与计算中心和身份与权限认证模块交互;用于接收客户端大厅发出的请求(计算资源申请请求(ApplyResource)、计算资源执行请求(Compute)或计算资源释放请求(ReleaseResource),并根据接收到的请求类型进行处理操作,并将处理结果通过通信代理模块返回给客户端大厅;所述处理操作包括:将用户身份验证信息和应用软件使用权限信息发送到身份与权限认证模块,并接收身份与权限认证模块返回的验证结果;将计算资源执行请求发送给计算中心,并将计算中心返回的结果发送给客户端;
数据库,用以存储用户的身份信息、使用权限信息、计算节点配置信息、计算资源信息、用户操作日志。其中,计算节点配置信息包括计算节点IP、端口、调用地址;计算资源信息包括计算资源ID、资源名称、最大资源请求数、资源权重;
计算中心(Compute Center),与客户端代理以及计算节点交互,用于接收客户端代理发送的请求(计算资源申请请求、计算资源执行请求或计算资源释放请求),然后根据请求类型进行操作处理:对计算资源进行标记;将计算资源执行请求以及从数据库中提取的计算节点配置信息发送给计算节点,并将计算节点返回的结果返回给客户端代理。
计算中心提供计算资源申请(ApplyResource)接口、计算资源执行(Compute)接口和计算资源释放(ReleaseResource)接口共三种调用接口。
计算节点(Compute Node),与计算中心交互,加载有应用软件服务端;用于接收计算中心发出的计算资源执行请求和计算节点配置信息,并根据计算节点配置信息自动获取应用软件服务端的路径,根据该路径调用应用软件服务端并将其返回给计算中心。
应用软件服务端,是应用软件中的核心功能模块,其加载在计算节点上;其用于实现应用软件的核心分析与计算功能;应用软件服务端包含一个或多个功能函数,并提供一个固定名称和参数的函数调用接口,用于计算节点在将应用软件服务端加载后,通过该接口发起对应用软件服务端的调用。本发明中,一个可被远程调用的应用软件服务端被称为一个计算资源。
身份与权限认证模块,与客户端代理交互,用于接收客户端代理发送的用户身份和软件使用权限信息,并根据数据库中存储的相应信息,对用户身份和软件使用权限进行验证,并将验证结果发送给客户端代理;
用户与服务管理模块,为用户提供用户注册、用户信息维护、应用软件服务购买的功能与界面;为系统管理员提供对用户和软件服务统一管理和配置的功能与界面,包括用户注册、用户信息维护、应用软件服务购买、用户管理、订单管理、支付管理、应用软件服务管理。
服务端的计算中心、身份与权限认证模块、用户与服务管理模块分别与数据库连接,服务端和客户端通过通信代理模块进行连接。
以上各模块之间的主要接口如下:
应用软件客户端-应用软件通信模块-客户端大厅接口:用于应用软件客户端与向客户端大厅进行通信,实现请求和请求返回结果在应用软件客户端和客户端大厅中的传递。通过命名管道实现。
客户端大厅-通信代理模块-客户端代理:用于客户端大厅向服务器端的客户端代理发起请求并获取服务器端的请求返回结果。通过远程服务接口调用实现。
客户端代理-计算中心:用于客户端代理向计算中心发送应用软件调用信息。通过远程服务接口调用实现。
计算中心-计算节点:用于计算中心向计算节点发送请求和传入数据,并获取计算节点对应用软件服务端处理后的传出数据。通过远程服务接口调用实现。
客户端代理-身份与权限认证模块:用于客户端代理获得用户身份认证信息和应用软件使用权限信息。通过远程服务接口调用实现。
在本发明的基于远程服务的软件保护系统中,通信代理模块与服务端的客户端代理、客户端代理与计算中心、计算中心与计算节点、客户端代理与身份与权限认证模块之间的采用面向服务的体系结构(Service-Oriented Architecture,SOA)架构设计,支持环境异构。
参见图2,本发明给出了一种基于远程服务的软件保护方法,包括以下三个步骤:
步骤1:申请计算资源。具体步骤如下:
步骤301:在用户操作应用软件时,触发应用软件客户端发起计算资源申请请求;
步骤302:应用软件客户端通过应用软件通信模块向客户端大厅发送计算资源申请请求,然后等待结果返回;
步骤303:客户端大厅收到计算资源申请请求后,通过通信代理模块将请求转发给服务端的客户端代理,然后等待结果返回;
步骤304:客户端代理收到计算资源申请请求后,向身份与权限认证模块请求验证该用户的身份与使用权限,如果客户端代理随后接收到该用户拥有使用软件服务端的权限,则执行步骤305,然后等待结果返回;否则,直接向客户端大厅返回该用户无权调用该软件服务端的错误信息;在该过程中,身份与权限认证模块将客户端代理提供的用户信息及使用权限信息与数据库中相应信息进行比对判断,并将判断结果返回给客户端代理;
步骤305:客户端代理将计算资源申请请求发至计算中心,然后等待结果返回;
步骤306:计算中心收到客户端代理发来的计算资源申请请求后,如果应用软件客户端发来的线程数未超出最大可用资源数则有足够计算资源可用,返回计算资源申请成功信息,并根据应用软件客户端发来的计算资源ID对相应的计算资源进行标记;否则,向客户端代理返回计算资源申请失败的错误信息,该错误信息被一路返回到应用软件客户端;
步骤307:应用软件客户端接收客户端大厅返回的结果,此时应用软件客户端进行判断,计算资源申请成功继续执行步骤2,否则,提示资源申请失败,计算资源申请调用过程结束;
步骤2:执行计算资源。具体步骤如下:
步骤401:应用软件客户端发起计算资源执行请求;
步骤402:应用软件客户端通过应用软件通信模块向客户端大厅发送计算资源执行请求,然后等待结果返回;
步骤403:客户端大厅收到计算资源执行请求后,通过通信代理模块将请求发送给服务端的客户端代理,然后等待结果返回;
步骤404:客户端代理收到计算资源执行请求后,根据缓存的使用权限信息判断,如果该用户有调用该应用软件服务端的权限,则将计算资源执行请求发至计算中心,然后等待结果返回;否则,直接向客户端大厅返回该用户无权调用该软件服务端的错误信息;
步骤405:计算中心收到计算资源执行请求后,根据缓存的计算节点配置信息选择计算节点,并将计算节点配置信息发送至计算节点;
步骤406:计算节点接收到计算节点配置信息后,根据计算节点配置信息自动获取应用软件服务端(即计算资源)的路径,并将应用软件客户端发来的输入数据利用被标记的应用软件服务端进行处理,并将处理结果作为输出数据返回给计算中心,计算中心将该处理结果返回给客户端代理,客户端代理再将结果返回给客户端大厅,客户端大厅最后将结果返回给应用软件客户端;
步骤407:应用软件客户端接收到处理结果后,应用软件客户端再根据自身流程对接收到的处理结果进一步处理,计算资源执行请求结束。
上述计算中心根据计算节点配置信息选择计算节点的方法包括随机选择法和优先级选择法,当有多个计算节点时,计算中心根据配置随机选取或根据优先级选取某一个计算节点。
步骤3:释放计算资源。具体步骤如下:
步骤501:应用软件客户端发起计算资源释放请求;
步骤502:应用软件客户端通过应用软件通信模块向客户端大厅发送计算资源释放请求,然后等待结果返回;
步骤503:客户端大厅收到计算资源释放请求后,通过通信代理模块将请求发送给服务端的客户端代理,然后等待结果返回;
步骤504:客户端代理收到计算资源释放请求后,根据缓存的使用权限信息判断,如果该用户拥有调用该应用软件服务端的权限,则将计算资源释放请求发至计算中心,然后等待结果返回;否则,直接向客户端大厅返回该用户无权调用该软件服务端的错误信息;
步骤505:计算中心收到计算资源释放请求后,对应用软件服务端(即计算资源)的标记取消,返回计算资源释放请求成功;计算中心将该结果返回给客户端代理,客户端代理再返回给客户端大厅,最后返回给应用软件客户端;
步骤506:应用软件客户端接收到返回结果,计算资源释放请求结束。
本发明中,应用软件通信模块提供了4个可供调用的接口,分别是计算资源申请请求(ApplyResource)接口、计算资源执行请求(Compute)接口、计算资源释放请求(ReleaseResource)接口、直接计算(DirectCompute)接口。其中,ApplyResource、Compute、ReleaseResource这三个接口必须按照顺序依次使用。而DirectCompute是其独立使用的快速调用接口。
(1)ApplyResource接口
计算资源申请接口,用于应用软件客户端发起远程调用前进行计算资源申请请求(即远程资源调用),格式如下:
STDMETHOD(ApplyResource)(
/*[in]*/const int iGlobalID,
/*[in]*/const int iThreadNum,
/*[out]*/int*pErrorCode,
/*[out]*/char*pErrorInfo
);
601:计算资源ID,标志将要申请的计算资源,计算资源ID是应用软件服务端的唯一标识ID,应用软件客户端的每次计算资源申请请求都必须携带对应的计算资源ID,占用4个字节。
602:线程数,标识将要申请的计算资源线程数,每一个计算资源都配置有供申请调用的线程资源数,只有当计算资源可供申请的线程数大于本次申请的线程数,计算资源申请请求才可成功,线程数占用4个字节。
603:错误代码,用来存储调用时发生的错误代码,占用4个字节。
604:错误信息,用来存储调用时发生错误时,返回的错误信息,占用256个字节。
(2)Compute接口
计算接口,用于应用软件客户端向应用软件服务端发起计算资源执行请求(即远程计算调用),接口格式如下:
701:计算资源ID,标志计算调用的计算资源ID,应用软件客户端的每一次调用必须携带需要请求调用的计算资源ID,占用4个字节。
702:函数ID,标识将要调用的计算资源中的函数ID,每一个计算资源中可包括多个函数ID,函数ID占用4个字节。
703:输入缓冲区,用于存储调用时需要的传入的输入数据,输入缓冲区最大为64*1024个字节。
704:输入缓冲区长度,标识输入缓冲区实际的长度,输入缓冲区长度占用4个字节。
705:输出缓冲区,用于存储调用返回时传出的输出数据,输出缓冲区最大为64*1024个字节。
706:输出缓冲区长度,标识输出缓冲区实际的长度,输出缓冲区长度占用4个字节。
707:错误代码,用来存储调用时发生的错误代码,占用4个字节。
708:错误信息,用来存储调用时发生错误时,返回的错误信息,占用256个字节。
(3)ReleaseResource接口
计算资源释放接口,用于应用软件客户端释放已经申请的计算资源,接口格式如下:
801:计算资源ID,标志将要释放的计算资源ID,应用软件客户端的每一次调用都必须携带需要请求调用的计算资源ID,占用4个字节。
802:错误代码,用来存储调用时发生的错误代码,占用4个字节。
803:错误信息,用来存储调用时发生错误时,返回的错误信息,占用256个字节。
(4)DirectCompute接口
直接计算接口,用于应用软件客户端直接向应用软件服务端的发起远程计算调用,而无需经过计算资源申请请求、计算资源计算请求、计算资源释放请求三个步骤,接口格式如下:
901:计算资源ID,标志计算调用的计算资源ID,应用软件客户端的每一次调用都必须携带需要请求调用的计算资源ID,占用4个字节。
902:函数ID,标识将要调用的计算资源中的函数ID,每一个计算资源中可包括多个函数ID,函数ID占用4个字节。
903:输入缓冲区,用于存储调用时需要的传入的输入数据,输入缓冲区最大为64*1024个字节。
904:输入缓冲区长度,标识输入缓冲区实际的长度,输入缓冲区长度占用4个字节。
905:输出缓冲区,用于存储调用返回时传出的输出数据,输出缓冲区最大为64*1024个字节。
906:输出缓冲区长度,标识输出缓冲区实际的长度,输出缓冲区长度占用4个字节。
907:错误代码,用来存储调用时发生的错误代码,占用4个字节。
908:错误信息,用来存储调用时发生错误时,返回的错误信息,占用256个字节;
本发明中,应用软件服务端包含一个或多个功能函数,并提供一个固定名称和参数的函数调用接口,用于计算节点在将应用软件服务端加载后,通过该固定接口发起对应用软件服务端的调用,接口参数如下:
1001:输入缓冲区,用于存储调用时需要的传入的输入数据,输入缓冲区最大为64*1024个字节。
1002:输入缓冲区长度,标识输入缓冲区实际的长度,输入缓冲区长度占用4个字节。
1003:输出缓冲区,用于存储调用返回时传出的输出数据,输出缓冲区最大为64*1024个字节。
1004:输出缓冲区长度,标识输出缓冲区实际的长度,输出缓冲区长度占用4个字节。
1005:函数ID,用于标示此次调用是针对该应用软件服务端所包含的哪个具体功能函数。