分布式系统的接口调用方法和装置的制作方法

文档序号:7691758阅读:141来源:国知局
专利名称:分布式系统的接口调用方法和装置的制作方法
技术领域
本发明涉及通信技术领域,尤其涉及一种分布式系统的接口调用方法和装置。
背景技术
分布式系统能够使系统中的客户端像本地服务器一样使用远端服务,具 有增量扩展性、资源共享等优点。目前,分布式系统中大都通过接口描述语言(IDL: Interface Description Language )描述分布式系统中各组件之间的接 口 ,通过4妄口 ,调用与组件对应的方法(Function)以实现相应的功能。为了 支持组件升级,通常都在系统中为新升级的组件生成新的接口。由于现有技 术中在组件升级时,要生成与新组件对应的新接口,同时还需要使用IDL描 述所述新接口 。由于升级后的组件通常在具有新的功能的同时还继7 义了老的 功能,因此,与组件对应的该新接口除了继承了老的接口中原有的功能外同 时还赋予了新的功能。因此,现有的一种分布式系统的接口调用方法是新的 客户端调用新的接口,老的客户端调用老的接口。然而,在进行本发明创造过程中,发明人发现现有技术中至少存在如下 问题由于新增的接口是对原有老接口的功能的增强,因此,在使用IDL描述 新接口时,会导致调用时由于定义新接口的代码冗余而处理繁瑣,使得维护 不便。而且会使系统升级的工作量很大。发明内容本发明实施例的目的在于提供一种分布式系统的接口调用方法和装置, 采用该接口调用方法可避免分布式系统组件的联动升级,实现分布式系统组 件的轻量级升级。本发明实施例提供的一种分布式系统的接口调用方法,包括接收客户端发送的接口调用请求消息;判断所述接口调用请求消息中是否包含接口描述语言IDL默认参数的数 值,若不包含,则从预先存储的信息中获取所述IDL默认参数的默认值;使用所获取得IDL默认参数的默认值调用所述客户端请求的接口 。基于上述技术方案,本发明实施例还公开了一种用于分布式系统的接口 调用的装置,包括接收单元,用于接收客户端发送的接口调用请求消息;默认值获取单元,用于当所述接收单元中的接口调用请求消息中不包含 IDL默认参数的数值时,从预先存储的信息中获取所述IDL默认参数的默认 值;第一调用接口单元,用于使用所述默认值获取单元获取的IDL默认参数 的默认值调用所述客户端请求的接口 。与现有技术相比,本发明实施例具有以下优点本发明实施例由于能够根据接收的客户端的接口调用请求消息中是否包 含IDL默认参数的数值来执行相应的接口调用操作,这样,当服务器升级时, 无需升级所有的客户端,而对于老客户端,由于没有升级,因此发送的接口 调用请求消息中不会包含IDL默认参数的数值,此时,可从预存的信息中获 取IDL默认值来执行接口调用。可见,使用本发明公开的接口调用方法,能 够避免因服务器端升级而引起的整个分布式系统中所有组件的联动升级。


图1为本发明实施例分布式系统的接口调用方法流程示意框图;图2 (a)、 (b)、 (c)分别为本发明实施例分布式系统应用图1所示方法 的示意图;图3为一种本发明实施例分布式系统的接口调用装置结构示意框图; 图4为另 一种本发明实施例分布式系统的接口调用装置结构示意框图;图5为另 一种本发明实施例分布式系统的接口调用装置结构示意框图。
具体实施方式
下面结合附图对本发明实施例的具体实施方式
做进一步的详细阐述。 现有技术由于新增的接口是对原有老接口的功能的增强,因此,在使用IDL描述新接口时,为所述新接口定义的代码中需要存在大量定义的与老接 口相同的代码,因此,为新接口定义存在大量重复的代码,因此调用时由于 定义新接口的代码冗余而处理繁瑣,并且维护不便。而且,如果服务器端的 软件升级后,客户端的软件也要一起升级,这样客户端才能按照和服务器端 配套的约定方法调用接口。因此,现有技术会使系统升级的工作量很大。本发明实施例公开了 一种分布式系统的接口调用方法,该实施例采用IDL 定义接口,在升级后的接口定义IDL中增加对方法参数的默认值的识别,这 样,在收到客户端发送的接口调用请求消息时,能够根据接收的接口调用请 求消息中是否包含该IDL默认参数的数值来确定所述客户端是否为升级后的 新客户端。如图1所示,为本发明实施例一种分布式系统的接口调用方法流 程示意框图。S101:在使用IDL语言定义接口调用方法的程序时,为该程序中的方法 参数设置默认参数、以及该默认参数的默认值,并且还设置"可以为该默认参数指定除默认值外的其他it值"的属性。这样,对于升级后的新客户端在调用这个方法程序时,可以为该IDL默认参数设定一个默认值以外的其他数值。 例如,在doRequest方法的定义中,增加了一个参数默认值设置 interface IBaseSession { void doRequest(in TXCAPMessage req, in string address =",,); oneway void doResponse(in TXCAPMessage resp); oneway void close();oneway void doError (in short errorCode);};其中,"address ="为本发明实施例设置的默认参数,该默认参数的数值可 以为指定的默认值,或者还可以为客户端任意设置的一个数值。当为默认值 时,该默认参数的数值可以不添,此时则表示为默任值。其中,IDL编译器编译带有默认参数的IDL语言时,所述默认参数的默认 值可保存在服务器端的skeleton (IDL编译器生成的服务端骨架)中。S102:服务器端当收到客户端发送的接口调用请求消息后,从该接口调 用请求消息中读取每个IDL语言中默认参数的值,如果默认参数没有指定的 数值,则执行S103;否则,执行S106。S103:服务器端判断自身上的skeleton中是否保存有所述IDL默认参数 的默认值,如果没有,则执行S104;否则,执行S105。S104:调用失败,向客户端返回异常响应。S105:则说明该客户端为没有升级的老客户端,此时使用自身保存的所 述IDL默认参数的默认值来调用所述客户端请求使用的接口 ,来通过该4妄口 定义的功能实现相应的应用。S106:则说明该客户端为升级后的新的客户端,此时,4吏用所述接口调 用请求消息中该IDL默认参数的数值来调用该客户端请求使用的接口 。上述实施例中,由于在IDL中设置了默认参数和默认值,这样,当客户 端发送的接口调用请求消息中如果有IDL默认参数指定的数值时,则该客户 端为升级后的新客户端,此时,服务器端使用所述接口调用请求消息中指定 的数值调用相应的接口实现后续的操作;若接口调用请求消息中默认参数没 有指定的IDL默认值,那么该IDL默认参数的默认数值如果在服务器端有保 存,那么该客户端为未升级的老的客户端,此时,服务器端则使用默认数值 来调用需要的接口。可见,本发明通过识别IDL默认参数的数值来实现对新 客户端和老客户端的区分操作,避免了现有技术中因服务器端系统升级而引 起的客户端联动升级的问题,本发明在系统升级时,无需升级老客户端的程 序。因此,克服了系统组件的联动升级,使系统升级操作简单,方便维护, 实现了轻量级的组件升级。为方便理解,现举例说明分布式系统采用本发明实施例上述接口调用方法的具体应用,如图2所示,为本发明实施例图1方法的应用示意图。如果 升级前客户端A和客户端B、以及服务器端C都使用Fun (a, b)的方法调 用接口,例如图2(a)所示,客户端A发送的请求中包括Fun (1, 2),客户 端B发送的请求中包括Fun(3, 4)。服务器端C则根据客户端A的请求,使 用参数值为1和2来调用该方法的接口,同时,根据客户端B的请求,使用 参数值为3和4来调用该方法的接口 。当服务器端C升级,则在服务器端C上为该方法定义了默认参数c,以 及设置该默认参数c的默认数值为10,即Fun(a,b,c-lO)。如图2(b)所示, 如果客户端A发送的请求中包括Fun ( 1, 2),客户端B发送的请求中包括 Fun (3, 4),服务器端C在收到这些请求后,分别在这些请求中查询默认参 数的数值,由于客户端A和客户端B的请求中都没有指定所述默认参数c的 数值,那么说明这两个客户端都为没有升级的老客户端,此时服务器端C从 自身保存的信息中检索所述默认参数c的默认值,当检索到(即默认值为10 ) 后,则根据客户端A的请求,使用默认值10以及请求中的其他参数值1和2 来调用该方法接口;同时,根据客户端B的请求,使用该默认值10以及请求 中的其他参数值3和4来调用该方法接口 。如果客户端B也升级了 ,则客户端B在发送的请求中可以为默认参数c 设置指定的数值,例如图2(c)中,客户端B发送的请求中的为默认参数c 指定的数值为20,即Fun(3,4,20)。而客户端A由于没有升级,因此,在客户 端A发送的请求中没有默认参数c的数值,即仍然为Fun(1,2)。服务器端C 当收到这些请求后,分别在这些请求中查询默认参数c的数值,由于客户端A 的请求中没有指定所述默认参数c的数值,此时服务器端C则从自身保存的 信息中检索到所述默认参数c的默认值10,然后根据客户端A的请求,使用 该默认值10以及请求中的其他参数值1和2来调用该方法的接口;同时,根 据客户端B的请求,由于客户端B的请求中包含了为所述默认参数c指定的 数值20,则所述服务器端C使用该指定数值20以及该请求中的其他参数值3 和4来调用该方法的4^口 。基于上述技术方案,本发明实施例还公开了一种用于分布式系统的接口调用的装置,该装置可以集成在服务器端,采用IDL语言定义接口,所述装 置在升级后的接口定义IDL语言中增加对方法参数的默认值的识别,以便在 收到客户端发送的接口调用请求消息时,能够根据接口调用请求消息中是否 包含该默认参数的数值来判断客户端为升级后的新客户端,还是未升级的老 客户。如图3所示,为本发明实施例一种用于分布式系统的接口调用装置结构 示意框图。所述装置包括接收单元301、默认值获取单元302、第一调用接 口单元303,其中,接收单元301 ,用于接收由客户端发送的接口调用请求消息;默认值获取单元302,用于读取接收单元301中的接口调用请求消息中每 个IDL语言的默认参数数值,当所述接口调用请求消息中不包含IDL默认参 数的数值时,从预先存储的信息中获取所述IDL默认参数的默认值;其中, 所述述IDL默认参数的默认值可预先存储在该装置所在服务器端的skeleton 中。第一调用接口单元303,用于使用所述默认值获耳又单元302获取的IDL 默认参数的默认值调用所述客户端请求使用的接口 ,来通过该接口定义的功 能实现相应的应用。上述实施例中,由于在接口调用方法的IDL中设置了默认参数和该默认 参数的默认值,这样,当客户端发送的接口调用请求消息中如果IDL默认参 数没有指定的默认值,那么该客户端为未升级的老的客户端,此时,所述装 置可使用自身预存的默认值来调用接口。可见,本发明实施例通过识别接口 调用请求消息中IDL默认参数的数值来实现对新客户端和老客户端的区分操 作,避免了现有技术中因服务器端系统升级而引起的客户端联动升级的问题。 采用本发明实施例的接口调用方法可在系统升级时,无需升级老客户端的程 序。因此,克服了系统组件的联动升级,使系统升级#:作简单,方便维护, 实现了轻量级的组件升级。此外,在上述装置实施例的基础上,当接收单元301中的接口调用请求消息中包含有客户端为所述IDL默认参数指定的数值时,所述装置则可直接 使用所指定的数值调用接口。如图4所示,为本发明实施例另一种用于分布 式系统的接口调用装置结构示意框图。所述装置在图3所示装置实施例的基 础上,包括接收单元301、默认值获耳又单元302、第一调用接口单元303、 数值获取单元401、第二调用接口单元402,其中,接收单元301,用于接收由客户端发送的接口调用请求消息;默认值获取单元302,用于读取接收单元301中的接口调用请求消息中每 个IDL语言的默认参数数值,当所述接口调用请求消息中不包含IDL默认参 数的数值时,从预先存储的信息中获取所述IDL默认参数的默认值;其中, 所述述IDL默认参数的默认值可预先存储在该装置所在服务器端的skeleton 中。第一调用接口单元303,用于使用默认值获取单元302获取的IDL默认 参数的默认值调用所述客户端请求使用的接口 ,来通过该接口定义的功能实 现相应的应用。数值获取单元401,用于当接收单元301中的接口调用请求消息中包含 IDL默认参数的数值时,从所述接口调用请求消息中获取该IDL默认参数的 数值;第二调用接口单元402,用于使用数值获取单元401获取的IDL默认参 数的数值调用所述客户端请求的接口 ,来通过该接口定义的功能实现相应的 应用。此外,在上述图3所示的装置实施例的基础上,当预先存储的信息中没 有找到所述IDL默认参数的默认值时,所述装置可停止接口的调用。如图5 所示,为本发明实施例另 一种用于分布式系统的接口调用装置结构示意框图。所述装置在图3所示装置实施例的基础上,包括接收单元301、默认值获取 单元302、第一调用接口单元303、默认值判断执行单元501,其中,接收单元301,用于接收由客户端发送的接口调用请求消息。当接收单元 301中的接口调用请求消息中不包含IDL默认参数的数值时,由默认值判断执行单元501判断预先存储的信息中是否保存有所述IDL默认参数的默认值, 如果有,则指令默认值获取单元302执行获取功能;否则,向客户端返回异 常响应。默认值获取单元302用于当所述接口调用请求消息中不包含IDL默认参 数的数值时,从预先存储的信息中获取所述IDL默认参数的默认值。其中, 所述述IDL默认参数的默认值可预先存储在该装置所在服务器端的skeleton 中。第一调用接口单元303,用于使用默认值获取单元302获取的IDL默认 参数的默认值调用所述客户端请求使用的接口 ,来通过该接口定义的功能实 现相应的应用。此外,上述装置实施例中的默认值判断执行单元501除了应用在图3所 示装置实施例中外,还可以应用在图4所示的装置实施例中,其功能与图5 所示的相同,在此不再赘述。此外,在上述装置实施例的基础上,本发明实施例还公开了一种分布式 系统,该系统包括客户端和服务器,其中,所述服务器包括如上述图3或图4 所示实施例的用于分布式系统的接口调用装置,该装置的结构及功能都与上 述图3或图4所示装置实施例相同,在此不再赘述。上述实施例中,由于在接口调用方法的IDL中设置了默认参数和该默认 参数的默认值,这样,当客户端发送的接口调用请求消息中如果有默认参数 指定的数值时,则该客户端为升级后的新客户端,此时,服务器端使用所述 接口调用请求消息中指定的数值调用相应的接口实现后续的操作;若接口调 用请求消息中默认参数没有指定的默认值,那么该客户端为未升级的老的客 户端,如果该默认参数的默认值在服务器端有保存,服务器端则使用默认值 来调用需要的接口。可见,本发明实施例通过识别接口调用请求消息中默认 参数的数值来实现对新客户端和老客户端的区分操作,避免了现有技术中因 服务器端系统升级而引起的客户端联动升级的问题,使系统升级操作简单, 方便维护,实现了轻量级的组件升级。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或 者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络 单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例 方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以 理解并实施。通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发 明可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件, 但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等, 包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者以上所述的本发明实施方式,并不构成对本发明保护范围的限定。任何 在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本 发明的保护范围之内。
权利要求
1. 一种分布式系统的接口调用方法,其特征是,包括接收客户端发送的接口调用请求消息;判断所述接口调用请求消息中是否包含接口描述语言IDL默认参数的数值,若不包含,则从预先存储的信息中获取所述IDL默认参数的默认值;使用所获取得IDL默认参数的默认值调用所述客户端请求的接口。
2、 如权利要求1所述的分布式系统的接口调用方法,其特征是,若所述 接口调用请求消息中包含IDL默认参数的数值时,则从所述接口调用请求消 息中获取该IDL默认参数的数值,使用所述IDL默认参数的数值调用所述客 户端请求的接口。
3、 如权利要求1所述的分布式系统的接口调用方法,其特征是,在执行 所述获取所述IDL默认参数的默认值之前,还包括判断预先存储的信息中是否保存有所述IDL默认参数的默认值,如果有, 则执行所述获取所述IDL默认参数的默认值动作。
4、 如权利要求3所述的分布式系统的接口调用方法,其特征是,当预先 存储的信息中没有保存所述IDL默认参数的默认值时,向所述客户端返回异 常响应。
5、 一种用于分布式系统的接口调用的装置,其特征是,包括接收单元,用于接收客户端发送的接口调用请求消息;默认值获取单元,用于当所述接收单元中的接口调用请求消息中不包含 IDL默认参数的数值时,从预先存储的信息中获取所述IDL默认参数的默认 值;第 一调用接口单元,用于使用所述默认值获取单元获取的IDL默认参数 的默认值调用所述客户端请求的接口 。
6、 如权利要求5所述的接口调用的装置,其特征是,所述装置还包括 数值获取单元,用于当所述接收单元中的接口调用请求消息中包含IDL默认参数的数值时,从所述接口调用请求消息中获取该IDL默认参数的数值;第二调用接口单元,用于使用所述数值获取单元获取的IDL默认参数的 数值调用所述客户端请求的接口 。
7、 如权利要求5所述的接口调用的装置,其特征是,所述装置还包括默认值判断执行单元,用于判断预先存储的信息中是否保存有所述IDL 默认参数的默认值,如果有,则指令所述默认值获取单元执行所述获取功能, 否则,向所述客户端返回异常响应。
8、 一种分布式系统,其特征是,包括客户端、服务器,所述服务器包括接收单元,用于接收客户端发送的接口调用请求消息;默认值获取单元,用于当所述接收单元中的接口调用请求消息中不包含 IDL默认参数的数值时,从预先存储的信息中获取所述IDL默认参数的默认 值;第一调用接口单元,用于使用所述默认值获取单元获取的IDL默认参数 的默认值调用所述客户端请求的接口 。
9、 如权利要求8所述的系统,其特征是,所述服务器还包括数值获取单元,用于当所述接收单元中的接口调用请求消息中包含IDL 默认参数的数值时,从所述接口调用请求消息中获取该IDL默认参数的数值;第二调用接口单元,用于使用所述数值获取单元获取的IDL默认参数的 数值调用所述客户端请求的接口 。
10、 如权利要求8所述的系统,其特征是,所述服务器还包括默认值判断执行单元,用于判断预先存储的信息中是否保存有所述IDL 默认参数的默认值,如果有,则指令所述默认值获取单元执行所述获取功能, 否则,向所述客户端返回异常响应。
全文摘要
本发明实施例公开了一种分布式系统的接口调用方法,包括接收客户端发送的接口调用请求消息;判断所述接口调用请求消息中是否包含接口描述语言IDL默认参数的数值,若不包含,则从预先存储的信息中获取所述IDL默认参数的默认值;使用所获取得IDL默认参数的默认值调用所述客户端请求的接口。此外,本发明还公开了一种用于分布式系统的接口调用的装置。本发明对不包含IDL默认参数的数值的老客户端,使用预存的IDL默认值来调用接口,使系统升级后,仍然能够兼容未升级的老客户端,从而避免了因服务器端升级而引起的整个分布式系统中所有组件的联动升级,实现了轻量级的组件升级。
文档编号H04L29/08GK101277301SQ20081009464
公开日2008年10月1日 申请日期2008年4月24日 优先权日2008年4月24日
发明者李立达 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1