撤消现有功能的方法和用于修改现有协议功能的系统的制作方法

文档序号:6614322阅读:187来源:国知局
专利名称:撤消现有功能的方法和用于修改现有协议功能的系统的制作方法
技术领域
本发明涉及用于适配于基于演进标准的协议实现中的变化的方法、系统和计算机程序。具体地说,本发明涉及用于撤消(override)用于本地协议实现的 应用程序编程接口中所提供的现有功能(functionality )、以与使用提供与该本地 协议实现不同的功能的远程协议实现的应用程序进行相互操作的方法、系统和 计算机程序产品。
背景技术
当对多媒体环境中的演进协议进行后台(back-end)规范变化时,意味着实 施应用程序编程接口 (API)的服务器代码必须进行改变,以提供在后台中可用 的任何新函数(function)。然而,当协议持续变化时,试图通过客户端应用程序 来预测API的函数和用法是不可能的。必须频繁地提供新版本(release)使得客户 端能够利用新的函数,否则客户端不能利用新的函数。因此,需要当后台规范 改变时提供经济和有效的方法来对API进行改变,而不必太频繁地发布新的和 综合的版本,并且使得客户端能够利用已经被添加的任何新函数。而且,需要 提供机制用于克服与解释演进协议的其他供货商的设备的任何不兼容问题。

发明内容
在本发明的第 一 方面中,提供一种撤消在用于本地协议实现的应用程序编 程接口中所提供的现有功能的方法。该方法包括提供用于实施协议的本地协 议实现的应用程序编程接口,该应用程序编程接口具有原始接口函数,该原始 接口函数能够由客户端应用程序调用,以撤消在应用程序编程接口中所提供的 现有功能,以便与实施该协议的远程协议实现进行相互操作,该远程协议实现 支持与本地协议实现不同的功能。该方法还包括为原始接口函数定义预先形 成的有效负荷元素的数组(array),其要被包括来为从使用远程协议实现的服务 器应用程序请求协议服务而创建定制的协议请求消息,并且针对为创建定制的协议请求消息所定义的预先形成的有效负荷元素的数组中的每个元素导入(populate)数据。而且,该方法包括调用原始接口函数来撤消现有功能,其 中原始接口函数将所定义的预先形成的并且预先导入的有效负荷元素的数组作 为输入,并且通过在协议请求消息的协议消息报头之后顺序地插入预先形成的 有效负荷元素的数组来创建定制的协议请求消息,并且将定制的协议请求消息 发送到远程协议实现。该方法还包括将来自服务器应用程序的协议响应消息返 回给客户端应用程序,该协议响应消息包含格式化为另 一个预先形成的有效负 荷元素的数组的有效负荷数据。在实施方式中,提供给本地协议实现的应用程 序编程接口具有能够被客户端应用程序调用以发送请求协议服务的标准协议请 求消息的一个或多个预先定义的协议函数。该方法还包括调用一个或多个预 先定义的协议函数的预先定义的协议函数,该预先定义的协议函数具有要被传 递给被调用来创建标准协议请求消息的预先定义的协议函数的预先定义的参数 的列表。在实施方式中,调用预先定义的协议函数的步骤还包括将与预先定 义的参数的列表对应的数据加载到标准协议请求消息的预先定义的有效负荷元 素中,该预先定义的有效负荷元素与被传递到预先定义的协议函数的预先定义 的参数的列表对应。在实施方式中,在所创建的预先形成的有效负荷元素的数 组中的每个元素至少包括下列之一TLV(类型、长度、值)、AVP( Attribute Value Pair,属性值对)和定界文本串。在实施方式中,协议包括使用离散有效负荷元 素的任何协议。在实施方式中,协议包括直径协议(Diameter protocol )。
在本发明的另 一个方面中,提供用于修改用于客户端一侧协议实现的应用 程序编程接口中所提供的现有协议功能的系统。该系统包括实施协议的服务 器一側远程协议实现,将其配置为响应于接收到的协议请求消息提供协议服务; 和实施协-议的客户端一侧协议实现,其具有应用禾呈序编程4妄口 ,该应用程序编 程接口具有被配置来撤消在应用程序编程接口中所提供的现有协议功能的原始 接口函数,其中使用客户端一侧协议实现的用户端应用程序为原始接口函数定 义预先现成的有效负荷元素的数组,其要被包括来在服务器一侧远程协议实现 支持与客户端一侧协议实现不同的功能的情况下,创建用于从使用服务器一侧 远程协议实现的服务器一侧应用程序请求协议服务的定制的协议请求消息。在
实施方式中,客户端应用程序为所定义的预先形成的有效负荷元素的数组中的 每个元素导入数据,而且客户端应用程序调用原始接口函数,以修改在客户端 一侧协议实现的应用程序编程接口中所提供的现有协议功能。在实施方式中,将原始接口函数进一步配置为将所定义的预先形成的并且预先导入的有效负 荷元素的数组作为输入,并且通过在定制的协议请求消息的协议消息报头之后 顺序地插入预先形成的有效负荷元素的数组来创建定制的协议请求消息,并且 将定制的协议请求消息发送到使用服务器一侧远程协议实现的服务器一侧应用 程序。在实施方式中,将具有应用程序编程接口的客户端一侧协议实现配置为 接收调用在应用程序编程接口中所提供的预先定义的协议函数的函数引用 (flmction call ),该应用程序编程接口用于将标准协议请求消息发送到请求协议 服务的服务器一侧应用程序,而且其中将服务器一侧远程协议实现配置为将包 含被格式化为另一个预先形成的有效负荷元素的数组的有效负荷数据的协议响 应消息返回给客户端应用程序。在实施方式中,将应用程序编程接口配置为 将与预先定义的参数的列表对应的数据加载到标准协议请求消息的预先定义的 有效负荷元素中,该预先定义的有效负荷元素与传递到预先定义的协议函数的 预先定义的参数的列表对应。在实施方式中,在所创建的预先形成的有效负荷 元素的数组中的每个元素至少包括下列之一TLV(类型、长度、值)、AVP(属 性值对)和定界文本串。在实施方式中,协议包括使用离散有效负荷元素的任 何协议。
在本发明的再一个方面中,提供一种用于修改在用于本地协议X实现的应 用程序编程接口中所提供的功能的计算机程序产品。该计算机程序产品包括 计算机可读介质;提供用于实施协议X的本地协议X实现的应用程序接口的第 一程序指令,该应用程序编程接口具有原始接口函数,所述原始接口函数可以 由客户端应用程序调用来撤消在应用程序编程接口中所提供的现有功能,以与 实施协议X的远程协议X实现进行相互操作,该远程协议X实现支持与本地协 议X实现不同的功能。在实施方式中,第一程序指令还包括指令,该指令用于 将应用程序编程接口提供给具有可以由用户端应用程序调用来发送请求协议X 服务的标准协议X请求消息的一个或多个预先定义的协议X函数的本地协议X 实现,并且用于调用所提供的一个或多个预先定义的协议X函数的预先定义的 协议X函数,所述预先定义的协议X函数具有要被传递到被调用来创建标准协
中,第 一程序指令还包括用于将与预先定义的参数的列表对应的数据加载到标 准协议X请求消息的预先定义的有效负荷元素的指令,该预先定义的有效负荷 元素与传递到预先定义的协议X函数的预先定义的参数的列表对应。该计算机程序产品还包括第二程序指令,该指令用于为原始接口函数定义预先形成的有 效负荷元素的数组,该预先形成的有效负荷元素的数组要被包括来创建定制的 协议X请求消息,以从使用远程协议X实现的服务器应用程序请求协议X服务, 该第二指令包括用于为所定义的预先形成的有效负荷元素的数组中的每个元素 导入数据的指令。而且,该计算机程序产品还包括用于调用原始接口函数的第 三程序指令,其中该原始接口函数将所定义的预先形成并且预先导入的有效负荷元素的数组作为输入,并且通过在协议X请求消息的协议X消息报头之后顺序地插入预先形成的有效负荷元素的数组来创建定义的协议x请求消息,并且将定制的协议X请求消息发送到远程协议X实现。该计算机程序产品还包括用 于将来自服务器应用程序的协议X响应消息返回给客户端应用程序的第四程序 指令,该协议X响应消息包含被格式化为预先形成的有效负荷元素的另一个数组的有效负荷数据,将该第四程序指令存储在计算机可读介质上。在实施方式 中,在所创建的预先形成的有效负荷元素的数组中的每个元素至少包括下列之一TLV(类型、长度、值)、AVP (属性值对)和定界文本串。在实施方式中, 协议X包括使用离散有效负荷元素的任何协议。最好,第一、第二、第三和第四程序指令的每一个都被存储在计算机可读介质上。


合并其中并且形成本说明书一部分的附图示出了本发明的实施方式,并且和下面的描述一同用于解释本发明的原理。
图1示出了根据本发明实施方式的撤消或者修改在用于协议X实现的应用程序编程接口(API)中所提供的功能的流程图2示出了根据本发明实施方式的撤消或者修改在用于协议X实现的应用程序编程接口(API)中所提供的功能的流程图3A是示出根据本发明实施方式,客户端应用程序使用为本地协议X实现提供的应用程序编程接口(API)来访问使用远程协议X实现的协议X服务 的示意系统框图,其中本地协议X实现和远程协议X实现使用协议X进行通信;
图3B是示出根据本发明实施方式,调用用于协议X实现的应用程序编程接口中所提供的函数的协议消息的创建的示意系统框图;和
图4是示出根据本发明实施方式,用于修改在用于协议X实现的应用程序编程接口(API)中所提供的功能的计算机基础设施的实施方式的示意系统框图。
具体实施例方式
在整个说明书中,"一种实施方式"、"实施方式"或类似语言的参照表示在 本发明的至少一种实施方式中包括结合实施方式描述的具体特点、结构或者特征。因此,虽然不是必须的,但是在整个说明书中出现的"在一种实施方式中"、 "在实施方式中"和类似语言都是指相同的实施方式。
而且,可以在一种或多种实施方式中以适当的方式组合所描述的本发明的 特点、结构、或者特征。对本领域的技术人员很清楚,在不偏离本发明的精神 和范围的情况下,可以对本发明的进行各种修改和变型。因此,只要对本发明 的修改和变型在所附权利要求及其等效物的范围内,本发明就包括它们。现在将详细参照本发明的优选实施方式。
在一种实施方式中,本发明提供用于撤消或者修改在用于协议实现(而且, 这里也称为本地协议实现、本地协议X实现或者协议X实现)的应用程序编程接口 (API)中所提供的现有功能的方法,其中所实现的协议或者协议X是任何 基于标准的协议或者协议规范。将协议的功能内容提炼为API。将用于协议实现 的API实施为内部类(参数或者变量的集合)和方法或者函数的组,这些内部 类和方法或者函数可以由引用应用程序(calling application)或者客户端一侧应 用程序或者客户端应用程序调用来创建分组或者消息格式和内容,如下面要参 照图3A和3B所解释的那样。协议实现导出(export) API,以便其他客户端应 用程序或者引用应用程序可以使用协议实现。现在参照图1和图2,它们示出了 撤消或者修改用于协议实现的应用程序编程接口中所提供的现有功能的方法的 各个方面。转到图1,附图标记100概述了由最终用户执行的方法或者过程,例 如,客户端应用程序或者客户端应用程序客户端一侧应用程序或者引用应用程 序的程序员在步骤101中,使用提供给本地协议实现来访问或者引用一个或多 个应用程序(即,提供服务给请求的服务器一侧应用程序)的应用程序编程接 口,其中该应用程序编程接口具有原始接口函数。具体地说,客户端应用程序 引用服务器应用程序或者服务器一侧应用程序来请求协议服务,其中服务器一 側或者服务器应用程序使用安装在服务器(远程服务器或者本地服务器)上的 远程服务器协议实现(这里也被称为远程协议X实现、远程协议实现或者远程 服务器协议实现)。如在这里所使用的那样,"协议实现"或者"本地协议实现" 或者"协议X实现"指的是通过引用或者客户端或者客户端一侧应用程序而实施的协议实现的使用,而"远程协议实现"或者"远程服务器协议实现"或者 "远程协议X实现"指的是由服务器或者服务器一侧应用程序实施的协议实现, 比如正在提供协议服务的另一方或者服务提供商(服务器一侧应用程序),其中 术语"远程"仅仅表示可以位于相同机器或者不同机器上的分离的程序或者过 程。由于在由引用应用程序所使用的本地协议实现和由服务器应用程序(或者 服务器一侧应用程序)所使用的远程服务器协议实现(或者远程协议实现)之 间可能存在差异,所以这可能在调用协议函数时导致由于不一致性或者不兼容 性问题引起的错误。因此,流程图100概述了用于克服由服务器或者服务器一 侧应用使用来向利用本地协议实现的客户端应用程序提供协议服务的远程协议 实现所导致的任何这种不一致性或者不兼容性的步骤。该过程以步骤102开始, 其中准备要由客户端应用程序或者引用应用程序发送来请求协议服务的数据。具体地说,客户端应用程序(经由API引用)进行请求,并且使用安装在客户 端一侧上的本地协议实现来发送数据。在步骤104中,进行关于用于远程服务 器协议实现的协议规范版本是否与用于该协议的本地协议实现的协议规范版本 匹配的确定。例如,用于远程服务器协议实现的协议规范版本可能是3.2,而用 于本地协议实现的协议规范版本可能是3.1,其中协议规范版本3.2比3.1新。 如果在步骤104中用于远程协议实现的协议规范版本与用于本地协议实现的协 议规范版本匹配,则在步骤106中进行关于远程服务器协议实现是否与本地协 议实现匹配的确定。具体地说,进行关于在能够被引用应用程序调用的实际协 议函数之外在是否存任何功能不一致性的确定。功能不一致性可以是非常细微 的,比如使得本地和远程协议实施不兼容的协议规范要求的不同解释。或者, 它可以是超出仅仅被实施在远程协议实现中的协议规范的扩展。或者,它可以 是本地或者远程协议实现中的错误。如果在步骤106中用于远程服务器协议实 现的协议规范版本与用于本地协议实现的协议规范版本匹配,则在步骤108中 进行关于远程服务器协议实现是否具有与由用于本地协议实现的API所配备的 功能匹配的功能的确定。在步骤108,如果确定在远程服务器协议实现中所提供 的协议功能与由用于本地协议实现的API所配备的功能匹配,则客户端应用程 序或者引用应用程序在步骤116中使用在用于本地协议实现的应用程序编程接 口 (API)中所提供的协议函数或者函数来请求协议服务,并且在步骤120中调 用协议函数或者函数。在实施方式中,为本地协议实现提供的API在能够在步 骤116中被客户端应用程序使用进行调用的原始接口函数之外还具有一个或多个预先定义的协议函数,在步骤120中,调用一个或多个预先定义的协议函数 来发送请求协议服务的标准协议请求消息。而且,每个预先定义的协议函数具 有要被传递给被调用来创建标准协议请求消息的预先定义的协议函数的预先定 义的参数的列表。因此,调用预先定义的协议函数,将与预先定义的参数的列
表对应的数据(步骤102)载入到预先定义的有效负荷元素中,以创建标准协议
要求消息。
将用于协议实现的API实施为能够由引用应用程序或者客户端一侧应用程 序或者客户端应用程序调用的内部类和方法或者函数的组。用于协议实现的API 包括将由引用应用程序通过函数或者API引用而调用的带有参数的预先定义的 协议函数的列表。这些预先定义的协议函数被设计来基于协议规范创建分组或 者消息格式和内容。每个预先定义的协议函数(基于协议规范)转换为承载预 先定义的参数信息作为它们有效负荷(分组的主体部分)的一部分的一个或多 个分组或者消息。当由引用应用程序调用或者引用预先定义的函数或者API的 方法之一时,执行该代码并且将lt据作为参数传递给所引用的预先定义的函数 或者方法。使用预先定义的参数来建造标准协议消息或者分组的有效负荷元素 (组成有效负荷或者主体部分的元素),其中每个有效负荷元素承载实际的值或 者数据。构建标准协议消息或者分组并且将它们发送到接收或者远程协议实现。 因此,当调用在用于协议实现的API中所提供的预先定义的函数时,将有效负 荷格式化以便将参数1的值放入到有效负荷元素1的值区域中,将参数2的值 放入到有效负荷元素2的值区域中等等,如关于图3B进一步描述的那样。因此, 当引用应用程序调用API中的预先定义的函数时,引用应用程序穿过该API传 递该数据,并且将该数据插入到与预先定义的参数对应的有效负荷元素中,以 创建被发送到在提供协议服务的服务器上的远程或者接收协议实现的标准协议 消息。
然而,返回到步骤104,如果确定用于远程服务器协议实现的协议规范版本 与用于协议的本地协议实现的协议规范版本不匹配,则在步骤110中,使用用 于本地协议实现的应用程序编程接口 (API)中所提供的原始接口函数或者方法 来克服本地协议实现和远程服务器协议实现之间的任何版本不匹配。进一步, 返回到步骤106,如果确定在远程服务器协议实现和本地协议实现之间存在(除 了协议函数之外的)功能不一致性,则在步骤112中,使用用于本地协议实现 的应用程序编程接口中所提供的原始接口函数或者方法,来克服本地协议实现
和远程服务器协议实现之间的任何不一致性。而且,返回到步骤108,如果确定由远程服务器协议实现所提供的协议功能与用于本地协议实现的API所配备的 功能不匹配,例如,已经将新函数添加到远程协议实现中,则在步骤112中, 在步骤114中使用用于本地协议实现的应用程序编程接口中所提供的原始接口 函数或者方法,来撤消或者修改或者添加新协议功能,其可以由客户端应用程 序在步骤120中进行调用,以发送定制的协议请求消息,也就是说,如下面在 图2中进一步描述的那样,为客户端应用程序来设计或者创建用于请求协议服 务的请求消息,结束该过程。
转到图2 ,附图标记200该述了撤消或者修改在用于协议实现的应用程序编 程接口 (API)中所提供的现有功能(例如,在图1的步骤114中),以请求使 用远程协议实现的服务器一侧应用程序所提供的协议服务的方法。如图2所示, 撤消或者修改在API中所提供的现有功能的方法开始于步骤202,提供具有包括 原始接口函数的API的协议实现,该原始接口函数可以由客户端或者引用应用 程序来调用,以撤消在API中所提供的现有功能,从而与远程协议实现进行相 互操作,该远程协议实现支持与本地协议实现不同的功能。该方法还包括在 步骤204中,为原始接口函数定义预先形成的有效负荷元素的数组,该预先形 成的有效负荷元素的数组要被包括来创建用于从使用远程协议实现的服务器一 侧应用程序请求协议服务的定制的协议请求消息。而且,该方法包括在步骤 206中,导入为创建定制的协议请求消息而定义的预先形成的有效负荷元素的数 组中的每个元素的数据,如将在下面参照图3B描述的那样。而且,该方法还包 括在步骤208,调用将所定义的预先形成并且预先导入的有效负荷元素的数组 作为输入的原始接口函数,并且在步骤210中,通过在协议请求消息的协议消 息报头之后顺序地插入预先形成的有效负荷元素的数组,来创建定制的协议请 求消息。而且,该方法还包括在步骤212中,将定制的协议请求消息发送给 使用远程协议实现的服务器一侧应用程序。该方法还包括在步骤214中,从 服务器一側应用程序接收协议响应消息,该协议响应消息包含被格式化为预先 形成的有效负荷元素的另一个数组的有效负荷数据,结束该过程。在实施方式 中,在所创建的预先形成的有效负荷元素的数组中的每个元素包括下面类型中 的任何一个TLV (类型、长度、值)、AVP (属性值对)和定界文本串。在实 施方式中,协议包括使用离散有效负荷元素的任何协议。在实施方式中,协议 或者协议X包括被配置来将验证、授权和计费(accounting)的协议服务提供给引用或者客户端应用程序的直径(Diameter)协议。然而,能够与使用离散有效负 荷元素来提供其他协议服务的其他协议一起来使用本方法。
因此,当改变协议规范以添加新的功能时,例如,添加附加有效负荷元素, 一般地,升级远程协议实现以支持新的有效负荷元素。具体地说,由远程协议X 实现来检查针对新功能而需要的新的或者不同的有效负荷元素,并且依照其进 行动作。因此,使用用于本地协议实现的API的引用应用程序在没有API协议 实施所提供的原始接口函数的情况下,不能使用新功能。然而,使用原始接口 函数,如果引用应用程序想要利用新功能,该引用应用程序的程序员可以继续 进行并且撤消在API中提供的现有功能,如上面参照图2所描述并且下面参照 图3B进一步描述的那样。
在另 一个实施方式中,如图3A和3B所示,本发明提供用于修改在用于协 议实现或者协议X实现(或者本地协议或者协议X实现)的应用程序编程接口(API)中所提供的现有协议功能的系统300A,其中协议或者协议X包括使用 离散有效负荷或者数据元素的任何协议。该系统包括远程协议X实现310 (也 称为服务器一侧远程协议X实现),其被配置来响应于从客户端或者引用应用程 序302接收的协议X请求消息(将在下面参照图3B进行描迷),提供协议服务(由双箭头308表示)。进一步,系统300A包括本地协议X实现306 (也称为 客户端一侧协议或者协议X实现),其提供具有被配置来撤消在应用程序编程接 口 304中所提供的现有协议功能的原始接口函数的应用程序编程接口 (由双箭 头304表示)。所以,如果例如远程协_汉X实现310支持与本地协议X实现306 不同的功能,例如,提供更新的功能,则在API304中提供的原始接口函数可以 被客户端一侧的程序员用来修改现有函数和/或创建可以被引用应用程序302调 用的新函数。具体地说,客户端或者引用应用程序302使用本地协议X实现306 来请求协议服务308,从而为原始接口函数定义预先形成的有效负荷元素的数 组,该预先形成的有效负荷元素的数组要被包括来创建从使用远程协议X实现 或者服务器一側远程协议实现310的服务器一侧应用程序请求协议服务308的 定制的协议请求消息。在实施方式中,客户端或者引用应用程序302为所定义 的预先形成的有效负荷元素的数组中的每个元素导入数据,而且客户端应用程 序302调用原始接口函数来修改在本地协议X实现或者客户端一侧协议实现306 的应用程序编程接口 304中所提供的现有协议功能。在实施方式中,将原始接口函数进一步配置来将所定义的预先形成并且预先导入的有效负荷元素的数组
作为输入,并且通过在定制的协议请求消息的协议消息报头312 (在图3B中的 有效负荷部分320中)之后顺序地插入预先形成的有效负荷元素的数组来创建 定制的协议请求消息300B,并且将该定制的协议请求消息发送到使用服务器一 侧远程协议实现或者远程协议X实现310的服务器一侧应用程序。
在实施方式中,将提供应用程序编程接口 304的客户端一侧协议实现或者 本地协议X实现306配置为接收函数引用或者API引用,该函数引用或者API 引用调用用于将标准协议请求消息发送到请求协议X服务的服务器一侧应用程 序的应用程序编程接口中所提供的预先定义的协议函数。必须将执行函数所需 要的所有关键信息包括在该函数或者API引用中。而且,将服务器一侧远程协 议实现或者远程协议X实现310配置为将协议响应消息308返回给客户端应用 程序302,该协议响应消息308包含被格式化为预先形成的有效负荷元素的另一 个数组的有效负荷数据。在实施方式中,将应用程序编程接口 304进一步配置 为将与预先定义的参数的列表对应的数据加载到标准协议请求消息的预先定义 的有效负荷元素中,其中预先定义的有效负荷元素与被传递到预先定义的协议 函数的预先定义的参数的列表对应。在实施方式中,在所创建的预先形成的有 效负荷元素的数组中的每个元素至少包括下面之一TLV(类型、长度、值)、 AVP (属性值对)和定界文本串。在实施方式中,协议X包括使用离散负荷元 素的任何协议。在实施方式中,协议或者协议X包括被配置来将验证、授权和 计费的协议服务提供给引用或者客户端应用程序的直径协议。
转到图3B,附图标记300B表示当调用在用于协议实现的API中所提供的 函数时创建的协议分组或消息。例如,引用应用程序使用API中所谓 getUserCredit(获得用户信用)的预先定义的函数,其中预先定义的getUserCredit 函数具有两个预先定义的参数,User-Name(用户名)和User-Realm。因此,当引 用应用程序调用API实现的getUserCredit函数时,getUserCredit函数创建具有 包括两个有效负荷元素(即,User-Name元素和User-Realm元素)的有效负荷 格式的协议请求分组或者消息。具体地说,getUserCredit函数为预先定义的参数 User-Name取值或者数据,并将其放入到有效负荷的预先定义的有效负荷元素 User-Name中,并且为预先定义的参数User-Realm取值或者数据 (reakn_xyz.com),并将其放入到预先定义的元素User-Realm中,然后将该消 息发送到服务器上的远程协议实现。远程协议实现接收该消息,并且将结果或 者响应数据(例如,$10)作为来自服务器应用程序的响应分组的有效负荷中的
元素(例如,在Account-Value(帐户值)元素中)返回给引用应用程序。如图3B 所示,协议请求或者消息300B包含消息报头部分312和有效负荷部分320,根 据针对给定函数定义了多少参数,有效负荷部分320包括分别以附图标记314、 316到318表示的一个或多个预先定义的有效负荷元素1、 2到N。在上面的例 子中,由于函数getUserCredit具有两个参数,所创建的消息将具有两个预先定 义的有效负荷元素,User-Name和User-Realm,而且因此,将与User-Name参 数对应的值或者数据插入到有效负荷部分320的由附图标记314表示的有效负 荷元素1中。类似地,将用于User-Realm参数的值或者数据插入到有效负荷部 分320的由附图标记316表示的有效负荷元素2中。而且,如杲已经改变了远 程协议实现,例如,getUserCredit函数现在包括附加的有效负荷元素,Account-ID 元素,也就是说,getUserCredit函数现在具有三个参数,User-Name、 User-Realm 和Account-ID,则远程协议实现现在期待带有与这三个元素(即,User-Name 元素、User-Realm元素和Account-ID元素)对应的有效负荷或者lt据格式的分 组或者消息格式,替代于只接收带有与User-Name元素和User-Realm元素对应 的数据的分组。因此,使用用于协议实现(而没有原始接口函数)的API的引 用应用程序将不能与服务器的应用程序进行通信。然而,使用具有原始接口函 数的API,程序员能够撤消或者修改在本地协议实现中的现有getUserCredit函 数,以发送定制的请求,但是需要知道已经将附加的参数添加到了远程协议实 现中的函数getUserCredit中,和远程协议实现正在期待与三个有效负荷元素(即, User-Name元素、User-Realm元素和Account-ID元素)对应的数据的协议分组 的格式。因此,如果引用应用程序想要调用现在具有Accoimt-ID元素的 getUserCredit,则程序员需要创建User-Name元素(Joe)、 User-Realm元素 (realm_xyz.com)和Account-ID元素(00123),并且需要插入对应数据(分别 是Joe、 realm—xyz.com和00123 ),以预先导入所创建的每个元素。进一步,程 序员还需要知道在远程协议实现所期待的协议消息中的每个有效负荷元素的确 切格式(例如,TLV、 AVP格式或者定界文本串等)。因此,程序员会定义将会 被用来创建定制的协议请求消息的有效负荷320 (在图3B中)的这三个预先形 成的有效负荷或者数据元素的数组。例如,如果用于远程协议实现中的元素的 格式使用TLV(类型、长度、值)格式,则程序员会在调用原始接口函数之前 定义预先形成的有效负荷元素的可变长度数组如下[User-Name, length, "Joe,,][ User-Realm, length, "realm一xyz.com"][ Account-ID, length, "00123"]。因此,在元素(User-Name )和在由引用应用程序调用时被传递给原始接口函数的数据 或者值(Joe)之间有预先存在或者预先形成的匹配。具体地说,将预先形成的
从而,将预先形成的有效负荷元素的数组插入到被发送到远程协议实现的定制的 协议请求消息的有效负荷中。所以,在API具有原始接口函数的情况下,应用 程序开发者不仅提供要被传递到函数的数据,而且还定义组成分组格式的元素。 在另一个实施方式中,本发明提供计算机程序产品,其用于修改或者撤消 在用于协议X实现的应用程序编程接口中所提供的功能。最好,计算机程序产 品是能够从计算机可用或者计算机可读介质存取的形式,该介质提供程序代码 或者指令由计算机或者任何指令执行系统使用或者与它们结合。为了本说明书 的目的,计算机可用或者计算机可读介质可以是能够包含、存储、通信、传播 或者传输由指令执行系统、设备或者装置使用或者与其结合的代码或者指令的 任何设备。最好,介质包括电子、磁、光、电磁、红外或者半导体系统(或者 设备或者装置)或者传播介质。更优选地,计算机可读介质可以包括半导体或 者固态存储器、磁带、可拆卸计算机磁盘、随机存取存储器(RAM)、只读存储 器(ROM)、硬磁盘和光盘。进一步,光盘的例子包括致密盘_只读存储器 (CD-ROM )、致密盘-读/写(CD-R/W)和数字多功能/视频盘(DVD )。本发 明可以采用完全硬件实施方式、完全软件实施方式或者包含硬件和软件元件两 者的实施方式的形式。在优选实施方式中,本发明以软件实施,其包括单不限 于固件、驻留软件、微代码等。
计算机程序产品还包括用于提供用于实施协议X的本地协议X实现的应 用程序编程接口的第一程序指令;具有原始接口函数的应用程序编程接口,所 述原始接口函数可以由客户端应用程序调用来撤消在应用程序编程接口中所提 供的现有功能,以与实施协议X的远程协议X实现进行相互操作;远程协议X 实现支持与本地协议X实现不同的功能。在实施方式中,第一程序指令还包括 指令,该指令用于将应用程序编程接口提供给具有可以由用户端应用程序调用 来发送请求协议X服务的标准协议X请求消息的一个或多个预先定义的协议X 函数的本地协议X实现,并且用于调用所提供的一个或多个预先定义的协议X 函数的预先定义的协议X函数,所述预先定义的协议X函数具有要被传递到被 调用来创建标准协议X请求消息的预先定义的协议X函数的预先定义的参数的 列表。在实施方式中,第一程序指令还包括用于将与预先定义的参数的列表对应的数据加载到标准协议X请求消息的预先定义的有效负荷元素的指令,该预 先定义的有效负荷元素与传递到预先定义的协议X函数的预先定义的参数的列 表对应。该计算机程序产品还包括第二程序指令,该指令用于为原始接口函数 定义预先形成的有效负荷元素的数组,该预先形成的有效负荷元素的数组要被
包括来创建定制的协议x请求消息,以从使用远程协议x实现的服务器应用程
序请求协议X,该第二指令包括用于为所定义的预先形成的有效负荷元素的数
组中的每个元素导入数据的指令。而且,该计算机产品还包括用于调用原始接 口函数的第三程序指令,其中该原始接口函数将所定义的预先形成并且预先导
入的有效负荷元素的数组作为输入,并且通过在协议X请求消息的协议X消息 报头之后顺序地插入预先形成的有效负荷元素的数组,来创建定义的协议X请
求消息,并且将定制的协议x请求消息发送到远程协议x实现。该计算机产品 还包括用于将来自服务器应用程序的协议x响应消息返回给客户端应用程序的
第四程序指令,该协议X响应消息包含^皮格式化为预先形成的有效负荷元素的
另一个数组的有效负荷数据,将该第四程序指令存储在计算机可读介质上。在 实施方式中,在所创建的预先形成的有效负荷元素的数组中的每个元素至少包
括下列之一TLV (类型、长度、值)、AVP (属性值对)和定界文本串。在实 施方式中,协议X包括使用离散有效负荷元素的任何协议。最好,第一、第二、 第三和第四程序指令的每一个都被存储在计算机可读介质上。
现在参照图4,其中示出了用于修改在用于本地协议X实现的应用程序编 程接口中所提供的功能的系统400。如所示的那样,系统400包括计算机基础设 施402,其试图代表被维护在安全环境(即,针对其加强访问控制)中的任何类 型的计算机架构。如所示的那样,基础设施402包括通常表示服务器等的计算 机系统404。然而应该理解,虽然没有示出,但是在基础设施402中可以包括其 他硬件和软件部件(例如,诸如应用程序服务器、管理服务器、路由器、防火 墙之类的附加计算机系统)。
通常,客户端,即客户端或者引用应用程序(例如,附图标记"0表示的 客户端1到附图标记432表示的客户端N),可以与基础设施402接口 ,以访问 在计算机系统404上安装的本地协议X实现414的应用程序编程接口 ( API M16 中所提供的功能。具体地说,当已经修改和/或升级了远程协议X实现440时, 用于本地协议X实现414的API 416提供用于修改或者撤消现有功能的原始接 口函数。因此,针对任何客户端1 (由附图标记430表示)到客户端N (432)
的程序员可以与基础设施402接口 ,以存取和/或修改在用于本地协议X实现414 的API416中所提供的现有功能,使得客户端或者客户端应用程序可以获得由使 用用于远程协议X实现440的API的另 一个应用程序提供的服务,该远程协议X实现440可能与本地协议X实现414不同。类似地,管理员442可以与基础设施402接口,以支持和/或配置基础设施402,因此,在添加功能等的时候升 级远程协议X实现440。通常,各方可以直接或者经由被加载于计算机化的设备(例如,个人计算机、膝上计算机、手持设备等)的接口 (例如,客户端网 络浏览器)、通过网络来访问基础设施402。在后一种情况中,网络可以是诸如因特网之类的任何类型的网络,或者可以是诸如局域网(LAN)、广域网(WAN)、 虚拟私用网络(VPN)之类的任何其他网络。在任何情况中,可以经由直接的硬件连接(例如,串行端口),或者经由能够利用有线线路和/或无线传输方法的任何组合的可寻址连接,发生与基础设施402的通信。而且,可以使用诸如Token Ring、以太网、WiFi或其他传统通信标准之类的传统网络连接。而且,可以由传统基于TCP/IP套接字的协议提供连接。在这样的例子中,各方可以利用因特网服务提供商来建立到基础设施402的连接。应该理解,在本发明的情况下, 基础设施402可以由诸如提供商444之类的一方或者由独立实体拥有和/或运营。 无论如何,可以基于定购或者交费,将基础设施402的使用和这里所描述的教导提供给各方。如上面所描述的那样,在任何的情况下,管理员436都可以支持和配置基础设施402。
计算机系统或者服务器404被示出为包括CPU(下面称为"处理单元406")、 存储器412、总线410和输入/输出(1/0)接口408。进一步,计算机系统400 被示出为与外部I/O设备/资源424和存储系统422通信。在所示实施方式中,存储系统422包括用于带有为本地协议X实现414提供的原始接口函数的API 416的协议X文档426,以便程序员450在需要的情况下可以访问协议X文档,以修改或者撤消现有功能。通常,处理单元406执行诸如带有为本地协议X实现414提供的原始接口函数416的API之类的计算机程序代码。在执行用于本地X实现414的API 416的同时,处理单元406可以从/向存储器412、存储系 统422和/或I/O接口408读取和/或写入数据。总线410提供计算机系统400中的每个部件之间的通信链路。外部设备424可以包括使得用户能够与计算机系统400交互的任何设备(例如,键盘、定点设备、显示器等),和/或者能够使得计算机系统400与一个或多个其他计算设备进行通信的任何设备(例如,网卡、调制解调器等)。
计算机基础设施40仅仅是用于实现本发明的计算机基础设施的各种类型的示例。例如,在一种实施方式中,计算机基础设施402可以包括通过网络进行器集群)。而且,计算机系统400仅仅是可以包括大量硬件组合的各种可能的计 算机系统的代表。就这方面来说,在其他实施方式中,计算机系统400可以包 括具有用于执行特定功能的硬件和/或计算机程序代码的特殊目的计算产品、包 括特殊目的和通用目的硬件/软件的组合的任何计算产品等。在每种情况中,可 以分别使用标准编程和工程技术来创建程序代码和硬件。而且,处理单元406 可以包括单个处理单元,或者在一个或多个位置上(例如在客户端和服务器上) 跨越一个或多个处理单元分布。类似地,存储器412和/或存储系统422可以包 括位于一个或多个物理位置上的各种类型的数据存储和/或传输介质的任何组 合。进一步,1/0接口 408可以包括用于与一个或多个外部设备424交换信息的 任何系统。再进一步,应该理解,在计算机系统400中可以包括一个或多个附 加的构件(例如,没有在图4中示出的系统软件、算术协处理器单元等)。类似 地,应该理解, 一个或多个外部设备424 (例如,显示器)和/或存储系统422 可以被包含在计算机系统404内,而不是如图所示的那样位于外部。
存储系统422可以是能够存储诸如提供用于修改或者撤消由本地协议X实 现414所提供的现有功能的附加指南的协议X文档426之类的信息或者数据的 任何类型的系统(例如,数据库)。就这方面来说,存储系统422可以包括诸如 磁盘驱动器或者光盘驱动器之类的一个或多个存储设备。在另 一种实施方式种, 存储系统422包括^争越例如局域网(LAN)、广域网(WAN)或者存储域网络 (SAN)(未示出)分布的数据。虽然没有示出,但是,可以将诸如高速緩冲存 储器、通信系统、系统软件之类的附加构件合并到计算机系统400中。
已经为了图示和描述的目的呈现了本发明的特定实施方式的上面描述。它 们不试图将本发明穷尽或者限制到所公开的具体形式,而且很明显,根据上面 的教导,许多修改和变型都是可以的。选择并且描述了这些实施方式以最好地 解释本发明的原理及其实际应用,从而使得本领域的技术人员能够最好地利用附权利要求及其等效物来限定本发明的范围。
权利要求
1.一种撤消在用于本地协议实现的应用程序编程接口中所提供的现有功能的方法,所述方法包括步骤提供用于实施协议的本地协议实现的应用程序编程接口,所述应用程序编程接口具有原始接口函数,该原始接口函数能够由客户端应用程序调用,以撤消在所述应用程序编程接口中提供的现有功能,以便与实施所述协议的远程协议实现进行相互操作,所述远程协议实现支持与所述本地协议实现不同的功能;为所述原始接口函数定义预先形成的有效负荷元素的数组,该数组要被包括来为从使用所述远程协议实现的服务器应用程序请求协议服务而创建定制的协议请求消息;为用于创建所述定制的协议请求消息所定义的预先形成的有效负荷元素的所述数组中的每个元素导入数据;以及调用所述原始接口函数来撤消所述现有功能,其中所述原始接口函数将所定义的预先形成的并且预先导入的有效负荷元素的所述数组作为输入,并且通过在所述协议请求消息的协议消息报头之后顺序地插入预先形成的有效负荷元素的所述数组,来创建所述定制的协议请求消息,并且将所述定制的协议请求消息发送到所述远程协议实现。
2. 根据权利要求1所述的方法,还包括步骤将来自所述服务器应用程序的协议响应消息返回给所述客户端应用程 序,所述协议响应消息包含格式化为预先形成的有效负荷元素的另 一个数组 的有效负荷数据。
3. 根据权利要求2所述的方法,其中,所述提供步骤还包括步骤 将所述应用程序编程接口提供给具有一个或多个预先定义的协议函数的所述本地协议实现,所述一个或多个预先定义的协议函数能够被所述客户端 应用程序调用以发送请求所述协议服务的标准协议请求消息。
4. 根据权利要求3所述的方法,其中,所述提供所述应用程序编程接口 给具有一个或者多个预先定义的协议函数的所述本地协议实现的步骤还包 括调用所述一个或多个预先定义的协议函数中的预先定义的协议函数,所 述预先定义的协议函数具有要被传递给被调用来创建所述标准协议请求消息 的所述预先定义的协议函数的预先定义的参数的列表。
5. 根据权利要求4所述的方法,其中,所述调用预先定义的协议函数的步骤还包括步骤将与预先定义的参数的所述列表对应的数据加载到所述标准协议请求消 息的预先定义的有效负荷元素中,所述预先定义的有效负荷元素与^皮传递到 所述预先定义的协议函数的预先定义的参数的所述列表对应。
6. 根据权利要求5所述的方法,其中,在所创建的预先形成的有效负荷 元素的所述数组中的所述每个元素至少包括下列之一TLV (类型、长度、 值)、AVP (属性值对)和定界文本串。
7. 根据权利要求6所述的方法,其中,所述协议包括使用离散有效负荷 元素的任何协议。
8. 根据权利要求6所述的方法,其中,所述协议包括直径协议。
9. 一种用于修改用于客户端一侧协议实现的应用程序编程接口中所提供 的现有协议功能的系统,该系统包括实施协议的服务器一侧远程协议实现,被配置为响应于接收到的协议请 求消息而提供协议服务;和实施所述协议的客户端一侧协议实现,其具有应用程序编程接口,所述 应用程序编程接口具有配置来撤消在所述应用程序编程接口中所提供的现有 协议功能的原始接口函数,其中使用所述客户端一侧协议实现的用户端应用 程序为所述原始接口函数定义预先形成的有效负荷元素的数组,该数组要被 包括来创建用于从使用所述服务器一侧远程协议实现的所述服务器一侧应用 程序请求协议服务的定制的协议请求消息,所述服务器一侧远程协议实现支 持与所述客户端一侧协议实现不同的功能;其中,所述客户端应用程序为所 定义的预先形成的有效负荷元素的所述数组中的每个元素导入数据;而且其 中,所迷客户端应用程序调用所述原始接口函数,以修改在所述客户端一侧 协议实现的所述应用程序编程接口中所提供的现有协议功能。
10. 根据权利要求9所述的系统,其中,将所述原始接口函数进一步配 置为将所定义的预先形成的并且预先导入的有效负荷元素的所述数组作为输 入,并且通过在所述定制的协议请求消息的协议消息报头之后顺序地插入预 先形成的有效负荷元素的所述数组,来创建所述定制的协议请求消息,并且 将所述定制的协议请求消息发送到使用所述服务器一侧远程协议实现的所述 服务器一侧应用程序。
11. 根据权利要求IO所述的系统,其中,将具有所述应用程序编程接口 的所述客户端一侧协议实现配置为接收调用在所述应用程序编程接口中所提 供的预先定义的协议函数的函数引用,所述应用程序编程接口用于将标准协议请求消息发送到请求所述协议服务的所述服务器一侧应用程序;而且其中, 将所述服务器一侧远程协议实现配置为将包含被格式化为预先形成的有效负 荷元素的另 一个数组的有效负荷数据的协议响应消息返回给所述客户端应用 程序。
12. 根据权利要求11所述的系统,其中,将所述应用程序编程接口进一 步配置为将与预先定义的参数的列表对应的数据加载到所述标准协议请求消 息的预先定义的有效负荷元素中,所述预先定义的有效负荷元素与传递到所 述预先定义的协议函数的预先定义的参数的所述列表对应。
13. 根据权利要求12所述的系统,其中,在所创建的预先形成的有效负 荷元素的所述数组中的所述每个元素至少包括下列之一TLV(类型、长度、 值)、AVP (属性值对)和定界文本串。
14. 根据权利要求13所述的系统,其中,所述协议包括使用离散有效负 荷元素的任何协议。
全文摘要
提供用于撤消在用于本地协议实现的应用程序编程接口(API)中所提供的现有功能的方法、系统和程序产品。该方法包括提供API给本地协议实现,该API具有能够被客户端应用程序调用来撤消在API中提供的现有功能的原始接口函数。该方法还包括为原始接口函数定义预先形成的有效负荷元素的数组,该数组要被包括来创建从使用与本地协议实现不同的远程协议实现的服务器应用程序请求协议服务的定制的协议请求消息;为在所定义的数组中的每个元素导入数据;和调用原始接口函数,该函数将所定义的数组作为输入,并且在协议请求消息的协议消息报头之后顺序地插入它们,并且将定制的协议请求消息发送到服务器应用程序。
文档编号G06F9/44GK101206571SQ20071018677
公开日2008年6月25日 申请日期2007年11月16日 优先权日2006年12月19日
发明者胡安·马尔多纳多, 蒂莫西·J·史密斯, 马克·E·诺斯维茨 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1