用多数据类型表示来传送数据对象的方法和系统的制作方法

文档序号:6407203阅读:128来源:国知局
专利名称:用多数据类型表示来传送数据对象的方法和系统的制作方法
技术领域
本发明一般地涉及分布式软件系统和网络,更具体地涉及使用基于文本的编码以在网络上传送数据对象。更具体地,本发明涉及在分布式系统中使用多种数据类型表示以将数据对象传送给组件的方法和系统。
背景技术
最近以及正在进行的分散型网络和分布式系统中的创新已经引起更多地使用基于文本的编码以在网络上传送数据对象。数据对象一般包括数据项的集合,还可以包括与特定数据相关联的行为或代码。在一些编程语言中,例如C++和Java,数据对象也被“归类”。数据对象的“类型”规定了对象包含的数据项以及它能够进行的操作。数据对象的文本表示被用来在网络上传送数据对象中的信息。网络中的每个节点必须能够将文本表示转换成可以被驻留在该节点内的一个或多个组件所使用的格式。节点一般包括多种类型的计算设备。
图1a是根据现有技术的第一种类型的数据对象转换的数据流程图。特定类型(逻辑类型100)的数据对象被转换为本地数据类型表示102。本地数据类型表示是指可以被底层软件环境使用的本地格式,例如本地二进制格式。一个例子是可以在Java虚拟机上执行的Java字节码(Java bytecode)。每个不同类型的数据对象可以有自己唯一的二进制表示,并且分布式网络中的节点包括如何将数据对象表示为本地格式的指令。
不幸的是,在例如分布式测量系统的松散耦合分布式网络中,该网络中的接收节点可以在发送节点产生前建立和配备。当配备较新的发送节点时,它可能包含网络中已有的节点不知道的新的数据对象类型。因此,较早的接收节点不可能包括所有必需的指令以将从较新的发送节点接收的全部逻辑类型100转换成本地数据类型表示102。较早的接收节点必须用额外的指令进行更新以从较新的发送节点接收数据对象。
为了避免需要在网络中更新节点,一些分布式系统使用在图1b的数据流程图中示出的第二类型数据对象转换。网络中的每个节点使用固定的对象编码集合,以将逻辑类型100转换成通用容器数据类型表示104。在此表示方案中,通过将数据对象的组成基本数据项聚合到已知类型的容器数据结构中来表示该数据对象,所述已知类型的容器数据结构例如是数组或向量。使用通用容器数据类型表示的数据模型的一个例子是IEEE1451.1规范。通过使用固定的基本数据项集合来创建任意数据对象,避免了将新的数据类型引入到已建立的网络中的问题。基本数据项包括计算设备辨识的整数、浮点数和字节。
然而,因为通用容器数据类型表示104在编译时不能被归类,因此通用容器数据类型表示104不能提供与本地数据类型表示102所提供的相同的设计能力和支持。因此,支持通用容器数据类型表示的系统丧失了进行静态类型检查的能力。此外,因为相同的容器类型被用于表示多种逻辑数据类型,因此这些系统不能将特定类型的功能(behavior)与容器相关联。

发明内容
根据本发明,提供了在分布式系统中使用多个数据类型表示将数据对象传送给组件的方法。网络中的节点接收数据对象并生成通用容器数据类型表示。所接收的数据对象中的数据被映射成一个或多个基本数据项,例如整数、浮点数和字节,然后被放入诸如数组的容器中。基于容器中的内容将注释或标识符赋予所述容器数据类型表示。该节点判断与容器数据类型表示相对应的本地数据类型表示在该节点是否可用。如果本地数据类型表示可用,则节点将数据对象转换成本地数据类型表示。然后节点将此本地数据类型表示发送给驻留在节点内的组件。
在根据本发明的一个实施例中,当节点内不存在本地数据类型表示时,节点将容器数据类型表示发送给组件。在根据本发明的另一个实施例中,当本地数据类型表示不可用时,节点判断容器数据类型表示中的一些或全部数据是否能够被转换成不完全的本地数据类型表示。如果数据不能被转换成不完全的本地数据类型表示,节点将容器数据类型表示发送给组件。然而,如果数据可以被转换成不完全的本地数据类型表示,则节点将认识的数据转换成不完全的本地数据类型表示。节点将此不完全的本地数据类型表示发送给驻留在节点内的组件。节点还可以将容器数据类型表示与不完全的本地数据类型表示一起发送给组件。


通过参考以下对根据本发明的实施例的详细描述并结合附图,可以最好地理解本发明,在附图中图1a是根据现有技术的第一类型数据对象转换的数据流程图;图1b是根据现有技术的第二类型数据对象转换的数据流程图;图2是根据本发明实施例的数据流程图;图3是根据本发明的第一实施例中用于接收数据对象的方法的流程图;图4是根据本发明的第二实施例中用于接收数据对象的方法的流程图;图5是根据本发明的第三实施例中用于发送数据对象的方法的流程图;图6是根据本发明的第一节点的框图;图7是根据本发明的第二节点的框图;图8是根据本发明的第三节点的框图。
具体实施例方式
本发明涉及在分布式系统中使用多种类型表示以将数据对象传送给组件的方法和系统。给出以下描述以使得本领域技术人员能够做出并使用本发明,并且描述是在专利申请及其要求的上下文中提供的。对所公开实施例的各种修改对本领域技术人员而言是显而易见的,并且此处的通用原理可以应用到其他实施例。因此,本发明无意被限制在所示出的实施例,而是与所附权利要求和此处描述的原理与特征一致的最广泛的范围相符。
现在参考附图,具体而言参考图2,示出了根据本发明一个实施例的数据流图。逻辑数据类型100被映射成多个物理类型表示。根据本发明这个实施例,多个物理类型表示包括通用容器数据类型表示104和不同的本地数据类型表示202、204、206。不同的本地数据类型表示包括但不限于C++对象类型和Java对象类型。每个本地数据类型表示可以被转换成容器数据类型表示,而容器数据类型表示可以转换成一个或多个本地数据类型表示。
图3是在根据本发明第一实施例中用于接收数据对象的方法的流程图。节点接收数据并解码网络传送格式,如方框300所示。网络传送格式包括但不限于包括头部和有效载荷的数据帧,其中所述有效载荷一般包括数据对象的集合,以及基于XML协议的网络编码。
创建通用容器数据类型表示的一个实例,以容纳数据对象,如方框302所示。然后在方框304处用一个注释或者说标识符,来标记所述容器数据类型表示。根据本发明此实施例的注释是人可读的字符串,以注释所述容器数据类型表示的逻辑类型。容纳相同类型数据项和数据项实例的容器被赋予同样的注释,而容纳不同类型数据项和数据项实例的容器被赋予不同的注释。使用容器的注释和内容,在方框306处做出该节点是否具有与注释和容器内容相对应的本地数据类型表示的判断。
如果该节点不具有相对应的本地数据类型表示,该过程进行到方框308,在该处容器数据类型表示被传送给该节点内的组件。组件包括可以访问或使用容器数据类型表示和/或本地数据类型表示内的数据项的任何程序或设备。在根据本发明的此实施例中,组件可以选择接受容器数据类型表示中或本地数据类型表示中的数据。
例如,在根据本发明的那些组件能够作用于各种数据的实施例中,系统设计者可能希望组件接受通用容器数据类型表示中的数据。在根据本发明的其他实施例中,组件可能只能作用于特定类型的数据,或者它可能要求与特定数据相关联的动作或代码。在这些实施例中,系统设计者可能希望组件接受本地数据类型表示中的数据。
再次参考方框306,如果节点具有与注释和容器内容对应的本地数据类型表示,在方框310处做出该节点内的组件是否选择接收此本地数据类型表示的判断。如果否,则在方框308处容器数据类型表示被发送给该组件。然而如果该组件选择接收此本地数据类型表示,则该容器内的数据字段被提取并转换成本地数据类型表示(方框312和314)。此本地数据类型表示于是在方框308处被发送给组件。
图4是在根据本发明的第二实施例中用于接收数据对象的方法的流程图。节点接收数据并解码网络传送格式,如方框400所示。创建通用容器数据类型表示的一个实例以容纳数据对象,并注释该容器数据类型表示,如方框402所示。
通过使用容器数据类型表示的内容和注释,在方框404处做出该节点是否具有与注释和容器内容相对应的本地数据类型表示的判断。如果节点具有与注释和容器内容对应的本地数据类型表示,在方框406处做出该节点内的组件是否选择接收此本地数据类型表示的判断。如果否,则在方框408处容器数据类型表示被发送给该组件。然而如果该组件选择接收此本地数据类型表示,则该容器内的数据字段被提取并转换成本地数据类型表示(方框410)。此本地数据类型表示于是被发送给组件(方框408)。
返回方框404,如果该节点不具有与注释和容器内容对应的本地数据类型表示,则在方框412处做出该节点是否认识此容器数据类型表示中的一些或全部内容的判断。当一些或全部数据字段可以被转换成不完全的本地数据类型表示时,节点“认识”内容。不完全的本地数据类型表示是并非本地数据类型表示中的全部数据字段都被初始化的表示。如果节点不认识一些或全部内容,则过程进行到方框408,在该处此容器数据类型表示被传送给组件。
然而,如果节点认识一些或全部容器内容,则在方框414处做出组件是否选择接收多个数据类型表示的判断。如果组件选择接收多个数据类型表示,则节点所认识的全部或部分内容被转换成不完全的本地数据类型表示(方框416)。根据本发明的本实施例,容器数据类型表示继续存储所有的内容。然后多个数据类型表示(即容器数据类型表示和不完全的本地数据类型表示)被传送给组件(方框408)。
再次返回方框414,如果组件不选择接收多个数据类型表示,则在方框418处做出组件是否希望接收不完全的本地数据类型表示的判断。如果组件选择接收不完全的本地数据类型表示,则节点所认识的全部或部分容器内容被转换成不完全的本地数据类型表示(方框420)。此不完全的本地数据类型表示于是被发送给组件。然而,如果组件不希望接收不完全的本地数据类型表示,则该容器数据类型表示被发送给组件。
然而,本发明不限于图3和图4所示的实施例。根据本发明的其他实施例可以省略这些图中所示的部分步骤。此外,这些步骤中的部分或全部可以以与图3和图4中所描述的顺序不同的顺序来实现。
图5是根据本发明第三实施例用于发送数据对象的方法的流程图。在方框500处做出数据是否存储在通用容器数据类型表示中的判断。如果数据容纳在容器数据类型表示中,则在网络上发送此容器数据类型表示(方框502)。
然而,如果数据没有容纳在通用容器数据类型表示中,则过程进行到方框504,在该处将数据字段从对象中提取出来。创建通用容器数据类型表示以容纳数据,并注释该容器数据类型表示(方框506和508)。根据本发明的此实施例中的注释是人可读的字符串,以注释所述容器数据类型表示的逻辑类型。然后在网络上发送此容器数据类型表示(方框502)。
现在参考图6,示出了根据本发明的第一节点的框图。节点600包括接口602和组件604。节点600从网络接收数据,而接口602创建通用容器数据类型表示以容纳该数据。然后接口602判断节点600是否具有与该容器数据类型表示相对应的本地数据类型表示。在根据本发明的此实施例中,节点600具有与该容器数据类型表示相对应的本地数据类型表示。接口602从容器数据类型表示提取数据字段,并将该数据字段转换成本地数据类型表示。然后接口602将此本地数据类型表示发送给组件604。
图7是根据本发明的第二节点的框图。节点700包括接口702和组件704。节点700从网络接收数据,而接口702创建通用容器数据类型表示以容纳该数据。然后接口702判断节点700是否具有与该容器数据类型表示相对应的本地数据类型表示。在根据本发明的此实施例中,节点700不具有与该容器数据类型表示相对应的本地数据类型表示。节点700然后确定其是否认识此容器数据类型表示中的一些或全部内容。然而,节点700不认识此容器数据类型表示中的任何内容。因此,接口702将此容器数据类型表示发送给组件704。
现在参考图8,示出了根据本发明的第三节点的框图。节点800包括接口802和两个组件804、806。节点800从网络接收数据,而接口802创建通用容器数据类型表示以容纳该数据。节点800不具有与该容器数据类型表示相对应的本地数据类型表示,但节点800认识此容器数据类型表示中的一些内容。组件804已经选择接收此通用容器数据类型表示中的数据,因此接口802将此容器数据类型表示发送给组件804。与组件804不同,组件806选择接收不完全的本地数据类型表示。因此接口802提取此容器中的认识的数据,并将这些数据转换成不完全的本地数据类型表示。然后接口802将此不完全的本地数据类型表示发送给组件806。
权利要求
1.一种用于在分布式网络中将数据对象传送给组件的系统,包括第一数据类型表示,其中所述数据对象中的数据字段被映射成所述第一数据类型表示;第二数据类型表示;和用于将所述第一数据类型表示转换成所述第二数据类型表示的装置。
2.如权利要求1所述的系统,其中所述第一数据类型表示包括容器数据类型表示,而所述第二数据类型表示包括本地数据类型表示。
3.如权利要求2所述的系统,其中所述本地数据类型表示与所述容器数据类型表示相对应。
4.如权利要求2所述的系统,其中所述本地数据类型表示包括不完全的本地数据类型表示。
5.一种使用多个数据类型表示来传送数据对象的系统,包括接口,用于接收数据对象并将所述数据对象中的数据字段映射成第一数据类型表示,其中当第二数据类型表示可用的时候,所述接口将所述第一数据类型表示转换成所述第二数据类型表示;和组件,当所述第二数据类型表示不可用时接收所述第一数据类型表示,而当所述第二数据类型表示可用时接收所述第二数据类型表示。
6.如权利要求5所述的系统,其中当所述第二数据类型表示不可用时所述接口将所述第一数据类型表示发送给所述组件,而当所述第二数据类型表示可用时所述接口将所述第二数据类型表示发送给所述组件。
7.如权利要求5所述的系统,其中所述第一数据类型表示包括容器数据类型表示,而所述第二数据类型表示包括本地数据类型表示。
8.如权利要求7所述的系统,其中所述本地数据类型表示与所述容器数据类型表示相对应。
9.如权利要求7所述的系统,其中所述本地数据类型表示包括不完全的本地数据类型表示。
10.一种用于接收数据对象的方法,包括生成第一数据类型表示并将所述数据对象中的数据字段映射成所述第一数据类型表示;判断与所述第一数据类型表示相对应的第二数据类型表示是否可用;以及当所述第二数据类型表示可用时将所述第一数据类型表示转换成所述第二数据类型表示。
11.如权利要求10所述的方法,还包括将所述第二数据类型表示发送给组件。
12.如权利要求10所述的方法,其中当所述第二数据类型表示可用时将所述第一数据类型表示转换成所述第二数据类型表示的步骤包括,当所述第二数据类型表示可用并且组件选择接收所述第二数据类型表示时,将所述第一数据类型表示转换成所述第二数据类型表示。
13.如权利要求12所述的方法,还包括当所述第二数据类型表示可用并且组件选择接收所述第二数据类型表示时,将所述第二数据类型表示发送给所述组件。
14.如权利要求10所述的方法,还包括当所述第二数据类型表示不可用时,将所述第一数据类型表示发送给组件。
15.如权利要求10所述的方法,还包括当所述第二数据类型表示不可用时,判断所述第一数据类型表示能否被转换成不完全的第二数据类型表示。
16.如权利要求15所述的方法,还包括当所述第一数据类型表示可以被转换成所述不完全的第二数据类型表示时,将所述第一数据类型表示转换成所述不完全的第二数据类型表示。
17.如权利要求16所述的方法,还包括将所述不完全的第二数据类型表示发送给组件。
18.如权利要求16所述的方法,还包括将所述第一数据类型表示和所述不完全的第二数据类型表示发送给组件。
全文摘要
本发明公开了在分布式系统中使用多个数据对象表示将数据对象传送给组件的方法和系统。网络中的节点接收数据对象并生成通用容器数据类型表示。所接收的数据对象中的数据被映射成一个或多个基本数据项,例如整数、浮点数和字节,然后被放入该容器数据类型表示中。基于容器中的内容将一个注释赋予所述容器数据类型表示。该节点判断判断与容器数据类型表示相对应的本地数据类型表示是否可用。如果本地数据类型表示可用,则节点将数据对象转换成本地数据类型表示。然后节点将此本地数据类型表示发送给驻留在节点内的组件。如果本地数据类型表示不可用,则节点将容器数据类型表示或者将容器数据类型表示和不完全的本地数据类型表示发送给组件。
文档编号G06F9/46GK1604529SQ20041004874
公开日2005年4月6日 申请日期2004年6月15日 优先权日2003年9月30日
发明者刘锦宗, 格伦·L·小珀迪, 杰弗森·B·伯奇 申请人:安捷伦科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1