一种实现远端程序调用的方法和系统的制作方法

文档序号:7702335阅读:153来源:国知局
专利名称:一种实现远端程序调用的方法和系统的制作方法
技术领域
本发明涉及网络通信技术,特别是涉及一种实现远端程序调用的方法和系统。
背景技术
在网络分布式计算的环境下,运行在一台计算机上的程序需要调用运行在 另外一台计算机上的子程序,这个过程被称为远端程序调用。参见图1, 一般 发起调用的程序所在的计算机被称为客户端,而被调用的子远程所在的计算机 被称为服务器。
常见的程序都存在一类需要反复被调用且返回来的数据量会比较大的远端 程序。比如说 一个销售终端程序需要经常调用服务器上的商品库存情况查询 程序,以得到商品的库存信息。对于这类反复发生调用的远端程序,其程序运 行的时间已经很难降低,那么为了减少客户端获得最终调用结果的时间,提高 远端程序调用的效率,就必须降低从服务器到客户端的数据传输时间。
对于反复发生调用的远端程序,为了避免相同的数据在两台计算机间反复 传输,降低从服务器到客户端的数据传输时间, 一个有效的办法是在客户端做 一个缓存,把对远端程序的调用结果保存下来,如果下次还需要调用同样的远 端程序,就直接利用上次保存的结果,不用再重新从服务器下载相应的数据, 这样提高了程序的运行效率。但是这个做法存在弊端,那就是缓存的结果可能 已经过期,不能反映现实的情况了,比如上述商品库存情况查询程序,由于商 品库存是动态更新的,缓存中保持的结果经常会过期。因此对于有实时性要求 的远端程序,只采用简单的缓存是不能满足要求的。
为了避免客户端使用过期的数据,目前的解决方法是设置缓存数据的有
5效期限,客户端在把远端程序的调用结果放入到缓存时,给该调用结果设定一 个有效期限。当客户端需要调用远端程序时,直接査找该缓存,如果能够从缓 存中查找到调用结果,那么就根据设定的有效期限判断缓存的调用结果是否已 经过期,如果过期则重新从服务器中调用远端程序获取最新的数据,利用新的 调用结果更新缓存中的旧数据,并相应地重新设置有效期限。
然而,现有技术利用有效期限的方法还是会使客户端使用过期的数据。这 是因为,在客户端所设定的数据有效期限内,服务器上远端程序的数据很可能 己经发生了变化,而客户端只有过了数据有效期限后,才会重新下载并缓存最 新的调用结果数据,从而无法在根本上保证客户端使用有效的数据。
进一步的,对于现有技术利用有效期限的方法,在客户端所设定的有效期 限过后,服务器上远端程序的数据也有可能没有发生改变,但是客户端在有效 期限过了之后,就一定会重新从服务器上下载数据,从而使得客户端与服务器 之间执行了无谓的传输调用结果的操作,且客户端执行了无谓的更新缓存中调 用结果的操作,从而大大降低了业务性能。

发明内容
本发明提出了 一种实现远端程序调用的方法和系统,能够保证客户端使用 有效的数据。
为了达到上述目的,本发明的技术方案是这样实现的 一种实现远端程序调用的方法,该方法包括
客户端在预先设置的存储区中查找需调用的远端程序的调用结果; 如果査找到,则将所述远端程序的信息和预先根据校验算法计算出的该调 用结果的第一校验值发送给服务器;
服务器根据所述远端程序的信息本地调用远端程序,得到本地调用结果, 使用校验算法计算出本地调用结果的第二校验值,判断第二校验值与第一校验 值是否相同,如果相同,则向客户端返回未过期信息,客户端直接使用存储区
中查找到的调用结果;如果不同,则将本地调用结果返回给客户端,客户端使用服务器返回的调用结果。
较佳的,该方法进一步包括
如果所述客户端在存储区中未査找到所述调用结果,则从服务器上远程调 用所述远端程序,将服务器返回的调用结果保存在所述存储区中,并根据校验 算法计算出该调用结果的校验值,将该校验值保存在所述存储区中。
具体地,所述将调用结果和校验值保存在存储区中的步骤包括利用所述 远端程序的名称和调用参数进行指定的函数运算,得到索引值,以该索引值为 索引,将服务器返回的调用结果以及该调用结果的校验值保存在所述存储区中;
所述査找需调用的远端程序的调用结果的步骤包括利用需调用的远端程 序的名称和调用参数进行指定的函数运算,得到索引值,在存储区中查找与该 索引值为索引的调用结果。
具体地,所述向客户端返回未过期信息的步骤包括服务器向客户端返回 调用响应消息,将该消息中的数据过期标识的值设置为假,并设置该消息中有 效返回结果为空;
所述将本地调用结果返回给客户端的步骤包括服务器向客户端返回调用 响应消息,将该消息中的数据过期标识的值设置为真,并设置该消息中有效返 回结果为所述本地调用结果。
较佳的,在所述服务器将本地调用结果返回给客户端之后,进一步包括 所述客户端利用服务器返回的调用结果更新存储区中所述远端程序的调用结 果,并利用服务器返回的调用结果计算出校验值,利用该校验值更新存储区中 的第一校验值;
和/或,
所述校验算法为摘要算法。
一种客户端,该客户端包括应用程序模块、代理程序模块以及用于保存 各个远端程序调用结果的存储区;
应用程序模块,用于发起远端程序的调用请求,接收代理程序模块返回的 调用结果;代理程序模块,用于根据所述应用程序模块的请求,在存储区中査找需调 用的远端程序的调用结果,如果査找到,则将所述远端程序的信息和预先根据 校验算法计算出的该调用结果的第一校验值发送给服务器,在接收到服务器返 回的未过期信息时,直接将从存储区中査找到的调用结果返回给所述应用程序 模块;在接收到服务器返回的调用结果时,将服务器返回的调用结果返回给所 述应用程序模块。
较佳的,所述代理程序模块,进一步用于在存储区中未杳找到所述调用结 果时,向服务器发起远程调用所述远端程序的请求,将服务器返回的调用结果 保存在所述存储区中,并根据校验算法计算出该调用结果的校验值,将该校验 值保存在所述存储区中。
具体地,所述代理程序模块,进一步用于利用服务器返回的调用结果更新 存储区中所述远端程序的调用结果,利用服务器返回的调用结果计算出校验值,
利用该校验值更新存储区中的第一校验值; 和/或,
所述代理程序模块利用保存的摘要算法执行计算出调用结果的第一校验值 的处理。
一种服务器,该服务器包括
应用程序装置,根据代理程序装置的请求,本地调用远端程序,得到本地 调用结果,将该本地调用结果输出给代理程序装置;
代理程序装置,用于接收客户端发来的远端程序的信息和调用结果的第一 校验值,根据远端程序信息向应用程序装置发起远端程序的调用请求,计算出 应用程序装置输出的本地调用结果的第二校验值,判断第二校验值与第一校验 值是否相同,如果相同,则向客户端返回未过期信息,如果不同,则将本地调 用结果返回给客户端。
较佳的,所述代理程序装置利用保存的摘要算法执行计算出本地调用结果 的第二校验值的处理。
可见,本发明具有如下优点1、 对于反复发生调用的远端程序,本发明每一次在存储区中查找到调 用结果之后,都会由客户端和服务器分别根据自身的调用结果计算校验值, 如果校验值一致,则说明客户端中保持的调用结果与服务器中的一致,客户 端中的数据仍然是有效的,客户端直接利用保存的有效的调用结果即可,如 果校验值不一致,则说明客户端中保持的调用结果与服务器中的不一致,客 户端中的数据已经过期,此时再将服务器最新的有效调用结果返回给客户端 使用,这样,针对每一次客户端调用,都能从根本上保证客户端使用真实有 效的数据。
2、 在本发明中,如果服务器计算的校验值与客户端计算的校验值不一 致,则说明客户端中保持的调用结果与服务器中的不一致,客户端中的数据 已经过期,在此种情况下,本发明才会在客户端与服务器之间重新传输调用 结果,客户端才会更新存储区中的原调用结果,从而避免了现有技术中客户 端与服务器执行无谓操作的缺点,提高了业务性能。
3、 在本发明中,能够利用已经比较成熟的消息摘要技术来进行校验值 的计算,由于消息摘要技术只是利用算法对调用结果进行计算,对服务器侧 的远端程序本身没有任何改动和处理,比如,无需针对每一个可能会修改数
据的远端程序维护其版本记录信息,因此,减少了程序开发的工作量;对于 任意一种远端程序(即使该远端程序有多个数据来源),由于利用消息摘要 技术时只需用利用调用结果,而无需利用远端程序本身,因此对于任意类型 的远端程序(即使该远端程序里有了多个数据来源),也可以准确地判断出 客户端的数据是否过期,从而大大增加了本发明的适用范围。
4、 在本发明中,査找调用结果、计算比较校验值以及信息交互均由在 客户端和服务区侧设置的代理程序来分别完成,客户端和服务器中原有的应 用程序无需进行改动,从而降低了软件开发和维护难度。


图1是客户端/服务器模式的结构示意图;图2是本发明一个实施例中实现远端程序调用的流程图; 图3是本发明一个实施例中客户端的结构示意图; 图4是本发明一个实施例中服务器的结构示意图。
具体实施例方式
为了使本发明的目的、技术方案和优点更加清楚,下面结合附图和具体 实施例对本发明进行详细描述。
本发明提出了一种实现远端程序调用的方法,该方法包括客户端在预 先设置的存储区中查找需调用的远端程序的调用结果;如果查找到,则将所 述远端程序的信息和预先根据校验算法计算出的该调用结果的第一校验值 发送给服务器;服务器根据所述远端程序的信息本地调用远端程序,得到本 地调用结果,使用校验算法计算出本地调用结果的第二校验值,判断第二校 验值与第一校验值是否相同,如果相同,则向客户端返回未过期信息,客户 端直接使用存储区中查找到的调用结果;如果不同,则将本地调用结果返回 给客户端,客户端使用服务器返回的调用结果。
可见,对于反复发生调用的远端程序,本发明每一次在存储区中査找到 调用结果之后,都会由客户端和服务器分别根据自身的调用结果计算校验 值,如果校验值一致,则说明客户端中保持的调用结果与服务器中的一致, 客户端中的数据仍然是有效的,客户端直接利用保存的有效的调用结果即 可,如果校验值不一致,则说明客户端中保持的调用结果与服务器中的不一 致,客户端中的数据已经过期,此时再将服务器最新的有效调用结果返回给 客户端使用,这样,针对每一次客户端调用,都能从根本上保证客户端使用 真实有效的数据。
在本发明的具体实现中,校验算法可以选用任意一种常用的算法函数。 图2是本发明一个实施例中实现远端程序调用的流程图。参见图2,在
本发明的一个实施例中,实现远端程序调用的过程具体包括以下步骤-
步骤201:预先在客户端中创建用于存储各个远端程序的调用结果的存储区。
步骤202:当客户端需要调用一个远端程序(记为远端程序1)时,客 户端利用该远端程序1的名称和调用参数进行指定的函数运算,得到索引值 K。
步骤203:客户端在存储区中查找是否有以索引值K为索引的远端程序 调用结果,如果否,则执行步骤204,如果是,则执行步骤207。
这里,如果否,即没有査找到,则表示当前针对远端程序1的调用为首 次调用,客户端还没有保存其调用结果,因此,需要执行下述步骤204中的 实际调用过程。如果是,即查找到,则表示当前针对远端程序1的调用不是 首次调用,客户端已经保存了其调用结果,因此,需要执行下述步骤207及 后续相应过程来判断当前保存的调用结果是否仍然有效。
步骤204:客户端针对远端程序1执行现有的远端程序调用过程,得到 服务器返冋的远端程序1的调用结果。
步骤205:客户端利用预先设置的校验算法计算出该调用结果的校验值。
歩骤206:以步骤202中计算出的索引值K为索引,将远端程序l的调 用结果及该调用结果的校验值保存在存储区中,结束当前流程。
这里,以索引值K为索引保存远端程序1的调用结果及该调用结果的校 验值,是为了在后续再次调用远端程序1时,能够利用索引值K在存储区中 方便地查找到远端程序1的调用结果。
在以上的步骤中,是利用索引值来将调用结果和校验值保存在存储区 中,这样,后续查找时也是利用同样的索引值来进行查找。利用索引值存储 和查找只是本发明提供的 -种较佳实现方式,在实际的实现中,也BJ-以利用 其他方式进行存储和查找,比如,在存储区屮建立远端程序标识与调用结果 和校验值的对应关系,后续查找时,无需计算,直接利用远端程序标识査找 对应的调用结果。
歩骤207:客户端获取存储区屮以K为索引的调用结果的校验值(记为 校验值l),将远端程序l的信息和校验值l携带在远端程序调用请求中发送给服务器。
这里,远端程序1的信息包括远端程序1的标识和调用参数。 步骤208:服务器根据远端程序调用请求中的远端程序1的信息,本地 调用远端程序l,得到远端程序1的调用结果。
步骤209:服务器利用预先设置的校验算法计算出所得调用结果的校验
值(记为校验值2),判断校验值2与校验值1是否-致,如果是,则执行 步骤210,否则,执行步骤212。
需要说明的是,客户端和服务器所使用的校验算法是一致的,这样,如 果服务器侧的远端程序1的数据没有更新,也就是说,客户端保存的调用结 果没有过期,那么,客户端计算出的校验值1与服务器计算出的校验值2就 是一致的,如果服务器侧的远端程序l的数据已经更新,也就是说,客户端 保存的调用结果已经过期,那么,客户端计算出的校验值l与服务器计算出 的校验值2就不一致。可见,通过本步骤中校验值是否一致的处理,就可以 判断出客户端保存的调用结果是否过期。
步骤210:服务器将调用响应消息中的数据过期标识设置为假,并设置 该消息中有效返I"]结果为空,然后将该调用响应消息发送给客户端。
步骤211:客户端读取到调用响应消息中的数据过期标识为假,则直接
将在存储区中查找到的调用结果作为本次远端程序1的调用结果,结束当前 流程。
步骤212:服务器将调用响应消息中的数据过期标识设置为真,并设置
该消息中有效返回结果为步骤208中得到的调用结果,然后将该调用响应消 息发送给客户端。
歩骤213:客户端读取到调用响应消息屮的数据过期标识为真,则将调
用响应消息中携带的调用结果作为本次远端程序1的调用结果。
步骤214:客户端利用调用响应消息中携带的调用结果更新存储区中保
存的远端程序1的调用结果,同时根据校验算法计算出响应消息中携带的调 用结果的校验值,利用该校验值更新存储区中的校验值1。由于执行到本步骤时,客户端存储区中的远端程序1的调用结果已经过 期,因此,为了确保后续使用的调用结果的有效性,执行本步骤中利用服务 器发来的最新调用结果及相应的校验值更新存储区中的相应数据。
需要说明的是,在上述图2所示流程中使用的校验算法可以是任意一种 常用的能够保证输入值不同时输出值不同的算法函数。 一种优选的方式是利 用目前成熟的消息摘要技术中的摘要算法来作为校验算法。消息摘要 (Message Digest)技术是一种比较成熟的技术,其基本原理是利用一个散列 (Hash)函数,对给定的任意数据块进行运算,输出一个固定长度的比特串 (bit String)。 一般该数据块称为消息(Message), Hash函数输出的比特 串被称为该消息的消息摘要(Message Digest).如果两份数据具备同样的消 息摘要,就可以认定这两份数据是完全一致的。基于消息摘要技术的上述特 点,本发明就可以利用消息摘要技术中的摘耍算法来作为校验算法,计算出 用于判定客户端中缓存的数据是否过期的校验值。摘要算法具体可以举例为 MD5算法或SHA算法。
另外,本发明还提出了一种客户端,参见图3,该客户端包括应用程序 模块、代理程序模块以及用于保存各个远端程序调用结果的存储区;
应用程序模块,用于发起远端程序的调用请求,接收代理程序模块返回的 调用结果;
代理程序模块,用于根据所述应用程序模块的请求,在存储区中査找需调 用的远端程序的调用结果,如果查找到,则将所述远端程序的信息和预先根 据校验算法计算出的该调用结果的第一校验值发送给服务器,在接收到服务 器返回的未过期信息时,直接将从存储区中査找到的调用结果返回给所述应 用程序模块;在接收到服务器返回的调用结果时,将服务器返回的调用结果 返回给所述应用程序模块。
针对一个远端程序的首次调用的情况,所述代理程序模块,进一步用于 在存储区中未査找到所述调用结果时,向服务器发起远程调用所述远端程序 的请求,将服务器返回的调用结果保存在所述存储区中,并根据校验算法计
13算出该调用结果的校验值,将该校验值保存在所述存储区中。
较佳的,所述代理程序模块,进一步用于利用服务器返回的调用结果更
新存储区中所述远端程序的调用结果,利用服务器返回的调用结果计算出校
验值,利用该校验值更新存储区中的第一校验值。
在计算校验值时,所述代理程序模块具体利用保存的摘要算法执行计算出
调用结果的第一校验值的处理。
另外,本发明还提出了一种服务器,参见图4,该服务器包括 应用程序装置,根据代理程序装置的请求,本地调用远端程序,得到本
地调用结果,将该本地调用结果输出给代理程序装置;
代理程序装置,用于接收客户端发来的远端程序的信息和调用结果的第 一校验值,根据远端程序信息向应用程序装置发起远端程序的调用请求,计 算出应用程序装置输出的本地调用结果的第二校验值,判断第二校验值与第 一校验值是否相同,如果相同,则向客户端返回未过期信息,如果不同,则
将本地调用结果返回给客户端。
在计算校验值时,所述代理程序装置利用保存的摘要算法执行计算出本地 调用结果的第二校验值的处理。
利用以上描述的内容,还可以很容易得到本发明提出的调用远端程序的 系统,该系统中包括客户端和服务器,分别具有以上描述的客户端和服务器 的任意--种或多种的功能。
以上所述仅为本发明的较佳实施例而已,并不用以限制木发明,凡在本 发明的精祌和原则之内,所做的任何修改、等同替换、改进等,均应包含在 本发明保护的范围之内。
1权利要求
1、一种实现远端程序调用的方法,其特征在于,该方法包括客户端在预先设置的存储区中查找需调用的远端程序的调用结果;如果查找到,则将所述远端程序的信息和预先根据校验算法计算出的该调用结果的第一校验值发送给服务器;服务器根据所述远端程序的信息本地调用远端程序,得到本地调用结果,使用校验算法计算出本地调用结果的第二校验值,判断第二校验值与第一校验值是否相同,如果相同,则向客户端返回未过期信息,客户端直接使用存储区中查找到的调用结果;如果不同,则将本地调用结果返回给客户端,客户端使用服务器返回的调用结果。
2、 根据权利要求l所述的方法,其特征在于,该方法进一步包括如果所述客户端在存储区中未查找到所述调用结果,则从服务器上远程调用所述远端程序,将服务器返回的调用结果保存在所述存储区中,并根据校验算法计算出该调用结果的校验值,将该校验值保存在所述存储区中。
3、 根据权利要求2所述的方法,其特征在于,所述将调用结果和校验值保存在存储区中的步骤包括利用所述远端程序的名称和调用参数进行指定的函数运算,得到索引值,以该索引值为索引,将服务器返回的调用结果以及该调用结果的校验值保存在所述存储区中;所述查找需调用的远端程序的调用结果的步骤包括利用需调用的远端程序的名称和调用参数进行指定的函数运算,得到索引值,在存储区中查找与该索引值为索引的调用结果。
4、 根据权利要求l所述的方法,其特征在于,所述向客户端返回未过期信息的步骤包括服务器向客户端返回调用响应消息,将该消息中的数据过期标识的值设置为假,并设置该消息中有效返回结果为空;所述将本地调用结果返回给客户端的步骤包括服务器向客户端返回调用响应消息,将该消息中的数据过期标识的值设置为真,并设置该消息中有效返回结果为所述本地调用结果。
5、 根据权利要求1至4中任意一项所述的方法,其特征在于,在所述服务器将本地调用结果返回给客户端之后,进一步包括所述客户端利用服务器返回的调用结果更新存储区中所述远端程序的调用结果,并利用服务器返回的调用结果计算出校验值,利用该校验值更新存储区中的第一校验值;禾口/或,所述校验算法为摘要算法。
6、 种客户端,其特征在于,该客户端包括应用程序模块、代理程序模块以及用于保存各个远端程序调用结果的存储区;应用程序模块,用于发起远端程序的调用请求,接收代理程序模块返回的调用结果;代理程序模块,用于根据所述应用程序模块的请求,在存储区中査找需调用的远端程序的调用结果,如果查找到,则将所述远端程序的信息和预先根据校验算法计算出的该调用结果的第~校验值发送给服务器,在接收到服务器返回的未过期信息时,直接将从存储区中杳找到的调用结果返回给所述应用程序模块;在接收到服务器返回的调用结果时,将服务器返回的调用结果返回给所述应用程序模块。
7、 根据权利要求6所述的客户端,其特征在于,所述代理程序模块,进一步用于在存储区中未查找到所述调用结果时,向服务器发起远程调用所述远端程序的请求,将服务器返回的调用结果保存在所述存储区中,并根据校验算法计算出该调用结果的校验值,将该校验值保存在所述存储区中。
8、 根据权利要求6或7所述的客户端,其特征在于,所述代理程序模块,进一步用于利用服务器返回的调用结果更新存储区中所述远端程序的调用结果,利用服务器返回的调用结果计算出校验值,利用该校验值更新存储区中的第一校验值;禾口/或,所述代理程序模块利用保存的摘要算法执行计算出调用结果的第一校验值的处理。
9、 一种服务器,其特征在于,该服务器包括-应用程序装置,根据代理程序装置的请求,本地调用远端程序,得到本地调用结果,将该本地调用结果输出给代理程序装置;代理程序装置,用于接收客户端发来的远端程序的信息和调用结果的第一校验值,根据远端程序信息向应用程序装置发起远端程序的调用请求,计算出应用程序装置输出的本地调用结果的第二校验值,判断第二校验值与第一校验值是否相同,如果相同,则向客户端返回未过期信息,如果不同,则将本地调用结果返回给客户端。
10、 根据权利要求9所述的服务器,其特征在于,所述代理程序装置利用保存的摘要算法执行计算出本地调用结果的第二校验值的处理。
全文摘要
本发明公开了一种实现远端程序调用的方法,该方法包括客户端在预先设置的存储区中查找需调用的远端程序的调用结果;如果查找到,则将所述远端程序的信息和预先根据校验算法计算出的该调用结果的第一校验值发送给服务器;服务器根据所述远端程序的信息本地调用远端程序,得到本地调用结果,使用校验算法计算出本地调用结果的第二校验值,判断第二校验值与第一校验值是否相同,如果相同,则向客户端返回未过期信息,客户端直接使用存储区中查找到的调用结果;如果不同,则将本地调用结果返回给客户端,客户端使用服务器返回的调用结果。本发明能够保证客户端使用有效的数据。本发明还公开了一种实现远端程序调用的系统。
文档编号H04L29/08GK101673217SQ20091009152
公开日2010年3月17日 申请日期2009年8月26日 优先权日2009年8月26日
发明者剑 刘 申请人:用友软件股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1