根据网络服务定义生成无线应用的系统及方法

文档序号:7950851阅读:171来源:国知局
专利名称:根据网络服务定义生成无线应用的系统及方法
技术领域
本发明总体上涉及无线通信应用和无线通信设备,具体涉及一种 根据网络服务定义生成无线应用的装置及方法。
背景技术
无线设备被公认为优选的个人通信媒介,导致了对这种设备的日 益增长的需求。这种设备的用户还越来越希望通过这种设备可以使用 更多的功能和更广的服务范围。这种对更多功能的需求需要开发针对 无线设备的新应用。
无线设备的信息的重要来源是万维网。众所周知,支持网络的设 备可以使用许多万维网服务(在下文中简称为"网络服务")。
图1是现有技术的网络的框图,其中,无线设备用户10a、 10b 操作无线设备,经由公共域承载网络(carrier) 12向应用网关14发送 网络服务请求消息。应用网关14通过因特网16将网络服务请求消息 转发至相应的网络服务18a、 18b。相应的网络服务18a、 18b处理该 消息,并通过因特网16向应用网关14返回消息。公共域承载网络12 将响应消息转发至用户10a、 10b所操作的无线设备,该无线设备处理 该响应并向无线设备用户10a、 10b显示响应内容。
但是,网络服务一般使用复杂数据结构和复杂消息格式。复杂数 据结构和复杂消息格式引入了无线设备上很大的存储器开销。这影响 了无线设备的性能,使得有必要开发用于提供对网络服务的有效访问 的无线应用。
众所周知,熟练的应用开发者可以开发用于从无线设备访问网络 服务的无线应用。此外,已知这种应用的开发耗时且花费巨大。
因此,需要一种根据网络服务定义生成无线应用的系统和方法。

发明内容
因此,本发明的目的是提供一种根据网络服务定义生成无线应用 的系统和方法。
根据本发明的第一方面,提供了一种根据网络服务定义生成无线 应用的方法,包括接受网络服务消息作为输入,并确定每个网络服务 消息是输入还是输出消息,其特征在于为每个网络服务消息创建消 息对象和组件映射对象,将组件映射对象链接至消息对象和网络服务 消息,并将网络服务消息的消息部分映射到无线应用的消息部分。
根据本发明的另一方面,提供了一种根据网络服务定义生成无线 应用的系统,包括应用开发者工作站,所述应用开发者工作站包括计 算机可执行代码,所述计算机可执行代码用于接受网络服务消息作为 输入、确定每个网络服务消息是输入还是输出消息,其特征在于计 算机可执行代码用于为每个网络服务消息创建消息对象和组件映射对 象、将组件映射对象链接至消息对象和网络服务消息、以及将网络服 务消息的消息部分映射到无线应用的消息部分。
根据本发明的又一方面,提供了一种可销售的产品,包括存储有 计算机可执行代码的计算机可读存储器,所述计算机可执行代码用于 执行根据本发明的所有方法。


根据下文的详细描述并结合附图,本发明的更多特征和优点将更 显而易见,其中
图1是现有技术的无线网络系统的框图2是示出了创建和启用根据本发明的系统的过程的示意图; 图3是根据本发明的代理服务器的框图; 图4是根据本发明的无线设备的框图5是根据本发明的系统中的无线设备与远程服务之间的消息传 递的高级概图6是用于根据网络服务定义生成无线应用的根据本发明的算法 的主线的流程图7是图6所示的算法的mapPart函数的流程图8是图7所示的算法的handleElementDeclamtion函数的流程
图9是图8所示的算法的handleTypeDefmition函数的流程图; 图10是图9所示的算法的handleSimpleTypeDefmition函数的流 程图11是图10所示的算法的computeSimpleDataType函数的流程
图12是图10所示的算法的mapEnumeration函数的流程图; 图13是图11所示的算法的computeAtomicType函数的流程图; 图14是图9所示的算法的mapDataComponent函数的流程图; 图15a是图14所示的算法的handleComplexTypeDefinition函数的
流程图15b是图15a所示的流程图的继续;
图16是图15b所示的算法的handleAttributeDeclaration函数的流 程图17是图15b所示的算法的handleAnyAttribute函数的流程图; 图18是图15b所示的算法的handleSimpleContent函数的流程图; 图19是图15a所示的算法的handleParticle函数的流程图;以及 图20是图19所示的算法的handleModdGroup函数的流程图, 注意在附图中始终通过相似的附图标记标识相似的特征。
具体实施例方式
本发明提供了一种根据网络服务定义生成无线应用的系统及方 法。该系统执行程序代码,该程序代码体现了接收网络服务操作定义、 并检查输入和输出消息和该消息中使用的数据结构以生成无线应用中 对应的消息和数据定义的算法。此外,该算法输出使每个无线消息与 网络服务消息关联、以及使每个无线数据定义与网络服务数据定义关 联的映射。位于无线设备与网络服务之间的通信路径中的代理服务器 使用该映射,将网络服务消息转换为无线设备上运行的应用所使用的
格式,反之亦然。 系统综述
图2是示出了创建和启用根据本发明的系统的过程的示意图。
图1所示的由无线设备的用户10a、 10b所访问的远程服务(例 如网络服务20)使用复杂消息结构以将信息传递给访问远程服务的用 户。同样,网络服务20使用复杂数据结构用于数据存储和数据取回 (retrieval)。无线应用开发者22使用网络服务20的规范和应用开发 者工具包以创建无线设备应用24和消息映射26,以启用根据本发明 的系统。根据针对网络服务20的规范而创建具有消息格式和无线数据 结构的无线设备应用24。下文将参照图7-19进行说明,使用根据网 络服务定义而生成无线应用的算法来创建无线数据结构。该过程包括 将网络服务消息映射到无线消息和数据结构。然后,应用开发者22 可以使用用于简化消息和数据结构的自动或半自动的算法,以改进无 线设备效率和减少无线带宽使用。
无线网络边界处的代理服务器使用消息映射26,以将复杂服务消 息转换为无线消息,然后将无线消息无线地发送至无线设备用户10a、 10b。下文将参照图3和5说明,在本发明的一个实施例中,应用数据 映射26的代理服务器是应用网关。
图3是根据本发明的代理服务器40的框图。代理服务器40位于 无线设备10a、 10b和远程服务(例如万维网服务18a、 18b)之间的 通信路径中。在本发明的一个实施例中,代理服务器40是应用网关, 在下文中称之为应用网关40。
应用网关40支持具有面向无线网络的链路42的无线网络接口 46。消息转换功能48接收来自无线网络接口 46的消息并处理该消息, 然后将该消息转发至服务网络接口 50。服务网络接口 50具有面向服 务网络44 (例如因特网)的链路,通过该链路将消息转发至相应的网 络服务。根据本发明,向应用网关40提供多个消息映射52、 54。下 文将参照图5详细说明,无线应用开发者22使用根据本发明的算法创 建消息映射52、 54,消息转换功能48使用消息映射52、 54以处理服
务请求和服务响应消息。应用幵发者22为每个网络服务18a、 18b所 使用的每个消息类型创建一个消息映射52、 54。
图4是根据本发明的无线设备56的框图。无线设备56包括本领 域众所周知的网络连接接口 58,使用无线设备56以与公共域承载网 络12进行无线通信。无线设备56还包括用户接口 60,用户接口 60 可以是小键盘、触摸屏(touch sensitive screen)、语音识别软件或用于 无线设备的任何其它的用户接口。设备基础架构62包括存储器、处理 器、外围端口、小键盘、显示器和支持无线设备56的功能所需的其它 硬件组件。运行时环境(runtime environment) 66支持存储对应的应 用数据的多个数据结构68a、 68n。
操作综述
图5提供了使用根据本发明的无线应用的无线消息传递的概图。 在步骤70中,当用户10a希望从网络服务18a请求服务时,无线设备 的用户10a以无线格式制定(formulate)服务请求消息。将服务请求 消息转发(步骤72)至应用网关40,应用网关40在步骤74中执行服 务请求消息映射,以将服务请求消息从无线格式转换为网络服务18a 所需的网络服务请求消息格式。应用网关40将网络服务请求消息转发 至网络服务18a(步骤76),网络服务18a接收网络服务请求消息并以 本领域周知的方式处理该消息(步骤78)。然后,网络服务18a制定 并返回网络服务响应消息(步骤80)。应用网关40接收网络服务响应 消息,使网络服务响应消息与先前发送的网络服务请求消息关联,并 在步骤82中执行网络服务响应消息映射,以将网络服务响应消息转换 为具有无线设备10a所使用的无线格式的响应消息。在步骤84中,应 用网关40将具有无线格式的响应消息转发至无线设备10a。无线设备 10a接收服务响应消息,并在步骤86中执行服务响应消息处理。取决 于在步骤86中处理的服务响应消息的内容,在步骤88中,无线设备 10a可以向用户生成信息的显示。
使用网络服务定义的应用生成
图6是通过计算机可执行代码体现的根据本发明的算法的主线的
流程图,用于根据网络服务定义生成无线应用。例如,图6所示的算 法是应用开发者工具包22的一部分(图2)。该算法接受复杂网络服 务消息作为输入,并输出无线服务消息和消息映射,允许使用该无线 服务消息和消息映射重建复杂网络服务消息。
如图6所示,根据本发明的算法接受网络服务定义所定义的消息, 并在步骤100中确定网络服务定义所指定的消息是输入消息还是输出 消息。如果所选择的消息是输入消息,则创建输入消息对象(步骤 102)。然后,该算法在步骤104中创建componentMapping对象,并 将该componentMapping对象链接至消息对象和网络服务定义语言 (WSDL)消息(步骤109)。
如果在步骤100中确定该消息是输出消息,该算法创建输出消息 对象(步骤106)。然后,该算法创建componentMapping对象(步骤 108 )并将该componentMapping对象链接至消息对象和WSDL消息(步 骤109)。然后,该算法选择第一消息部分(步骤110)并调用名为 mapPart的算法函数(步骤112)。本领域的技术人员将理解,该算法 将消息部分信息传递至mapPart函数。当所调用的mapPart函数将控 制返回给图6所示的主线时,确定是否存在另一消息部分(步骤114)。 如果是,该算法调用函数mapPart (步骤112)。否则,在步骤116中 该算法确定在网络服务定义中是否存在另一消息。如果是,该算法返 回至步骤100。否则,完成该应用生成并且该算法终止执行。
图7是示出了名为mapPart的算法函数的流程图。当在步骤112 中调用mapPart时,该算法分支转移(branch)至步骤120并在步骤 122中产生消息字段对象。随后,在步骤124中创建fieldMapping对 象。然后将fieldMapping对象链接至消息字段对象和WSDL部分(步 骤125)。然后,在步骤128中确定被传递至该函数的消息部分是否是 元素(dement )。如果该消息部分是元素,则调用 handleElementDeclaration(步骤132)。否则,调用handleTypeDefmition (步骤130)。
图8是示出了算法函数handeElementDeclaration (140)的流程 图。在步骤142中,该算法确定元素类型。然后该算法调用算法函数 handleTypeDefmition (步骤144),将类型定义信息传递至算法函数 handleTypeDefmition,并返回图7中的步骤132。
图9是示出了从图7的步骤130分支转移至的算法函数 handleTypeDefmition (步骤150)的流程图。在步骤152中,确定类 型数据组件是否是简单类型。如果是,则该算法调用函数 handleSimpleTypeDefinition (步骤154),将简单类型定义传递至函数 handleSimpleTypeDefmition 。如果不是,则该算法调用函数 mapDataComponent (步骤156),将数据组件定义传递至函数 mapDataComponent。然后该算法返回图7中的步骤130。
图10是示出了图9的步骤154中调用的函数 handleSimpleTypeDefmitkm (160)的流程图。在步骤162中确定该简 单数据类型是否是枚举。如果是,该算法调用函数mapEmimeration(步 骤164),将枚举定义传递至函数mapEnumeratkm。如果不是,该算法 调用函数computeSimpleDataType (步骤166),将该简单数据类型定 义传递至函数computeSimpleDataType。在任一情况下,该算法然后返 回至图9所示的步骤154。
图11是示出了图10的步骤166中调用的函数 computeSimpleDataType (170)的流程图。在步骤172中,确定简单 数据类型是否是原子(atomic )。如果是,该算法调用函数 computeAtomicType (步骤174),将原子类型定义传递至函数 computeAtomicType。如果该简单数据类型不是原子,则在步骤176 中确定该简单数据类型是否是列表。如果是,将字段数组特性设置为 "真"(步骤178)并且算法随新参数分支转移回到(步骤180)步骤 170。如果简单数据类型既不是原子也不是列表,该类型是根据本发明 的无线应用所不支持的联合(unkm)。因此,丢弃该字段对象和该字 段映射对象(步骤182),并且算法返回至图10所示的步骤166。
图12是示出了图10所示的步骤164中所调用的算法函数 mapEnumeration (190)的流程图。在步骤192中创建枚举对象。然后,
仓廿建enumerationMapping对象(步骤194),并4每enumerationMapping
对象链接至枚举对象和简单类型定义(步骤195)。然后为每个枚举值 创建并映射枚举文字对象(步骤196)。然后算法返回至图IO所示的 步骤164。
图13是示出了图il所示的步骤174中调用的computeAtomicType (200)的流程图。在步骤202中,以本领域周知的方式使用转换表来 确定对应的数据类型。然后,基于数据类型对该字段进行更新(步骤 204),且该算法返回至图11所示的步骤174。
图14是示出了图9所示的步骤156中调用的mapDataComponent (210)的流程图。在步骤212中,该算法创建数据对象,然后创建 componentMapping对象(步骤214)。然后该算法将componentMapping 对象链接至数据对象和复杂类型定义(步骤215)。然后,该算法在步 骤216中调用handleComplexTypeDefinition,并返回至图7所示的步 骤156。
图15a和15b示出了从图14所示的步骤216调用的算法函数 handleComplexTypeDefinition (220)。在步骤222中,该算法确定复杂
数据类型是否具有基本类型。如果是,该算法首先基于该基本类型调 用图M所示的函数mapDataComponent (步骤224)。然后该算法将数 据对象设为当前复杂类型的原型(步骤226),并在步骤228中以本领 域周知的方式确定当前复杂类型的类别(category)。在步骤230中, 确定该类别是否是空类型。如果是,该算法分支转移至图15b中所示 的步骤256。如果不是,则确定该类别是否是简单类型(步骤232)。 如果是,该算法调用函数handleSimpleContent (步骤234)并分支转 移至图15b所示的步骤256。如果不是简单类型,该算法确定该类别 是否是混合类型(步骤236 )。如果是,则丢弃该数据对象和 componentMapping对象,且该算法返回至图14所示的步骤216。如 果该类别不是混合类型,则该算法确定该类别是否是Element—Only类 型(步骤238)。如果是,该算法调用handleParticle (步骤240)并分 支转移至图15b中的步骤256。如果不是,该算法选择第一属性(步 骤242)并在步骤244中确定该属性是否是固定约束。如果是,在步
骤250中确定是否存在另一属性并且该过程分支转移回到步骤244。 如果该属性不是固定约束,在步骤246中确定该属性是否是禁止使用。 如果是,在步骤250中确定是否存在另一属性且该过程分支转移回到 步骤244。如果不是,在步骤248中调用handleAttributeDeclaration并 且该过程分支转移至步骤250。在步骤252中确定该复杂类型是否具 有"任何属性(AnyAttribute )"类型。如果是,调用函数 handleAnyAttribute (步骤254)并将该复杂类型定义传递至该函数。 如果不是,在步骤256中确定在该数据对象中是否存在任何字段。如 果在该数据对象中存在字段,则该算法返回至图14所示的步骤216。 如果在该数据对象中不存在字段,则该算法丢弃该数据对象和 componentMapping对象(步骤258),并返回至图14所示的步骤26。
图16是示出了从图15b的步骤248调用的名为 handleAttributeDeclaration的算法部分(260)的流程图。在步骤262 中,该算法创建数据字段对象,在步骤264中,该算法创建fieldMapping 对象。然后,该算法将fieldMapping对象链接至数据字段对象和属性 声明(步骤265),并调用图lO所示的handleSimpleTypeDefinition(步 骤266)。然后,该算法返回至图15b的步骤248。
图17是从图15b的步骤254调用的算法函数部分 handleAnyAttibute (270)的流程图。在步骤272中,该算法创建数据 字段对象,并在步骤274中创建fieldMapping对象。然后,该算法将 fieldMapping对象链接至数据字段对象和anyAttribute (步骤275),并 将数据字段类型设为"字符串"(步骤276)。然后,该算法返回至图 15b中的步骤254。
图18是根据本发明的名为handleSimpleContent的算法函数(278 ) 的流程图。在步骤279中,该算法创建数据字段对象,并在步骤280 中创建fieldMapping对象,然后确定内容类型(步骤281)。然后,该 算法调用函数handleSimpleTypeDefinition (步骤282),并将内容类型 定义传递至函数handleSimpleTypeDefmition。
图19是从图15a的步骤240调用的算法函数handleParticle(300) 的流程图。在步骤302中,该算法确定该粒子(particle)是否是元素
声明。如果不是,该算法确定该粒子是否是"任何"类型(步骤304)。 如果不是元素声明或"任何"类型,(步骤306)该粒子是模型组。如 果该粒子是模型组,则该算法调用handleModelGroup (步骤308)。
如果在步骤302中确定该粒子是元素声明,该算法创建数据字段 对象(步骤310)并创建fieldMapping对象(步骤312)。然后,该算 法将fieldMapping对象链接至数据字段对象和元素声明(步骤318)。 然后确定最大取值是否大于一 (步骤320),如果是,将字段数组特性 设置为"真"(步骤328)并返回图15a中的步骤240。
否则,如果确定该粒子为"任何"类型(步骤304),该算法创建 数据字段对象(步骤314),创建字段映射对象(步骤315),并且该算 法将fieldMapping对象链接至数据字段对象和"任何"类型(步骤316)。 然后,该算法将字段类型设为"字符串"(步骤326),并确定最大取 值是否大于一(步骤330)。如果不是,该算法返回图15a中的步骤240。 否则,该算法将字段数组特性设置为"真"(步骤332)。然后,该算 法返回图15a中的步骤240。
图20是示出了从图18的步骤308调用的handleModleGroup(283 ) 的流程图。在步骤284中,该算法选择模型组中的第一粒子。然后该 算法调用(步骤285)图19中所示的handleParticle (300)。然后,该 算法在步骤286中确定该模型组中是否存在另一粒子。如果是,该算 法再次调用handleParticle (步骤285),并且在模型组中所有粒子得到 处理之前反复进行该过程。然后,该算法返回图19中的步骤308,随 后返回图15a中的步骤240。
本领域的技术人员将理解,上述算法根据网络服务定义创建无线 设备应用。本领域的技术人员还将理解,无线设备资源和可用于无线 通信的数据传输带宽是有限的。因此,优选地,通过使复杂数据结构 扁平化(flatten)以及使用申请人的与无线消息和数据简化相关的共 同未决(co-pending)专利申请中描述的减少字段大小和消息复杂度 的其它方法,上文参照图6-19所描述的算法所创建的数据结构和消息 得以简化。
本领域的技术人员还将理解,上文所述的算法仅表示可以使用网
络服务定义来生成无线应用的一种方式。因此,上文参照图6-19所描
述的算法仅表示为示意性的。因此本发明的范围仅由所附的权利要求 所限定。
权利要求
1、一种根据网络服务定义生成无线应用的方法,包括接受网络服务消息作为输入,并确定每个网络服务消息是输入还是输出消息,其特征在于为每个网络服务消息创建消息对象和组件映射对象,将组件映射对象链接至消息对象和网络服务消息,并将网络服务消息的消息部分映射到无线应用的消息部分。
2、 根据权利要求l所述的方法,其中,映射消息部分的步骤包 括创建消息字段对象、创建字段映射对象以及将字段映射对象链接 至消息字段对象和网络服务消息部分。
3、 根据权利要求2所述的方法,还包括选择消息部分;确定所述消息部分是否是元素声明;如果所述消息部分是元素声明,则确定所述元素类型;以及 确定所述消息部分是简单数据类型、枚举还是复杂类型。
4、 根据权利要求3所述的方法,其中,如果消息部分是简单数 据类型,则所述方法还包括确定所述简单数据类型是原子类型、列表 还是联合。
5、 根据权利要求4所述的方法,其中,如果简单数据类型是原 子类型,则所述方法包括使用转换表来确定对应的数据类型,并基 于该数据类型更新消息字段对象。
6、 根据权利要求4所述的方法,其中,如果简单数据类型是枚举,则所述方法还包括 创建枚举对象; 创建枚举映射对象;将枚举映射对象链接至枚举对象和简单数据类型定义;以及 为每个枚举类型创建枚举文字对象并映射所述枚举文字对象。
7、 根据权利要求3所述的方法,其中,如果消息部分是复杂类型,则所述方法还包括 创建数据对象; 创建组件映射对象;将组件映射对象链接至数据对象和复杂类型定义;以及 确定复杂类型是否具有基本类型。
8、 根据权利要求7所述的方法,其中,如果复杂类型具有基本 类型,则所述方法还包括创建数据对象; 创建组件映射对象;将组件映射对象链接至数据对象和复杂类型定义; 将数据对象设置为当前复杂类型的原型;以及 确定复杂类型的类别。
9、 根据权利要求8所述的方法,还包括 确定所述类别是否是空、简单、混合或element—only之一; 如果所述类别是空、简单或仅元素之一,确定数据对象中是否存在任何字段;以及如果数据对象中不存在任何字段,则丢弃数据对象和组件映射对象。
10、 根据权利要求9所述的方法,其中,如果所述类别是混合, 则所述方法包括丢弃数据对象和组件映射对象。
11、 根据权利要求9所述的方法,其中,如果所述类别不是空、 简单、混合或elemenLonly之一,所述方法还包括选择所述复杂类型的属性;以及 确定所述属性是否是固定约束和禁止使用之一。
12、 根据权利要求11所述的方法,其中,如果所述属性不是固 定约束或禁止使用,则所述方法还包括创建数据字段对象; 创建字段映射对象;将字段映射对象链接至数据字段对象和属性声明;以及 确定属性声明是枚举还是简单数据类型。
13、 根据权利要求9所述的方法,其中,如果所述复杂类型具有"任何"属性,则所述方法还包括 创建数据字段对象; 创建字段映射对象;将字段映射对象链接至数据字段对象和"任何属性"; 将数据字段类型设为"字符串"; 确定数据对象中是否存在任何字段;以及如果数据对象不包含字段,则丢弃该数据对象和组件映射对象。
14、 根据权利要求9所述的方法,其中,如果类别类型是简单, 则所述方法还包括.-创建数据字段对象; 创建字段映射对象; 确定简单类别的内容类型;以及 确定所述内容是枚举还是简单数据类型。
15、 根据权利要求9所述的方法,其中,如果类别类型是 element—only,则所述方法还包括确定类别的粒子是元素声明、"任 何"类型还是模型组。
16、 根据权利要求15所述的方法,其中,如果所述粒子是元素 声明或"任何"类型,则所述方法还包括-创建数据字段对象; 创建字段映射对象;将字段映射对象链接至数据字段对象和"任何"类型; 将曰期字段类型设为"字符串"; 确定所述粒子的最大取值;以及如果所述最大取值大于一,则将字段数组特性设为"真"。
17、 根据权利要求16所述的方法,其中,如果所述粒子是模型 组,则所述方法还包括针对模型组中的每个粒子 创建数据字段对象; 创建字段映射对象; 将字段映射对象链接至数据字段对象以及元素声明和"任何"类型之一;确定所述粒子的最大取值;如果所述最大取值大于一,将字段数组特性设为"真";以及 如果类别类型是"任何",将日期字段类型设为"字符串"。
18、 根据权利要求17所述的方法,其中,如果最大取值是l并 且所述粒子是元素声明,则所述方法还包括确定所述粒子是否是简 单类型。
19、 一种根据网络服务定义生成无线应用的系统,包括应用开 发者工作站,所述应用开发者工作站包括计算机可执行代码,所述计 算机可执行代码用于接受网络服务消息作为输入、确定每个网络服务 消息是输入还是输出消息,其特征在于计算机可执行代码用于为每个网络服务消息创建消息对象和组 件映射对象、将组件映射对象链接至消息对象和网络服务消息、以及 将网络服务消息的消息部分映射到无线应用的消息部分。
20、 一种可销售的产品,包括存储有计算机可执行代码的计算 机可读存储器,所述计算机可执行代码用于执行权利要求1-18中任意 一项所述的方法。
全文摘要
本发明公开了一种根据网络服务定义语言创建无线应用的系统及方法,使用了分析网络服务定义的每个消息并将该消息映射到无线应用消息和无线应用数据结构的算法。无线网络边界处的代理服务器使用消息映射以将网络服务消息转换为无线消息,以及将无线消息转换为网络服务消息。
文档编号H04L12/16GK101176300SQ200580049789
公开日2008年5月7日 申请日期2005年9月9日 优先权日2005年4月18日
发明者丹尼尔·马德苏, 布赖恩·R·戈林, 戴维·德布鲁因 申请人:捷讯研究有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1