将资源组织成集合以促进更有效和可靠的资源访问的制作方法

文档序号:7625970阅读:113来源:国知局
专利名称:将资源组织成集合以促进更有效和可靠的资源访问的制作方法
技术领域
本发明涉及组织资源,且更具体地说,涉及将资源组织成集合以促进更有效和可靠的资源访问。
背景技术
计算机系统及相关技术影响社会的许多方面。确实,计算机系统处理信息的能力已经改变了我们的生活和工作方式。计算机系统现在一般用作任务(例如,字处理,安排时间和数据库管理)的主机,这些任务在计算机系统出现之前是手工完成的。最近,计算机系统已经彼此耦合并且与其它电子设备耦合,形成有线和无线两者的计算机网络,在网络上计算机系统和其它电子设备能够传送电子数据。结果,在计算机系统上执行的许多任务(例如,语音通信,访问电子邮件,控制家用电子产品,Web浏览,以及打印文档)包括大量计算机系统和/或其它电子设备之间通过有线和/或无线计算机网络的电子通信。
由于可通过计算机网络访问的资源(例如设备和服务)的数量和多样化,因此开发了各种各样不同的访问机制。许多访问机制使用不同的协议。例如,访问万维网(“WWW”)上的网页通常是使用超文本传输协议(“HTTP”)来进行的。另一方面,访问来自远程位置的文件可以使用文件传输协议(“FTP”)来进行。有时,相同的内容可以在不同时间使用不同协议来传输。例如,电子邮件消息可以在邮件服务器之间使用简单邮件传输协议来传输,并且随后使用因特网消息访问协议(“IMAP”)或者邮局协议(“POP”)来传送到客户机。
然而,在可以使用协议传送或者访问资源之前,相应的访问机制必须具有某种方法来标识要访问或者传输的资源。例如,在Web浏览器可以使用HTTP访问Web网页之前,Web浏览器必须具有某种方法来标识要访问的Web网页。同样,在邮件客户机能够使用IMAP或者POP接收电子邮件消息之前,邮件客户机必须具有某种方法来标识存储电子邮件的邮件服务器。因此,实际上所有资源访问机制还包括可以用于标识资源的标识机制。
一种标识机制包括使用网络地址(例如互联网协议(“IP”)地址)来标识相应的计算设备(例如,膝上型计算机,邮件服务器,打印机,PDA等等)。通过网络地址标识计算设备在较小的网络(例如,家庭区域网络(“HAN”))上和/或在网络地址相对不频繁地改变的网络上可能足够了。然而,在分布式较大规模的网络上,使用网络地址作为标识机制常常有问题。例如,由于因特网上巨量的计算设备,因此,要让用户记住用户想要访问的每个计算设备的IP地址,即使不是不可能,也是很困难的。而且,始终存在供应者会改变计算设备网络地址的可能性或者将计算设备的拥有权转移到一个控制不同网络地址的不同供应者。因而,随后的以先前已知的网络地址对一个计算设备的访问企图会失败,并且没有容易地确定最新的网络地址的方法。
因此,其它标识机制将网络地址表示为字母串,它一般更易于记忆并且对网络地址提供某种程度的抽象。例如,域名服务(“DNS”)可以用于将IP地址表示为字母串(例如,相应于域名)。当字母串用于标识计算设备时,DNS检查翻译数据库,将字母串翻译成该计算设备的相应IP地址。而且,当将新的IP地址分配给计算设备时,可以更新翻译数据库,使得先前使用的标识该计算设备的字母串相应于新的IP地址。因而,DNS提供一种抽象层,它允许计算设备的IP地址改变而不必改变表示该计算设备的字母串。相应地,如果供应者改变一个计算设备的IP地址,则同一字母串经常可以用于访问该计算设备。
然而,由于计算机系统可以配置成同时提供许多不同的服务,因此仅使用DNS不足以标识一个计算设备的特定资源。例如,在有些环境中,使用DNS作为唯一的标识机制,会使它难以区分由同一Web服务器提供的不同服务(电子邮件,搜索功能等)。即,标识Web服务器(例如,通过网络地址或者字母串)不一定提供由Web服务器提供的特定服务的任何指示。因而,为访问Web服务器的电子邮件服务,标识机制需要有某种方法将电子邮件服务与Web服务器的其它服务区分开来。
统一资源标识符(“URI”)是一种已经开发的机制,它更精确地标识资源。URI可以包括网络地址或者标识计算设备的字母串,以及一个附加的字母数字串,标识计算设备上的特定资源。统一资源定位符(“URL”)指一个URI子集,它们通过它们的主要访问机制的表示(例如,它们的网络位置)来标识资源。全球资源名字(“URN”)指一个URI子集,要求它们保持全球唯一和持久不变,即使相应的资源停止存在。
URL一般用于访问因特网上的资源。例如,URL“http//[域名]/[字母数字串]”可以用于标识WWW上一个计算设备处的特定资源。URL通常还细分成不同的方案,表示不同(经常是分层的)名字空间。例如,在因特网上使用的一些不同方案包括ftp,http,gopher,mailto,news和telent。这些方案的每一个分别代表一个不同的相应名字空间。其好处在于,资源的标识范围可以跨不同名字空间,并且每个方案可以具有不同的语法来标识其相应名字空间内的资源。例如,标识http名字空间中资源的语法和标识fpt名字空间中资源的语法可以不同。
遗憾的是,由于至少部分不同方案具有不同的语法,因此,配置对资源的访问,使得资源可以从多个名字空间内来访问,这如果不是不可能,也常常是困难的。即,使资源可从一个名字空间访问,一般就阻止该资源从其它名字空间来访问。例如,http方案一般不能用于标识已经配置为使用ftp方案(和使用ftp的传输)标识的资源。即,http//[域名]/[字母数字串]形式的URL一般不能用于标识ftp名字空间中的资源。
而且,典型的资源标识机制具有有限的查询能力。例如,一个URL子集共享一个公共语法,用于表示具有指定名字空间的分层关系。这个子集的URI可以具有<scheme>//<authority><path> <query>(<方案>//<当局><路径> <查询>)形式,其中查询部分是由在<scheme>//<authority><path>(<方案>//<当局><路径>)处的资源解释的信息串。这有利于对资源发出查询,诸如例如,以执行一个搜索或者发现资源能力。
然而,典型的资源标识机制即使有,也只有有限的功能来使用URI查询包含在名字空间中的资源的名字空间。用于某些名字空间的URI语法允许查询功能,但只在名字空间内的最低层(例如,在叶节点)。这至少部分地是由于现有的名字空间机制不将中间节点视为资源的事实所导致的。因而,可以格式化表示URI以查询特定端点处的文本文件,诸如例如,表示一个指定公司Web网站的URI。然而,格式化表示URI以只从每个以“.com”结束的域对同一名字空间分层结构查询文本文件,即使不是不可能,也是困难的。
而且,现有的搜索机制要求高速缓存大量的资源信息。例如,大多数因特网搜索引擎不断地扫描因特网中的新URL并在本地高速缓存该URL。当一个搜索(或者查询)被提交给搜索引擎时,搜索引擎搜索高速缓存的URL。因而,如果没有高速缓存资源的URL或者在高速缓存之后URL改变了,则在搜索结果中不能返回资源的该URL或正确URL。因此,促进更有效和可靠的资源访问的系统、方法、计算机程序产品是有益的。

发明内容
与背景技术有关的上述问题由本发明的原理来克服,本发明的目标是将资源组成集合以促进更有效和可靠的资源访问的方法、系统和计算机程序产品。在有些实施例中,在名字空间联盟基础结构中传输名字空间注册请求。接收注册一个名字空间分支的名字空间注册请求,该名字空间注册请求包括一个名字空间串,它标识该名字空间分支。一个至少单向的等价数字标识值如散列值,是基于平面URI方案的整个名字空间串或者基于直到分层的URL方案的名字空间串的第一路径段的部分产生的。名字空间注册请求被发送(并且有可能被路由)到一个名字空间管理器,它具有一个在数字上比其它名字空间管理器的标识符更接近至少单向的等价数字标识值的标识符。该名字空间分支与该名字空间管理器相关联。
在其它实施例中,在名字空间联盟基础结构中迁移一个名字空间注册请求。确定名字空间管理器已经满足了政策约束。标识能够迁移来满足与该政策约束相关联的政策动作的名字空间分支。该名字空间分支的现有注册,响应于该政策动作,被迁移到一个合作伙伴名字空间管理器。
在还有的其它实施例中,在名字空间联盟基础结构中处理一个名字空间注册请求。接收注册一个名字空间分支的名字空间注册请求。该名字空间注册请求包括一个标识该名字空间分支的名字空间串和一个请求注册该名字空间分支的供应者的标识符。确定名字空间管理器对该名字空间分支感兴趣。该名字空间串保存在一个经适当索引的名字空间注册数据库中。还确定注册请求发起者(例如名字空间供应者)的活动性随后要以什么频度来验证。
在还有一些实施例中,在名字空间联盟基础结构中发送(并且有可能路由)一个名字空间查找请求。接收包括标识一个名字空间分支的名字空间串的名字空间查找请求。一个至少单向的等价数字标识值如散列值,是基于平面URI方案的整个名字空间串或者基于直到分层URI方案的名字空间串的第一路径段的部分产生的。名字空间查找请求被发送(并且有可能被路由)到一个目的地名字空间管理器,例如,按照接近度量。目的地名字空间管理器可以是在一个具有唯一的在数字上最接近该至少单向的等价数字标识值的标识符的名字空间管理器的预定范围内的邻近名字空间管理器中的任何一个。名字空间查找请求被转送以交付给相应注册请求的发起者(例如名字空间供应者),它们已经表达了对该名字空间分支感兴趣或者负责该名字空间分支。
在还有一些另外的实施例中,在联盟名字空间基础结构中迁移一个名字空间查找请求。名字空间管理器接收一个名字空间分支的名字空间查找请求。该名字空间管理器包括一个唯一的名字空间标识符,它标识该名字空间分支。名字空间管理器唯一的标识符标识比一个或多个其它名字空间管理器的名字空间管理器唯一标识符更接近于所产生的名字空间分支唯一标识符(例如,至少单向的等价数字标识值)的名字空间管理器。检测名字空间分支已经被迁移到一个具有不同名字空间管理器唯一标识符的名字空间管理器的标志。
在还有一些其它实施例中,在联盟名字空间基础结构中处理一个名字空间查找请求。接收包括标识一个名字空间的名字空间分支的名字空间串的名字空间查找请求。标识该名字空间查找请求的名字空间查找请求类型。检测一个或多个已经注册了与该名字空间分支相关的名字空间的部分的供应者。基于所标识的名字空间查找请求类型,该名字空间查找请求被转送到至少一个供应者。
在其它实施例中,一个资源参加到联盟名字空间基础结构中的多个名字空间。建立资源的唯一资源标识符。在第一名字空间中发布该资源的可用性。该唯一资源标识符被链接到第一名字空间中一个现有的名字空间节点资源,使得可以穿过第一名字空间来标识该资源。在第二名字空间中发布该资源的可用性。该唯一资源标识符被链接到第二名字空间中的一个现有的名字空间节点资源,使得可以穿过第二名字空间来标识该资源。
在还有的一些其它实施例中,标识名字空间联盟基础结构中的一个资源子集。从一个发起者接收一个查询。该查询包括第一查询部分,它标识在名字空间分层结构的第一层上满足第一查询准则的第一部分资源。该查询包括第二查询部分,它标识从包括在第一部分资源内的资源中选择的第二部分资源。第二部分资源是在名字空间联盟基础结构中第二不同位置上标识的。第二部分资源的身分被返回给发起者。
在还有的其它实施例中,组织多个资源。确定一个资源被包括在一个或多个名字空间内,其中,这一个或多个名字空间的每一个被配置成组织一个或多个资源。标识在这一个或多个名字空间的第一名字空间内的第一资源,并且标识与该资源相关的名字空间。第一名字空间段用于将该资源链接到第一资源,使得可以穿越该名字空间段从第一资源导航到该名字空间内的该资源。
本发明的这些和其它目标和特征,通过下面的描述和所附权利要求书将变得更显而易见,或者可通过如下所述的本发明实践来了解。


为进一步阐明本发明的上述和其它优点与特征,将参考特定的实施例和说明它们的附图来呈现本发明的更具体的描述。要意识到,这些附图只示出了本发明的典型实施例,并因此不能认为是对本发明范围的限制。通过使用附图,用附加的特异性和细节来描述和说明本发明,这些附图是图1例示了一个名字空间联盟基础结构的例子。
图2例示了一个促进将请求间接地路由到合作伙伴的计算机体系结构的例子。
图3例示了一个名字空间联盟基础结构中名字空间管理器之间的二元关系。
图4例示了一个促进将名字空间联盟基础结构与其它协议集成的体系结构的例子。
图5例示了从一个名字空间的供应者和集合视图来看的名字空间联盟基础结构的例子。
图6例示了具有使其在多个名字空间中可用的资源的示例名字空间联盟基础结构。
图7A例示了一个路由名字空间注册请求的方法的示例流程图。
图7B例示了一个迁移名字空间注册请求的方法的示例流程图。
图7C例示了一个处理名字空间注册请求的方法的示例流程图。
图8A例示了一个路由名字空间查找请求的方法的示例流程图。
图8B例示了一个迁移名字空间查找请求的方法的示例流程图。
图8C例示了一个处理名字空间查找请求的方法的示例流程图。
图9例示了一个资源参加多个名字空间的方法的示例流程图。
图10例示了一个标识名字空间联盟基础结构中资源子集的方法的示例流程图。
图11例示了一个适合于本发明原理的操作环境。
图12例示了一个组织多个资源的方法的示例流程图。
图13例示了可以用于描述资源的示例模式分类法。
详细说明本发明的原理提供将资源组织成集合,以促进更有效和可靠的资源访问。在有些实施例中,在一个名字空间联盟基础结构中传输名字空间注册请求。接收注册一个名字空间分支的名字空间注册请求,该名字空间注册请求包括一个标识该名字空间分支的名字空间串。一个至少单向的等价数字标识值如散列值,是基于平面URI方案的整个名字空间串或者基于直到分层URI模式的名字空间串的第一路径段的部分产生的。名字空间注册请求被发送(并且有可能被路由)到一个名字空间管理器,它具有在数字上比其它名字空间管理器的标识符更接近该至少单向的等价数字标识值的标识符。将该名字空间分支与该名字空间管理器相关联。
在其它实施例中,在一个名字空间联盟基础结构中迁移一个名字空间注册请求。确定一个名字空间管理器已经满足了政策约束。标识能够迁移来满足与该政策约束相关联的政策动作的名字空间分支。该名字空间分支的现有注册,响应于该政策动作,被迁移到一个合作伙伴名字空间管理器。
在还有的其它实施例中,在一个名字空间联盟基础结构中处理一个名字空间注册请求。接收注册一个名字空间分支的名字空间注册请求。该名字空间注册请求包括一个标识该名字空间分支的名字空间串和请求注册该名字空间分支的供应者的标识符。确定名字空间管理器对该名字空间分支感兴趣。该名字空间串保存在一个经适当索引的名字空间注册数据库中。还确定注册请求发起者(例如名字空间供应者)的活动性随后要以什么频度来验证。
在还有一些实施例中,在一个名字空间联盟基础结构中发送(并且有可能路由)一个名字空间查找请求。接收包括标识一个名字空间分支的名字空间串的名字空间查找请求。一个至少单向的等价数字标识值如散列值,是基于平面URI方案的整个名字空间串或者基于直到分层URI方案的名字空间串的第一路径段的部分产生的。名字空间查找请求被发送(并且有可能被路由)到一个目的地名字空间管理器,例如,按照接近度量。目的地名字空间管理器可以是在一个具有唯一的在数字上最接近该至少单向的等价数字标识值的标识符的名字空间管理器的预定范围内的邻近名字空间管理器中的任何一个。名字空间查找请求被转送以交付给相应注册请求的发起者(例如名字空间供应者),它们已经表达了对该名字空间分支感兴趣或者负责该名字空间分支。
在还有一些另外的实施例中,在一个联盟名字空间基础结构中迁移一个名字空间查找请求。名字空间管理器接收一个名字空间分支的名字空间查找请求。该名字空间管理器包括一个唯一的名字空间标识符,它标识该名字空间分支。名字空间管理器唯一的标识符标识比一个或多个其它名字空间管理器的名字空间管理器唯一标识符更接近所产生的名字空间分支唯一标识符(例如,至少单向的等价数字标识值)的名字空间管理器。检测名字空间分支已经被迁移到一个具有不同名字空间管理器唯一标识符的名字空间管理器的标志。
在还有一些其它实施例中,在一个联盟名字空间基础结构中处理一个名字空间查找请求。接收包括标识一个名字空间的名字空间分支的名字空间串的名字空间查找请求。标识该名字空间查找请求的名字空间查找请求类型。检测一个或多个已经注册了与该名字空间分支相关的名字空间的部分的供应者。基于所标识的名字空间查找请求类型,该名字空间查找请求被转送到至少一个供应者。
在其它实施例中,一个资源参加联盟名字空间基础结构中的多个名字空间。建立资源的唯一资源标识符。在第一名字空间中发布该资源的可用性。该唯一资源标识符被链接到第一名字空间中一个现有的名字空间节点资源,使得可以穿过第一名字空间来标识该资源。在第二名字空间中发布该资源的可用性。该唯一资源标识符被链接到第二名字空间中的一个现有的名字空间节点资源,使得可以穿过第二名字空间来标识该资源。
在还有的一些其它实施例中,标识名字空间联盟基础结构中的一个资源子集。从一个发起者接收一个查询。该查询包括第一查询部分,它标识在名字空间分层结构的第一层上满足第一查询准则的第一部分资源。该查询包括第二查询部分,它标识从包括在第一部分资源内的资源中选择的第二部分资源。第二部分资源是在名字空间联盟基础结构中第二不同位置上标识的。第二部分资源的身分被返回给发起者。
在还有的其它实施例中,组织多个资源。确定一个资源被包括在一个或多个名字空间内,其中,这一个或多个名字空间的每一个被配置成组织一个或多个资源。标识在这一个或多个名字空间的第一名字空间内第一资源,并且标识与该资源相关的名字空间。第一名字空间段用于将该资源链接到第一资源,使得可以穿越该名字空间段从第一资源导航到该名字空间内的该资源。
在本发明范围内的实施例包括用于携带或者具有存储在其上的计算机可执行指令或数据结构的计算机可读介质。这类计算机可读介质可以是任何可用的、可由通用或专用计算机系统访问的介质。作为例子而非限制性地,这类计算机可读介质可以包括物理存储介质,诸如RAM、ROM、EPROM、CD-ROM或者其它光盘存储、磁盘存储或者其它磁存储设备,或者任何可以用于以计算机可执行指令、计算机可读指令或者数据结构或者可由通用或专用计算机系统访问的形式携带或者存储所需要的程序代码方法的其它介质。
在本说明书中以及在所附的权利要求书中,“网络(network)”被定义为一个或多个数据链接(有可能速度不同),支持在计算机系统和/或模块(例如,硬件和/或软件模块)之间传输电子数据。当信息通过网络或其它通信连接(或者硬线的,无线的,或者硬线或无线的组合)传送或者提供给计算机系统时,将该连接适当地视为计算机可读介质。因而,任何这类连接适当地称为计算机可读介质。上述的组合也应该包括在计算机可读介质内。计算机可执行指令包括,例如,使通用计算机系统或专用计算机系统执行某个功能或者一组功能的指令和数据。计算机可执行指令可以是,例如,二进制的,中间格式指令如汇编语言,或者甚至是源代码。在有些实施例中,硬件模块,诸如例如,专用集成电路或门阵列被优化以实现本发明的原理。
在本说明书中以及在所附的权利要求书中,“计算机系统(computersystem)”被定义为一个或多个软件模块,一个或多个硬件模块,或者它们的组合,它们一起工作以对电子数据执行操作。例如,计算机系统的定义包括个人计算机的硬件组件,以及软件模块,诸如个人计算机的操作系统。这些模块的物理布局不重要。计算机系统可以包括一个或多个通过网络耦合的计算机。同样,计算机系统可以包括一个单个的物理设备(诸如移动电话或者个人数字助理“PDA”),其中内部模块(诸如存储器和处理器)一起工作以对电子数据执行操作。而且,计算机系统可以包括专用硬件,诸如例如,包括专用集成电路的路由器。
那些本领域的熟练技术人员将意识到,本发明可在网络计算环境中实践,该环境具有许多类型的计算机系统配置,包括个人计算机、膝上型计算机、手持设备、多处理器系统、基于微处理器的或者可编程消费电子产品、网络PC、小型机、大型机、移动电话、PDA、寻呼机、路由器、网关、中介器(broker)、代理、防火墙、重定向器、网络地址翻译器等等。本发明还可在分布式系统环境中实践,其中本地和远程计算机系统通过网络链接起来(或者通过硬线数据链路,无线数据链路,或者通过硬线数据链路和无线数据链路的组合)共同执行任务。在分布式系统环境中,程序模块可位于本地和远程两者的存储器存储设备中。
在本说明书中以及在所附的权利要求书中,“资源(resource)”被定义为任何模块、对象、计算机系统、设备、文件、数据库项、模式、服务等等,它们可以用于满足指定的功能,诸如例如,存储数据,定义数据格式,打印文档等。资源可以由服务组件来支持和/或主机控。例如,文件资源可以具有一个作为访问该文件的服务组件的文件服务器。同样,会议室可以具有一个接待员邮箱作为安排会议时间的服务组件。实现的资源可跨多个其它资源分布。
资源还定义为包括名字空间节点资源,例如,被包括在一个名字空间内,促进或者提供对名字空间功能的访问,诸如例如,名字空间安全和管理功能,和/或可以被穿过以访问其它资源,诸如例如,另一个名字空间节点资源、计算机系统或计算机系统组件。在有些实施例中,名字空间节点资源可以以分布方式实现。而且,名字空间节点资源可以表示一个名字空间树中的相应节点。
在本说明书中以及在所附的权利要求书中,“资源描述符(resourcedescriptor)”定义为描述资源的数据结构(例如,按照资源描述符模式格式化的)。
在本说明书中以及在所附的权利要求书中,“名字空间(namespace)”定义为确定范围机制,用于将资源(例如,在因特网上的全部资源)分解成多个部分,在这些部分上可以执行解析、发现和消息路由。名字空间是可扩展的,因此可以定义新的范围并且各个范围可以是分层的。
名字空间可以视为森林,其中每个名字空间(树)表示为具有方案的统一资源标识符(“URI”)并且紧跟在其后的用作根的部分。URI方案可以是分层的或者是平面的。分层方案诸如“名字(name)”和“http”(与平面方案如“uuid”相反)可以由在方案名字之后“/”字符序列的存在来标识。分层方案的第一部分可以标识负责URI组件其余部分的命名授权机构。这类URI是由在方案名字之后的“//”字符序列的存在来标识的。名字空间可以既是分层的又是可路由的,意思是名字空间用作可以用于标识从发送者到接收者的通信路径的标识符。
在有些实施例中,名字空间可以定义为如下Namespace=Flat|Hierarchical(平面的|分层的)
Flat=Scheme‘’Opaque_part(方案‘’不透明部分)Hierarchical=Scheme“/”(‘/’Authority‘/’) Segment(‘/’Segment)*(方案“/”(‘/’授权机构‘/’) 段(‘/’段)*)Scheme=按URI一般句法由RFC-2396定义的Opaque-part=按URI一般句法由RFC-2396定义的Authority=按URI一般句法由RFC-2396定义的Segment=按URI一般句法由RFC-2396定义的资源可以使其在树中的任何分支上可用,并且给定资源可以在多个名字空间中揭示。而且,给定的名字空间可以标识单个资源或者名字空间分支(一组资源)。这样的分组可以是逻辑的或物理的,取决于名字空间的语义。分组是通过在所标识的名字空间分支上执行深度优先搜索来获得的。一旦一个资源分组已经被标识,就可以在它们上面执行许多操作,诸如选择满足某些准则的资源,仅发送(并且有可能路由)给定的消息到在一个分组中那些资源,等等。
单个资源可以视为一个平凡的集合。因而,每个资源可以分配一个名字(空间)。因为名字空间是可路由的,消息可以通过名字空间联盟基础结构被路由到任何具有名字的资源。这样的路由可以跨越信任边界并且穿过防火墙。
通常,资源可以分配一个或多个URI,它们可以用于访问该资源。一个URI,分配给资源的资源ID,在最低程度上可以跨越由一个给定的名字空间联盟基础结构实现的所有名字空间,使得资源可以以异乎寻常的方式被引用。其它有可能非唯一的URI也可以分配给资源。这些其它有可能非唯一的URI提供通过由一个给定名字空间联盟基础结构实现的名字空间内的附加位置来访问资源。资源可以分配至少一个有可能非唯一的URI,用于可以被穿过以访问该资源的每个名字空间。
图5例示从名字空间的供应者和集合观点来看的名字空间联盟基础结构的例子。名字空间联盟基础结构500示出供应者可以在名字空间树中任何分支上注册。而且,供应者可以注册在有可能不同树中的多个名字空间分支上。例如,供应者501注册为名字空间分支location/CorporateBuildings/bldg34(位置/公司大楼/大楼34)、location/CorporateBuildings/bldg50/floor2(位置/公司大楼/大楼50/楼层2)和location/CorporateBuildings/bldg50/floor1/room1304(位置/公司大楼/大楼50/楼层1/房间1304)。供应者502注册为名字空间分支location/CorporateBuildings/bldg50(位置/公司大楼/大楼50)和location/CorporateBuildmgs/bldg26(位置/公司大楼/大楼26)注册。供应者503向location/CorporateBuildings/bldg50/floor1(位置/公司大楼/大楼50/楼层1)。
如图5所示,应用可以将名字空间视为可以分层嵌套的资源逻辑集合。即,中间名字空间节点(例如,Location/CorporateBuildings/bldg50/floor1(位置/公司大楼/大楼50/楼层1)和Location/CorporateBuildings/bldg50(位置/公司大楼/大楼50)被视为资源一名字空间节点资源。应用可以有效地以相干和可伸缩的方式在这类逻辑集合上操作,包括发布、搜索、定位、跟踪、确定来自集合内部的事件的目标与源。注意,不是逻辑集合内的所有资源有必要定位在单个计算机系统或设备上。资源可以在空间和时间上跨计算机系统和设备分布。名字空间联盟基础结构照管有效地将查找请求路由到参加任何给定集合的计算机系统和设备,从而对应用提供统一和一致的视图。
图6例示了使其资源在多个名字空间中可用的示例名字空间联盟基础结构600。URIOrganization/Product(组织/产品)标识名字空间树601的根。同样,URILocation/Bldg(位置/大楼)42标识名字空间树602的根。如所示的,Printer(打印机)603既在名字空间树601中又在名字空间树602中出现。
在本说明书和所附的权利要求书中,名字空间节点资源可以简单地视为名字空间树中的一个节点。有些名字空间节点资源可以被视为根节点(例如,Location/Bldg(位置/大楼)42),其它的可以被视为中间节点(例如,Organization/Product/Devices Team(组织/产品/设备团队)),还有其它的可以被视为叶节点(例如,Location/Bldg 42/Floor 1/Room 112/Printer603(位置/大楼42/楼层1/房间112/打印机603))。然而,应该理解,一个名字空间树中的名字空间节点资源可以引用另一个名字空间树中的名字空间节点资源(或者其它资源)。因而,将名字空间节点资源视为一个名字空间树中的根、中间或者叶不限制从其它名字空间树对该名字空间节点资源的查询。
名字空间还包括将两或多个名字空间节点资源链接(或者相关)起来的名字空间段。名字空间段可以用于链接同一名字空间中的名字空间节点资源。例如,名字空间段611(“Devices(设备)”)链接Organization/Product(组织/产品)到设备团队。而且,名字空间段可以链接(或者连接)不同名字空间树中的名字空间节点资源,从而提供符号链接的功能。穿过名字空间段包括导航到所有目标名字空间节点资源。例如,名字空间段641(“工程”)将PM Team(PM团队)连接到文件资源SpecTemplate.doc和Milestone.prj。
因此,可以穿过名字空间树601中的名字空间段611(“Devices(设备)”),名字空间段621(“设备”)和名字空间段631(“Printer(打印机)”)来标识Printer(打印机)603。同样,可以穿过名字空间树602中的名字空间段612(“Floor(楼层)1”)、名字空间段622(“Room(房间)1226”)和名字空间段632(“Printer(打印机)”)来标识Printer(打印机)603。应该理解,名字空间树601的URI方案和名字空间树602的URI方案可以不同。
由于同一资源可以参加多个名字空间并且提供符号链接功能,因此所有参加它们的名字空间和资源的全局视图形成有向图,其中名字空间段用作有标签的图边,而其它资源用作图节点。名字空间根有效地将这个全局图中的名字空间节点资源和其它资源划分成起始和可到达资源的集合,其中起始名字空间节点资源提供名字空间确定范围的基础。因此,用于实现查询的高速缓存的信息被减少并跨每个名字空间分布。
而且,任何给定的名字空间可以形成一个图,因为同一资源可以使其在多个名字空间分支上可用并且有些段可以连接以其它方式连接的名字空间节点资源。
图1例示名字空间联盟基础结构100的例子。名字空间联盟基础结构100包括名字空间管理器101,102,103,111和112,它们可以形成不同类型的结成联盟的合作伙伴。例如,名字空间管理器101,102,103彼此对等地结成联盟而没有根名字空间管理器。另一方面,名字空间管理器111和112分别与名字空间管理器101和102结成联盟,其中名字空间管理器101和102用作根名字空间管理器。不同类型的设备可以参加名字空间联盟基础结构,包括主机(例如,PC主机资源),消息路由器,消息网关(例如,防火墙,网络地址翻译(“NAT”盒,以及重定向器)和消息中介器(例如,发布-预订中介(pub-subintermediarie))。名字空间联盟基础结构100便利于总线协议(例如,活动性,控制,事件化和流化)。而且,名字空间联盟基础结构100可以使用相关的WS协议诸如例如WS-发现和WS-事件化来与第三方软件和硬件堆栈互操作。
通常,名字空间管理器101,102,103,111和112可以利用名字空间联盟协议来形成合作伙伴关系并且交换名字空间信息。合作伙伴关系的形成和名字空间信息的交换促进对名字空间资源更有效和可靠的访问。对等名字空间管理器(例如,名字空间管理器101,102和103)可与其它对等名字空间管理器交换名字空间信息。然而,其它名字空间管理器(例如,名字空间管理器111和112)可与相应的根名字空间管理器(例如,名字空间管理器101和102交换名字空间信息。名字空间管理器101,102,103,111和112每一个可以维护一个名字空间信息的数据库,诸如例如,什么名字空间管理器或者供应者对哪些名字空间分支感兴趣。
名字空间联盟基础结构100包括供应者121,122,123,124,126和127。每个供应者可以对名字空间联盟基础结构中一个或多个名字空间分支感兴趣。供应者与相应的名字空间管理器交换名字空间信息。例如,供应者122与名字空间管理器111交换名字空间信息。相应的名字空间管理器随后促进将名字空间信息传送到其它名字空间管理器。例如,名字空间管理器111可以将名字空间信息传送到名字空间管理器101,而名字空间管理器101可以接着将名字空间信息的有关部分传送到名字空间管理器102和103。
名字空间联盟基础结构(例如,名字空间联盟基础结构100)促进在名字空间上分发查找请求到合适的供应者。例如,供应者501,502,503可以是供应者121,122,123,124,126或127中每一个。
名字空间管理器可以使用各种各样不同机制来结成联盟。第一种结成联盟机制包括对等名字空间管理器转送名字空间信息到所有其它对等名字空间管理器。当一个名字空间管理器要加入一个名字空间联盟基础结构时,该名字空间管理器使用广播/多播发现协议,诸如例如WS-发现,来宣布它的存在(广播/多播Hello(你好))并且发出广播/多播探测信号来检测其它名字空间管理器。该名字空间管理器随后与已经存在于网络上的其它名字空间管理器建立简单的转送合作伙伴关系,并且接受与新加入的名字空间管理器的新合作伙伴关系。之后,该名字空间管理器可以将每个名字空间请求转送到它的合作伙伴。
第二种结成联盟机制包括对等名字空间管理器有效地转送所有名字空间信息到其它对等名字空间管理器。当一个新的名字空间管理器要加入一个名字空间联盟基础结构时,新名字空间管理器使用广播/多播发现协议,诸如例如WS-发现来宣布它的存在(广播/多播Hello(你好))并且发出广播/多播探测信号来检测作为名字空间联盟基础结构一部分的其它名字空间管理器。在检测到另一个名字空间管理器时,新的名字空间管理器与其它名字空间管理器建立合作伙伴关系。从已建立的合作伙伴关系,新的名字空间管理器了解到已经参加联盟名字空间基础结构的其它名字空间管理器的存在。它接着与这些新了解到的名字空间管理器建立合作伙伴关系并且接受任何新进入的合作伙伴关系请求。
名字空间管理器的到达/离开和名字空间注册两者都是通过名字空间联盟基础结构来充满,使得每个名字空间管理器都具有其它名字空间管理器和名字空间注册的全局知识。有了这样的全局知识,任何名字空间管理器可以将查找请求只转送到具有已在请求中指定的名字空间分支下注册的供应者/预订者的合作伙伴。
第三种结成联盟机制包括对等名字空间管理器间接地将名字空间信息转送到其它对等的名字空间管理器。在这第三种机制中,名字空间管理器分配唯一的标识符(ID的),诸如例如,128位或160位ID。负责给定名字空间树的名字空间管理器被确定是一个其ID最接近于由至少单向映射功能诸如例如散列给定名字空间树而获得的名字空间管理器。基于名字空间的映射方案的这样一个散列化在下面更详细地描述。
在这第三种机制中,名字空间管理器在结构上来充满名字空间管理器到达和离开。另一方面,名字空间注册被转送到被确定为负责在请求中指定的名字空间分支的名字空间管理器。为了可伸缩性、负载平衡和容错,接收名字空间注册的名字空间管理器可靠地在那些在其邻近集合中内的名字空间管理器中充满这些注册。一个指定名字空间管理器的邻近集合被确定为具有在一个有限的模ID的地址空间内指定名字空间管理器的ID任何一边上预定义范围内的ID的名字空间管理器集合。
与机制2相似,新加入的名字空间管理器使用广播/多播发现协议,诸如例如WS-发现来宣布它的存在(广播/多播Hello(你好))并且发出一个广播/多播探测信号来检测已经是名字空间联盟基础结构一部分的名字空间管理器。新名字空间管理器与所发现的名字空间管理器建立合作伙伴关系并且使用该合作伙伴关系了解参加名字空间联盟基础结构的其它名字空间管理器的存在。新名字空间管理器随后与新发现的名字空间管理器建立进一步的合作伙伴关系并且接收任何新进入的合作伙伴关系请求。它从其在它所负责的名字空间分支之下的合作伙伴接受进入的名字空间注册,并且可在其邻近集合上充满它们。
响应于进入的查找请求,新名字空间管理器咨询其注册数据库并且将请求转送到具有在请求中指定的名字空间分支之下注册的供应者/预订者的名字空间管理器。因而,当使用这第三种机制时,在名字空间联盟基础结构中的每个名字空间管理器具有所有其它名字空间管理器的全局知识,但除了将注册信息有效地划分在名字空间管理器中。名字空间管理器因而间接地将查找请求只转送到那些具有在请求中指定的名字空间分支之下注册的供应者/预订者的合作伙伴。这个间接是通过具有在请求中指定的名字空间分支之下的名字空间注册的全局知识的名字空间管理器来完成的。
第四种结成联盟机制包括对等名字空间管理器间接地将名字空间信息路由到其它对等的名字空间管理器。这第四种机制不同于第三种机制,在于名字空间管理器到达/离开和名字空间注册/查找请求两者全部是路由的而不是充满的。路由协议设计为保证名字空间查找请求和名字空间注册请求之间的集合点。
图2例示促进将请求间接地路由到合作伙伴的计算机体系结构200的例子。计算机体系结构200示出不同类型的计算机系统和设备有可能跨多个参加名字空间联盟基础结构的本地发现范围而扩展。
工作站233可以包括一个PnP供应者实例,它向在location/architecture200/scope224/Devices(位置/体系结构200/范围224/设备)名字空间分支之下的相应名字空间管理器注册。为通知其合作伙伴有关这个供应者实例的存在,工作站233经过名字空间联盟基础结构路由名字空间注册请求201。名字空间注册请求201最初被转送到膝上型231,它接着将名字空间注册请求201转送到消息中介器237,后者进而将名字空间注册请求201转送到消息网关241。消息网关241将注册信息注册请求201保存在它的数据库中并且返回成功消息204到工作站233。
随后,另一个供应者实例,这次是运行服务的供应者实例,在工作站233内出现活动,并且将它自己向在location/architecture200/scope221/Services(位置/体系结构200/范围221/服务)名字空间分支之下的相应名字空间管理器注册。这次名字空间管理器知道消息网关241负责在location/architecture200(位置/体系结构200)之下的注册并且将注册请求205直接转送到消息网关241。消息网关241将注册信息注册请求205保存在它的数据库中并且返回成功消息206到工作站233。
随后,打印机236(例如,UPnP打印机)加电并且发送宣告207。服务器234检测到宣告207,给打印机236分配名字空间location/architecture200/scope224/Devices(位置/体系结构200/范围224/设备),并且将注册请求208路由到消息中介器237。消息中介器237将注册请求208转送到消息网关241。消息网关241将注册信息注册请求208保存在它的数据库中并且返回成功消息210到服务器234。
随后,个人计算机242发出发现请求211以发现在名字空间分支location/architecture200(位置/体系结构200)之下的所有设备。由于个人计算机242不知道将发现请求211转送到哪里,因此它通过工作站243路由发现请求211。因为路由协议实质上保证给定名字空间树的注册和查找请求之间的集合点,所以工作站243将发现请求211转送到消息网关241。消息网关241将发现请求211转送到工作站233和服务器234两者。工作站233和服务器234分别发送应答消息214和216到个人计算机242。
这第四种机制通过将请求路由到具有在请求中指定的名字空间分支(例如,location/architecture200(位置/体系结构200)之下的名字空间注册的全局知识的名字空间管理器(消息网关241)来工作。这第四种机制实质上保证路由可以在0(logN)跳内完成,其中N是参加联盟名字空间基础结构的名字空间管理器的数量。由于这第四种机制有效地划分名字空间注册信息并且不要求所有参加的名字空间管理器的全局知识,因此它的尺度可达非常大的网络,甚至是因特网。
图3例示在一个名字空间联盟基础结构中名字空间管理器之间二元关系的例子。在图3中所示的二元关系是一种可用于实现名字空间管理器之间更有效路由的关系。使用反射的、反对称的、传递的和总的并且在名字空间管理器身分域上定义的二元关系,将参加名字空间联盟基础结构的名字空间管理器组织为一个经排序的列表。经排序列表的两端是连接的,从而形成环306。这使得在经排序列表中的每个名字空间管理器有可能将其本身视为在经排序列表的中间。经排序列表可以双向链接,因此任何名字空间管理器可以以任一方向穿过经排序列表。而且,存在从名字空间管理器身分的值域(例如,2,50或151)到名字空间管理器本身的1∶1映射。这个映射考虑到了在映射不紧密时是由于在值域中名字空间管理器的稀疏造成的。
在环306上的每个名字空间管理器可以包括一个路由表,它促进将名字空间信息(例如,注册和查找请求)路由到其它名字空间管理器。图3中示出一个具有ID 64的名字空间管理器的示例路由表。该路由表指示ID 64的后继者是ID 76。后继者可以是在环306上从ID 64顺时针方向的直接毗邻名字空间管理器。后继者可以改变,例如,当新的名字空间管理器(例如,具有ID为71的)加入或者现有的名字空间管理器(例如,ID 76)离开名字空间联盟基础结构时。
该路由表指示ID 64的先前者是ID 50。先前者可以是在环306上从ID 64逆时针方向的直接毗邻名字空间管理器。先前者可以改变,例如,当新的名字空间管理器(例如,具有ID为59的)加入或者现有名字空间管理器(例如,ID 50)离开名字空间联盟基础结构时。
该路由表指示ID 64的邻近者是ID 83,76,50和46。邻近者可以使用两个因子大小和范围中较大者来标识。名字空间管理器被标识为一个邻近的成员,当相应的ID在主ID(例如,以环306的顺时针或逆时针方向)的最小范围内或者小于在邻近中已经存在的某个配置的最小邻近大小时。例如,在环306上,指定的范围可以具有20的数量并且大小可以大于4。因此,在ID 64顺时针(+10)和逆时针(-10)两者的20个位置内的ID都是ID 64的邻近者。邻近者可以改变,例如,当名字空间管理器加入或者离开名字空间联盟基础结构时或者当指定的范围被改变时。例如,在大小等于4的情况下,具有ID 48的名字空间管理器可以替代具有ID 46的名字空间管理器。
该路由表指示ID 64可以直接路由到ID 200,2,30,46,50,64,76,83,98和135。因而,当具有ID 64的名字空间管理器接收请求时,名字空间管理器可以将请求路由到具有路由表中比较接近于请求中的名字空间管理器ID的ID的名字空间管理器。
图4例示促进将名字空间联盟基础结构与其它协议集成的体系结构400的例子。名字空间联盟基础结构可以支持基于供应者的扩展模型。因此,联盟名字空间基础结构可以与现有的协议集成,假定现有协议的资源模型与名字空间的兼容。体系结构400示出与现用目录402和UDDI服务器403互操作的名字空间管理器401,404,406(例如,名字空间联盟基础结构的)。实箭头指示名字空间管理器使用名字空间联盟协议通信,虚线区域指示名字空间管理器使用LDAP协议与现用目录402通信,而点线箭头指示名字空间管理器使用UDDI协议与UDDI服务器403通信。
发布-预订主题是名字空间的另一个示例用法。发布-预订主题可以视为对该主题的预订者的集合;因此,主题名字被视为名字空间。将发布-预订主题视为名字空间的优点是名字空间联盟基础结构可以用于将通知消息从发布者路由到预订者。对主题的预订者可以被视为名字空间注册请求并且对主题的发布可以被视为名字空间查找请求。
在有些实施例中,名字空间联盟基础结构可以给编程者提供类似总线的抽象来开发分布式应用。例如,名字空间联盟基础结构可以抽象活动性一应用使用这种机制来了解它们感兴趣的资源何时已经离开网络了。为了跟踪给定的资源,应用预订发送到在该资源的身分URI(例如,它的名字)之后命名的发布-预订主题的通知。通知给定资源已经离开网络的任何组件(例如应用)可以发布一个活动性通知消息给在资源的身分URI之后命名的主题,从而通知感兴趣跟踪该资源的其它应用。由于发布-预订的预订跨名字空间基础结构结成联盟并且由于许多身分方案是分层的(以从活动性观点捕捉资源的容纳(containment)方面),因此系统避免了简单检测系统的n2次ping(测试网络节点连通性)问题并且在网络规模很大时也非常好。而且,较感兴趣的组件(例如应用),对于给定的资源,越快注意到它已经离开网络,就越有利。
开发者可以将名字空间联盟基础结构视为在其中注册了资源诸如文件和事件源的云团。应用可以发出针对该云团的发现请求来发现已注册的资源。应用也可以请求该云团代表它们预订当前和将来的向该云团注册过的事件源。而且,应用可以预定在该云团中维护的发布-预订主题。任何人可以发布通知消息并且该云团照管将该消息转送给向其发布该消息的事件主题的预订者。
各种类型的资源可以在名字空间中发布,包括服务、设备、文件、主机、组件、数据库中的项、关于元数据的元数据(模式)等等。资源可以具有作为它的主管/支持它的服务组件。例如,文件源可以具有文件服务器作为访问该文件的服务组件。会议室可以具有接待员邮箱作为安排会议时间的服务组件。
每个资源可以与捕捉其描述性方面的资源描述符相关联。因而,可以查询资源描述符来标识感兴趣的资源。当标识了一个资源时,该资源可以通过该资源的相应服务方面来访问。可以发送到作为资源的主管/支持资源的服务的消息类型从一种资源类型改变成另一种类型。例如,文件服务器支持开放文件资源而接待员接受会议室的安排时间请求。
实现资源描述符的数据模型可以是可版本化的,可扩展的和可互操作的。这样一个资源数据模型可以跨许多当前的框架诸如分布式文件系统(“DFS”),AD和UDDI来共享。这样一个单一的共享的数据模型可以促进AD对象和DFS文件(或者形成其它资源管理系统的资源)被视为使用名字空间方法结成联盟的资源,并且通过发送消息给作为主管的服务来访问。
因此,资源可以定义为具有下列属性资源ID可以任选地用一组引用属性来增补并且可以在空间和时间上稳定的URI。可以表示为资源引用模式的实例。资源ID连同资源属性可以共同地表示资源的身分。
描述符资源专用模式实例,包含有关该资源的半静态元数据。该元数据用于资源选择。资源描述符模式可以分类。配置数字单调增强的数字,标识资源描述符数据的特定版本。这个数字每当资源描述符被修改时就增加。
实例ID单调增加的数字,标识活动资源的特定实例。例如,这可以与服务/设备资源的引导时间相同或者与文件资源的文件修改时间相同。
进一步参考描述符,设备可以具有按照一个或多个模式的元数据。例如,打印机可以具有按照描述该打印机不同方面的不同模式的元数据。资源描述符模式可以由组织如UPnP论坛工作组(例如,打印机模式可以由UPnP打印机工作组来标准化)和W3C来标准化。图13示出描述资源的示例分类1300。在分类1300内,不同模式通常表示为如下服务引用模式扩展资源引用模式并且指定一个动作类型列表,该列表标识由资源支持的消息,它的断言的政策容器(诸如所支持的传输),以及一组扩展名。
资源描述符模式扩展资源引用模式并且指定描述符的配置数字(见下面的说明),资源的友好名字,支持资源的服务的服务引用,以及一组扩展名。
名字空间节点描述符模式扩展资源描述符模式并且指定从它可达到的资源作为边缘描述符模式的实例。
边缘描述符模式指定在本地确定范围的边缘名字,边缘类型和目标资源。
设备描述符模式扩展资源描述符模式并且指定序列号和制造者名字。
打印机描述符模式扩展设备描述符模式并且指定打印机专用属性诸如分辨率,彩色打印的能力,每分钟页数,以及所支持的纸张大小。
以上述任何描述模式定义的任何信息可以包括在一个用于标识联盟名字空间基础结构中资源的查询中。例如,可以使用过滤器(或者查询)表达式搜索和导航描述符数据。例如,可以按照描述符模式或字段值类型来过滤,导航到从它的引用字段可到达的实例,对这些应用预订者的过滤器,等等。在有些实施例中,使用基于XPath的过滤器表达式。回来参考图6,使用XPath句法,在由资源描述符模式指定的描述数据上操作的过滤器表达式可以用于定位一个在Location/Bldg42/Floor1(位置/大楼42/楼层1)的可以彩色打印的打印机。
名字空间可以指定一个过滤器表达式,以URI段参数的形式,用于在选择和穿越的名字空间节点资源上定义的字段/属性。例如,名字空间Location/Bldg42/Floor1/Room1226;employee=″employee1″/printer(位置/大楼42/楼层1/房间1226;职员=“职员1”/打印机)仅当“Room 1226(房间1226)”描述符具有“employee(职员)”字段具有值“employee1(职员1)”时才穿越名字空间节点资源“Room 1226(房间1226)”。同样,名字空间Orgamzation/Product/DevicesTeam;building=″Bldg33″/Dev/Computer604;printer=″color″(组织/产品/设备团队;大楼=“大楼33”/设备/计算机604;打印机=“彩色”)仅当它的描述符具有值为“Bldg33(大楼33)”的“building(大楼)”字段(因而标识资源的第一部分)时才穿越名字空间节点资源“Devices Team(设备团队)”,并且仅当它的描述符具有值“color(彩色)”的“printer(打印机)”(意味着标识一台彩色打印机已经附在它上面了)字段时才选择名字空间节点资源“Computer 604(计算机604)”。
##使用唯一的名字空间管理器ID,可以提供下面的功能来路由名字空间联盟基础结构中的名字空间信息RouteNumerically(V,Msg)给定从名字空间管理器的值域标识的值V和消息“Msg”,将该消息递送给名字空间管理器X(它的身分可以使用映射功能映射到V)。
Neighborhood(X,S)Neighborhood(邻近)是在名字空间管理器X的任一侧的具有集的势等于S的名字空间管理器集合(例如在环306上)。
本发明的实施例还可以使用参考联盟的名字空间管理器的接近准则。接近准则可以定义为一种等价关系,将结成联盟的名字空间管理器集合划分成一组不相交的类(或分区)。通常,在集合S上的关系R如果满足下列属性就是等价关系·反射x是S的一个元素→x R x·对称给定S的x,y元素,x R y→y R x
·传递给定S的x,y,z元素,x R y∧y R z→x R z本发明的实施例可以支持多个不同接近准则,并且接近准则可以以偏序来排列。例如,认为所有属于“公司1”的名字空间节点资源是最接近的准则在认为在“公司1,位置A”内的所有名字空间管理器是最接近的准则之前。这是前面的准则(属于“公司A”)认为最接近的名字空间管理器的集合为后面的准则(属于“公司1,位置A”)认为最接近的名字空间管理器的集合的超集所得到的结果。另一方面,在认为“公司1”内所有名字空间管理器最接近的准则与认为“公司1,位置A”内所有名字空间管理器最接近的准则之间没有先后关系。
在计算联盟中每个名字空间管理器的路由名字空间管理器时考虑接近事项,其结果是在到最终目的地的路径上的每个路由跳跃保持在发起请求的名字空间管理器的最接近范围内。而且,仍能产生用数字表示的空间中名字空间管理器之间闭合距离的明显进步。
使用唯一的ID连同接近准则,可以提供下面的附加功能用于在名字空间联盟基础结构中路由名字空间信息RouteProximally(V,Msg,P)给定从名字空间管理器的域标识的值V和消息“Msg”,将该消息递送到名字空间管理器Y,其身分可以被映射到接近准则P认为等价的名字空间管理器之中的V。
当供应者/预订者在名字空间分支注册一个名字空间管理器时,注册请求被发送(并且有可能被路由)到负责维护在注册请求中指定的名字空间树的注册信息的合作伙伴名字空间管理器。可供替换地,发起名字空间注册请求到结构中的名字空间管理器是负责的名字空间管理器。将相对于图1的名字空间联盟基础结构和图6的名字空间来描述方法710。
方法710包括接收注册一个名字空间分支的名字空间注册请求的动作,该名字空间注册请求包括标识该名字空间分支的名字空间标识符(动作711)。例如,名字空间管理器112可以从供应者131接收注册请求132,它包括名字空间ID 142。由于名字空间管理器112不是对等名字空间管理器,因此名字空间管理器112可以将注册请求132转送到名字空间管理器102。名字空间管理器112可以在经过名字空间联盟基础结构100传递注册请求132之前按照它的方案所标识的规则规范化名字空间ID 142。
方法710包括一个动作,基于名字空间标识符连同该名字空间标识符路径部分的至少一部分来产生至少单向等价标识值(动作712)。例如,名字空间管理器102可以基于名字空间ID 142连同名字空间ID 142的路径部分的至少一部分来产生散列152。任何各种各样不同的散列函数,诸如例如,SHA,可以用于从名字空间串的各部分产生散列值。产生名字空间串的散列值可以基于名字空间联盟基础结构的配置而改变。
对于非分层的名字空间方案诸如“uuid”(例如,由在方案之后不包含“/”字符序列来标识的),可以在整个名字空间上产生散列。例如,整个名字空间串“uuida36fab9c-9c7f-42c3-97d8-36cd57e9bd29”可用于产生SHA散列值。
分层的名字空间可以是授权的或非授权的,方案部分之后用两个相应的字符序列“//”和“/”来区分。对于授权的名字空间诸如“name(名字)”,在跟随在“//”字符序列之后的方案部分、授权分量和名字空间的第一路径分量上产生散列。例如,名字空间串″name//red.pm.xrx200/printers/b42-1749-a″的″name//red.pm.xrx200/printers″部分可用于产生SHA散列值。对于非授权的名字空间诸如图6的“location(位置)”方案,可以在跟随在“/”字符序列之后的方案部分和名字空间的第一路径分量上产生散列。例如,名字空间串″location/Bldg42/Floor1/Room1226″的″location/Bldg42″部分。
方法710包括一个动作,发送名字空间注册请求到一个名字空间管理器,这个名字空间管理器具有一个在数字上比其它名字空间管理器的标识符更接近于至少单向的等价数字标识值的标识符(动作713)。例如,名字空间管理器102可以启用RouteNumerically(在数字上路由)函数,提供散列152和注册消息132作为输入,例如,RouteNumerically(散列152,注册消息132)。可供替换地,可以使用RouteProximally(最接近地路由)函数。在有些实施例中,名字空间注册请求被直接发送而没有路由发生。
联盟名字空间基础结构100随后使用联盟协议来将注册消息转送到适当的名字空间管理器。例如,注册消息132可以被路由到名字空间管理器103。名字空间管理器103可已将名字空间分支的责任迁移到了另一个名字空间管理器。因而,名字空间管理器103可返回一个指引消息给名字空间管理器102。因此,当已经指向了名字空间分支的责任时,名字空间管理器102可以接收指定适当的名字空间管理器的指引消息。名字空间管理器102进而可以发送注册请求132到适当的名字空间管理器。可以遇到一个或多个指引,直到有一个名字空间管理器接受或者拒绝该注册请求为止。
方法710包括一个动作,将该名字空间管理器与该名字空间分支相关联(动作714)。例如,名字空间管理器103可以与由名字空间ID 142标识的名字空间分支相关联(通过供应者131)。名字空间ID 142可以,例如,标识名字空间601或名字空间602的一部分。在名字空间管理器与名字空间分支之间的关联允许请求(例如,查找请求)指定在要转送的注册请求中所指定的之下的名字空间分支,代替被路由到在该关联中指定的名字空间管理器。当检测到名字空间管理器故障或者获得对一个不同名字空间管理器的指引时,关联被打断。当检测到故障时,路由后来的请求,直到可以形成一个新的关联为止。
图7B例示迁移名字空间注册请求的方法720的示例流程图。方法720将相对于图1的名字空间联盟基础结构和图6的名字空间来描述。
方法720包括一个动作,确定名字空间管理器已经满足了政策约束(动作721)。例如,名字空间管理器103可以确定在名字空间管理器103处正在处理的名字空间信息的数量(与联盟名字空间基础结构100有关的)已经超过一个配置的阈限。配置的阈限可以是,例如,保持在名字空间管理器处的注册总数或者在名字空间管理器处正在服务的查找请求的总数。
方法720包括一个动作,标识一个可以被迁移以满足与政策约束相关联的政策行动的名字空间分支(动作722)。例如,名字空间管理器103可以标识一个可以被迁移以减少在名字空间管理器103处理的名字空间信息低于配置的阈限的名字空间分支(例如,相应于名字空间ID 142)。名字空间管理器可标识一个更重地填充了的和/或更重地服务的名字空间分支用于迁移。
方法720包括一个动作,响应于政策行动,将名字空间分支的现有注册迁移到合作伙伴名字空间管理器(动作723)。例如,名字空间管理器103可以响应于一个行动,将现有注册迁移到合作伙伴(例如,邻近)名字空间管理器,这个行动是为减轻较重填充了的和/或较重服务的名字空间分支上的负担而发生的。
方法730也可以包括一个动作,接收相应于名字空间分支的名字空间请求。例如,名字空间管理器103可以接收相应于由名字空间ID 142表示的名字空间分支的注册请求132。
方法720还可以包括一个动作,采取行动将名字空间请求重定向到合作伙伴名字空间管理器。例如,由点线箭头指示,名字空间管理器103可以重新将注册请求132路由到名字空间管理器101。迁移名字空间分支的名字空间管理器可以启用RouteNumerically(在数字上路由)来将请求重新路由到不同的名字空间管理器。例如,可以启用RouteNumerically(H,migrateMsg)来将请求重新路由到由正在迁移的名字空间分支的至少单向的等价值标识的名字空间管理器(例如,名字空间管理器101)。例如,要迁移分支location/Bldg42/Floor1(位置/大楼42/楼层1),名字空间管理器103在串“location/Bldg42/Floor1”上产生散列H,启用RouteNumerically(H,migrateMsg)来标识负责被迁移分支的名字空间管理器101,并且将在被迁移名字空间分支之下的所有名字空间注册如location/Bldg42/Floor1/Room1226(位置/大楼42/楼层1/房间1226)和location/Bldg42/Floor1/Room1119(位置/大楼42/楼层1/房间1119)迁移到所标识的名字空间管理器101。
名字空间管理器也可决定将所有沿被迁移的名字空间分支的干线所遇到的名字空间注册转送到作为该分支主机的合作伙伴名字空间管理器。这促进合作伙伴名字空间管理器分支为所有指定该名字空间分支的查找请求服务,而不必让这些请求经历正在迁移的名字空间管理器,或者直接或者间接地,自始至终。正在迁移的名字空间管理器可以留在指示它已经迁移了指定名字空间分支之下的注册信息的树桩之后。正在迁移的名字空间管理器也可以废除对跟踪在被迁移的注册中指定的供应者/预订者的活动性通知的预订,如果有的话。因此,随后在由正在迁移的名字空间管理器接收的被迁移名字空间分支的干线之下和沿此干线的名字空间注册被转送到合作伙伴名字空间管理器。
图7C例示处理名字空间注册请求的方法730的示例流程图。方法720将相对于图1的名字空间联盟基础结构和图6的名字空间来描述。
方法730包括一个动作,接收注册一个名字空间分支的名字空间注册请求,该名字空间注册请求包括一个标识该名字空间分支的名字空间URI串,并包括一个唯一的引用或标识符,用于请求该名字空间分支中注册的供应者(或者预订者)(动作731)。例如,名字空间管理器103可以接收包括对供应者131的引用的注册请求132。
方法730包括一个动作,确定名字空间管理器对该名字空间分支感兴趣(动作732)。例如,名字空间管理器102可以确定名字空间管理器102是否负责由名字空间ID 142表示的名字空间分支(例如,Organiztion/Product/Messaging Team(组织/产品/消息团队))。当名字空间管理器102不负责时,名字空间管理器102可以将该名字空间注册请求(例如,注册请求132)转送到指定名字空间分支的负责的名字空间管理器(例如名字空间管理器103)。可供替换地,当名字空间管理器102不负责时,名字空间管理器102可以发送指引消息134到发起该注册请求(例如注册请求133)的名字空间管理器(例如,名字空间管理器103)来代替联系负责的名字空间管理器(例如,名字空间管理器101)。当名字空间管理器102负责时,名字空间管理器102可以保留该名字空间注册请求。
方法730包括一个动作,将名字空间标识符保存在适当索引的名字空间注册数据库(动作733)。例如,如果名字空间标识符是URI串,则以字母顺序存储在名字空间注册数据库中,其中较长的串排列得较高。例如,名字空间管理器103可以将名字空间ID 142保存在名字空间注册数据库中。围绕供应者131的虚线和相应的虚线框,指示名字空间管理器103已经将供应者131引用为对名字空间ID 142表示的名字空间感兴趣。
方法730还可以包括一个动作,确定随后要多么频繁地验证供应者的活动性。例如,名字空间管理器103可以确定随后要多么频繁地验证供应者131的活动性。名字空间供应者103可以可选地预订发布到由ID 161标识的供应者的发布-预订主题的活动性通知。发布-预订主题可以由ID 161标识。可供替换地,如果没有进行活动性预订,则给注册分配一段时间有限的租期。供应者131可以在租期期满之前通过直接联系名字空间管理器103来更新注册。其它活动性机制也可以使用。
名字空间管理器和供应者活动性可以跨分层结构来分布。位于分层结构中较高层处的名字空间管理器可以依赖于位于相似位置的其它名字空间管理器来报告相应的较低层名字空间管理器和供应者的活动性信息。例如在图1中,名字空间管理器103可以跟踪名字空间管理器102的活动性(两者都是根名字空间管理器)。名字空间管理器103可以依赖于名字空间管理器102来报告任何相应的较低层名字空间管理器(例如,名字空间管理器112)或者供应者(例如,供应者124)的故障。名字空间管理器102进而依赖于名字空间管理器103来报告相似类型故障(例如,供应者126的故障)。
在成功注册供应者131(或者失败)之后,名字空间管理器102可以发送指示成功(或失败)消息到供应者131。
有时,消费者(其它计算机系统或设备)可能希望访问由一个供应者管理的名字空间分支中的资源。为获得对资源的访问,消费者可发出查找请求以试图标识资源。查找请求可以在名字空间管理器处接收并且递送到一个或多个适当的供应者。通常,当名字空间管理器接收查找请求时,它将该查找请求路由到最接近它(如由有个预定义的接近度量确定的)并且朝着负责在该请求中指定的名字空间分支的名字空间管理器邻近的合作伙伴名字空间管理器。随着跨邻近名字空间管理器复制注册信息,该查找请求可以由在邻近集合中任何名字空间管理器来满足。
通过最接近发起该查找请求的名字空间管理器来路由,其结果是改善的网络吞吐量和动态负载平衡,因为从查找请求满足的角度,查找请求获得跨邻近名字空间管理器自动和有效地划分。为促进路由,映射查找请求中指定的名字空间ID的算法可以实质上与映射注册请求中指定的名字空间ID的算法相同。例如,从名字空间身分的值域到名字空间管理器的1∶1映射可以用于映射查找和注册请求两者的名字空间ID。
图8A例示了路由名字空间查找请求的方法810的示例流程图。方法810将相对于图1的联盟名字空间基础结构和图6的名字空间来描述。
方法810包括一个动作,接收名字空间查找请求,它包括一个标识名字空间分支的名字空间标识符(动作811)。例如,名字空间管理器103可以接收查找请求133。查找请求133可以指定标识名字空间树602的一个分支的名字空间ID 143,诸如例如,Location/Bldg 42/Floor 2/ConfRoom 2005(位置/大楼42/楼层2/会议室2005)。
方法810包括一个动作,基于该名字空间标识符产生一个至少单向的等价数字标识值(动作812)。例如,名字空间管理器102可以散列名字空间ID 143的方案部分连同名字空间ID 143的路径部分的至少一部分来产生散列153。
方法810包括一个动作,发送名字空间查找请求到目的地名字空间管理器(动作813)。目的地名字空间管理器包括在邻近的名字空间管理器中,这些名字空间管理器在一个名字空间管理器的预定范围之内,这个名字空间管理器具有一个在数字上最接近该至少单向的等价数字标识值的唯一标识符。为了路由查找请求133,名字空间管理器103可启用RouteProximally(最接近地路由)(或者RouteNumerically(在数字上路由))功能。例如,名字空间管理器103可以启用RouteProximally(散列153,查找消息133,接近准则P)来路由查找消息133到合作伙伴名字空间管理器102,因为在被认为在指定的接近准则P下最接近名字空间管理器103的名字空间管理器之中,它被标识为一个具有在数字上最接近的唯一ID的名字空间管理器。通过RouteProximal1y(最接近地路由)功能,名字空间管理器102可以被标识。
方法810也可以包括一个动作,转送名字空间查找请求以递送到一个或多个对该名字空间分支感兴趣的供应者。例如,名字空间管理器103可以转送查找请求133到名字空间管理器102。名字空间管理器102可以转送查找请求133到供应者131。
图8B例示迁移名字空间查找请求的方法820的示例流程图。方法820将相对于图1的名字空间联盟基础结构和图6的名字空间来描述。
方法820包括一个动作,接收一个名字空间分支的名字空间查找请求(动作821)。名字空间查找请求包括一个唯一的名字空间标识符,它标识特定的名字空间分支。例如,名字空间标识符可以是URI ID 143。而且,所接收的名字空间查找请求可任选地包括一个至少单向的等价数字标识值,它是基于指定的名字空间分支的标识符产生的。例如,它可以从方案和名字空间ID 143的路径部分的至少一部分产生的散列值153。该名字空间管理器的名字空间管理器标识符比一个或多个其它名字空间管理器的名字空间分支标识符更接近名字空间分支标识符。名字空间管理器102可以接收查找请求133作为唯ID 172比名字空间联盟基础结构100中其它名字空间管理器的唯一标识符(例如ID174)更接近散列153的结果。
方法820包括一个动作,检测该名字空间分支已经被迁移到一个具有不同名字空间分支标识符的不同名字空间管理器的标志(动作822)。例如,名字空间管理器102可以检测树桩的存在,它指示由名字空间ID 143表示的名字空间分支已经被迁移到名字空间管理器101。
方法820还可以包括至少通知发起的名字空间管理器该名字空间分支已经被迁移到不同名字空间管理器的动作。例如,名字空间管理器102可以至少通知名字空间管理器103由名字空间ID 143表示的名字空间分支已经被迁移。例如,名字空间管理器102可以发送指引消息134到名字空间管理器103,指示名字空间管理器103应该联系名字空间管理器101或者为被迁移的分支发起一个新的查找请求132。
名字空间管理器103可以遵循来自名字空间管理器102包括在指引消息中的指令。
名字空间管理器102可以可供替换地重新路由查找请求133本身,通过在其本身上启用RouteProximally(新ID H,查找请求133,接近准则CriteriaP)。例如,与原始散列值相比,新ID H可以通过散列经迁移的名字空间分支的整个分量来产生,前者是通过只散列方案部分和路径组件的第一部分来产生的。启用RouteProximally(最接近地路由)可以使查找请求133被路由到其它名字空间管理器来递送到名字空间管理器101(如由包括查找请求133的虚线箭头所指示的)。
图8C例示处理名字空间查找请求的方法830的示例流程图。方法830将相对于图1的名字空间联盟基础结构和图5的名字空间来描述。
方法830包括一个动作,接收一个名字空间查找请求,它包括一个标识名字空间的名字空间分支的名字空间标识符(动作831)。例如,名字空间管理器102可以接收包括名字空间ID 143的名字空间查找请求133。名字空间ID 143可以标识名字空间基础结构500的名字空间分支。
方法830包括一个动作,标识名字空间查找请求的名字空间查找请求类型(动作832)。例如,名字空间管理器102标识查找请求133的名字空间查找请求类型。在有些实施例中,名字空间查找请求类型可以是一般的请求类型(例如对于任何名字空间分支)或者确定目标的请求类型(例如对于一个特定的名字空间分支)。
方法830包括检测一个或多个供应者已经注册了与该名字空间分支有关的名字空间的各部分的动作(动作833)。例如,名字空间管理器102可以检测一个或多个供应者已经注册了由名字空间ID 143表示的名字空间分支有关的名字空间的各部分。现在参考图5,如果名字空间ID 143是Location/CorporateBuildings/Bldg 50/Floor1(位置/公司大楼/大楼50/楼层1),则供应者501、502和503可以被标识。供应者502已经为Room 1304(房间1304)(名字空间树500的Floor1(楼层1)下面)注册,供应者502为Bldg 50(楼层50)(在名字空间树500的楼层1上面)注册,而供应者503向名字空间树500的Floor1(楼层1)注册。
方法830还可以包括一个动作,将名字空间查找请求转送到至少一个供应者,基于所标识的名字空间查找请求类型。例如,名字空间管理器102可以将查找请求133转送到供应者501、502和503中的一个或多个。
对于一个一般请求,名字空间管理器102将请求转送到所有其注册名字空间分支是查找请求中指定的名字空间管理器的前缀或后缀的供应者。例如,名字空间管理器102可将名字空间查找请求133转送到供应者501、502和503,如果名字空间ID 143是Location/Corporate Buildings/Bldg 50/Floor1(位置/公司大楼/大楼50/楼层1)。对于一个确定目标的请求,名字空间管理器将请求只转送到其注册名字空间分支是查找请求中指定的名字空间管理器的最大前缀的供应者。然而,对于一般和确定目标类型两者,如果不止一个给定供应者的拷贝诸如501可用,则名字空间管理器102将请求转送到在所选择的接近度量之下较接近查找请求的起点(在这种情况下,名字空间管理器103)的供应者。
名字空间管理器103可以在由名字空间ID 143表示的名字空间分支与名字空间管理器102之间创建一关联(例如,将它存储在名字空间数据库中)。这样一个关联促进名字空间查找请求指定在关联中指定的名字空间分支之下的一个名字空间分支(例如,在Location/Corporate Buildings/Bldg 50/Floor1(位置/公司大楼/大楼50/楼层1)之下)要被转送而不是被路由到名字空间管理器102。关联在检测到目标名字空间管理器故障或者获得对一个不同名字空间管理器的指引时被打断。在前一情况下,路由以后的请求,直到可以形成一个新的关联。
图9例示资源参加多个名字空间的方法900的示例流程图。方法900将相对于图6中的名字空间树描述。
方法900包括一个动作,创建资源的唯一资源标识符(动作901)。动作901可以包括创建相应于该资源的URI的路径部分。例如,可以为一个打印机建立“printer 603(打印机603)”的标识符。
方法900包括一个动作,在第一名字空间中发布该资源的可用性(动作902)。例如,打印机603可以发布它在名字空间树601中的可用性。方法900包括一个动作,将唯一资源标识符链接到第一名字空间中的第一名字空间节点资源,使得第一名字空间可以被穿过以标识该资源(动作903)。例如,可以建立名字空间段631以将打印机603链接到“Dev Team(设备团队)”名字空间节点资源。因此,名字空间树601(以及“Dev Team(设备团队)”名字空间节点资源)可以被穿过以标识打印机603。
方法900包括一个动作,在第二名字空间中发布该资源的可用性(动作904)。例如,打印机603可以发布它在名字空间树602中的可用性。方法900包括一个动作,将唯一资源标识符链接到第二名字空间中第二名字空间节点资源,使得第二名字空间可以被穿过以标识该资源(动作905)。例如,可以建立名字空间段632,将打印机603链接到“Room 1226(房间1226)”名字空间节点资源。因此,名字空间树602(和“Room 1226(房间1226)”名字空间节点资源)可以被穿过以标识打印机603。
图10例示了标识名字空间联盟基础结构中资源子集的方法1000的示例流程图。方法1000将相对于图6中的名字空间树描述。
方法1000包括一个动作,从设备接收查询(动作1001)。例如,名字空间树602的供应者可以从可网络连接到该供应者的设备接收查询。该查询包括第一查询部分,标识满足名字空间分层结构中第一层上的第一查询准则的第一部分资源。例如,第一查询部分可以标识在穿过名字空间段“Floor 2(楼层2)”之后满足第一查询准则的第一部分资源(在名字空间树602中)。第一部分资源可以是,例如职员,而第一准则也可以包括例如分配给“Messaging Team(收发消息团队)”的准则。因而,第一查询部分可以标识所有分配给在(Bldg 42(大楼42)的)Floor 2(楼层2)上工作的“Messaging Team(收发消息团队)”的职员。在有些实施例中,第一查询准则用于导航通过引用第一部分资源的资源属性。
查询包括第二查询部分,标识从包括在第一部分资源中的资源中选择的第二部分资源。例如,第二查询部分可以标识在穿过名字空间段“Room 2005(房间2005)”之后满足第二查询准则的第二部分资源(在名字空间树602中)。第二部分资源可以是例如管理员,而第二准则可以是例如设备。因而,第二查询部分可以标识在Room 2005(房间2005)中带有办公室小房间的打印机管理员。在有些实施例中,第二查询准则用于导航通过引用第二部分资源的第一部分资源的属性。
因此,提供从第一查询部分标识的资源作为到第二查询部分的输入,所接收的查询结果可以(取决于资源模式的字段定义)标识带有在第二楼层上Room2005(房间2005)的办公室的且分配给“Messaging Team(收发消息团队的)打印机管理员。
方法1000包括一个动作,返回第二部分资源的身分给该设备(动作1002)。例如,名字空间树602的供应者可以返回ConfRoom 2005(会议室2005)中设备的管理员身分给网络可连接的设备,这些设备是由收发消息团队的职员拥有的。
图12例示了组织多个资源的方法120的示例流程图。方法1200将相对于图6中的名字空间基础结构600来描述。
方法1200包括一个动作,确定一个新的资源要包括在一个或多个名字空间中,一个或多个名字空间的每一个配置为组织一个或多个资源(动作1201)。例如,可以确定打印机603要被包括在名字空间601和/或名字空间602中。方法1200包括一个动作,标识一个或多个名字空间的第一名字空间内的第一资源要与新资源相关(动作1202)。例如,可以标识在名字空间602中的房间1226要与打印机603相关。同样,可以标识名字空间601中的Dev Team(设备团队)要与打印机603相关。
方法1200包括一个动作,使用第一名字空间段链接新资源到第一资源,使得该名字空间段可以被穿过以从现有资源导航到该名字空间内的新资源(动作1203)。例如,名字空间段632可以用于链接603到房间1226,使得名字空间段632可以被穿过以从房间1226导航到打印机603。同样,名字空间段631可以用于链接打印机到Dev Team(设备团队),使得名字空间段631可以被穿过以从Dev Team导航到打印机603。
图11和下面的讨论目的是要提供适合于实现本发明的示例计算环境的简短概括的说明。尽管没有要求(例如,当在硬件中实现时),但本发明将在计算机可执行指令的一般上下文诸如由计算机系统执行的程序模块中描述。通常,程序模块包括例程、程序、对象、组件、数据结构等等,它们执行特定的任务或者实现特定的抽象数据类型。计算机可执行指令,相关联的数据结构,以及程序模块表示执行在此所揭示方法的动作的程序代码的装置。
参考图11,实现本发明的示例系统包括计算机系统1120形式的通用计算设备,包括处理单元1121,系统存储器1122,以及耦合包括系统存储器1122在内的各种系统组件到处理单元1121的系统总线1123。处理单元1121可以执行设计为实现包括本发明特征在内的计算机系统1120特征的计算机可执行指令。系统总线1123可以是任何若干类型总线结构,包括存储器总线或存储器控制器,外设总线,以及使用任何各种各样总线体系结构的局部总线。系统存储器包括只读存储器(“ROM”)1124和随机存取存储器(“RAM”)1125。基本输入/输出系统(“BIOS”)1126,包含诸如在启动时帮助在计算机系统1120内元件之前传输信息的基本例程,可存储在ROM 1124中。
计算机系统1120也可包括读写硬磁盘1139的硬磁盘驱动器1127,读写可移动磁盘1129的磁盘驱动器1128,以及读写可移动光盘1131诸如CD-ROM或其它光介质的光盘驱动器1130。硬磁盘驱动器1127,磁盘驱动器1128和光盘驱动器1130分别通过硬盘驱动器接口1132、磁盘驱动器接口1133和光盘驱动器接口1134连接到系统总线1123。驱动器及其相关联的计算机可读介质为计算机系统1120提供计算机可执行指令、数据结构、程序模块和其它数据的非易失性存储。尽管在此描述的示例环境使用硬磁盘1139、可移动磁盘1129和可移动光盘1131,但可以使用其它类型的计算机可读介质,包括磁带、闪存卡、数字多功能盘,伯努利盒(Bernoulli cartridge)、RAM、ROM等等。
包括一个或多个程序模块的程序代码方法可存储在硬盘1139、磁盘1129、光盘1131、ROM 1124或RAM 1125,包括操作系统1135,一个或多个应用程序1136,其它程序模块1137和程序数据1138。用户可通过键盘1140、定点设备1142或其它输入设备(未示出)诸如例如话筒、操纵杆、游戏垫、扫描仪等等将命令和信息输入到计算机系统1120中。这些和其它输入设备可以通过耦合到系统总线1123的输入/输出接口1146连接到处理单元1121。输入/输出接口1146在逻辑上表示任何多种多样的不同接口,诸如例如,串行端口接口,PS/2接口,并行端口接口,通用串行总线(“USB”)接口,或者电气和电子工程协会(“IEEE”)1394接口(即,FireWire接口),或者甚至可在逻辑上表示不同接口的组合。
监示器1147或其它显示设备也可以通过视频接口1148连接到系统总线1123。扬声器1169或者其它音频输出设备也通过音频接口1149连接到系统总线1123。其它外围输出设备(未示出),诸如例如,打印机也可以连接到计算机系统1120。
计算机系统1120可连接到网络,诸如例如,办公室级或者企业级计算机网络,家庭网络,内联网,和/或因特网。计算机系统1120可以通过这样的网络与外部源诸如例如远程计算机系统,远程应用和/或远程数据库交换数据。
计算机系统1120包括网络接口1153,通过它计算机系统1120从外部源接收数据和/或发送数据到外部源。如图11所示,网络接口1153促进通过链路1151与远程计算机系统1183的数据交换。网络接口1153可以在逻辑上表示一个或多个软件和/或硬件模块,诸如例如网络接口卡和相应的网络驱动程序接口规范(“NDIS”)堆栈。链路1151表示网络的一部分(例如以太网段),并且远程计算机系统1183表示网络的一个计算机系统。
同样,计算机系统1120包括输入/输出接口1146,通过它计算机系统1120从外部源接收数据和/或发送数据到外部源。输入/输出接口446通过链路459耦合到调制解调器454(例如,标准调制解调器,电缆调制解调器,或者数据订户线(“DSL”)调制解调器),通过它计算机系统1120从外部源接收数据和/或发送数据到外部源。如图11所示,输入/输出接口1146和调制解调器1154促进通过链路1152与远程计算机系统1193的数据交换。链路1152表示网络的一部分,而远程计算机系统1193表示网络的一个计算机系统。
尽管图11表示适合于本发明的操作环境,但本发明的原理可在任何能够实现本发明原理的(如果必要可做适当修改的)系统中使用。在图11中例示的环境仅是说明性的,并且决不表示可实现本发明原理的多种多样环境的一小部分。
按照本发明,名字空间管理器,供应者和资源以及相关联的数据,包括名字空间数据库、名字空间标识符和串、散列、资源标识符、路由表和名字空间树,可从任何与计算机系统1120相关联的计算机可读介质中存储和访问。例如,这类模块的部分和相关联程序数据的部分可包括在操作系统1135、应用程序1136、程序模块1137和/或程序数据1138中,以存储在系统存储器1122中。
当大容量存储设备诸如例如硬磁盘驱动器1139耦合到计算机系统1120,这类模块和相关联的程序数据也可存储在大容量存储设备中。在网络化环境中,相对于计算机系统1120所示的程序模块或其部分,可以存储在远程存储器存储设备中,诸如系统存储器和/或与远程计算机系统1183相关联的大容量存储设备和/或远程计算机系统1193中。这类模块的执行可在分布式环境中完成,如前所述。
本发明可在不脱离它精神或实质特性的情况下以其它特定的形式实现。所述本发明是要在所有方面被认为只是说明性而不是限制性的。本发明的范围因此是由所附的权利要求书而不是由上述说明来表示的。所有来自权利要求书的等价意义和范围内的改变要包括在它们的范围之内。
权利要求
1.一种用于在一名字空间联盟基础结构中组织多个资源的方法,其特征在于,所述方法包括确定一个新资源要包括在一个或多个名字空间中的动作,所述一个或多个名字空间的每一个被配置成组织一个或多个资源;标识所述一个或多个名字空间的第一名字空间中要与所述新资源相关的第一资源的动作;以及使用第一名字空间段将所述新资源链接到所述第一资源,使得所述名字空间段可以被穿过,以从所述第一资源导航到所述名字空间内的所述新资源的动作。
2.如权利要求1所述的方法,其特征在于,还包括基于要包括在所述一个或多个名字空间中的资源建立所述一个或多个名字空间的动作,所述一个或多个名字空间的每一个标识资源查询的起点,使得高速缓存的用于实现查询的信息被减少,并且跨所述一个或多个名字空间的每一个分布。
3.如权利要求1所述的方法,其特征在于,还包括标识所述一个或多个名字空间的第二名字空间中要与所述新资源相关的第二资源的动作;以及使用第二名字空间段将所述新资源链接到所述第二资源,使得所述名字空间段可以被穿过,以从现有资源导航到所述名字空间内的所述新资源的动作。
4.如权利要求1所述的方法,其特征在于,还包括发布所述第一名字空间中所述资源的可用性,使得所述第一名字空间可以被查询以定位所述资源的动作。
5.如权利要求1所述的方法,其特征在于,所述标识第一资源的动作包括查询所述名字空间内现有名字空间节点资源的属性的动作。
6.如权利要求1所述的方法,其特征在于,所述标识第一资源的动作包括标识所述第一名字空间中的中间名字空间节点资源的动作,所述中间名字空间节点资源具有可以在穿越所述第一名字空间期间被查询的属性。
7.如权利要求6所述的方法,其特征在于,所述标识所述第一名字空间中的中间名字空间节点资源的动作包括标识具有可以提供给过滤器作为输入的属性,以在穿越所述第一名字空间段时标识所述新资源的中间名字空间节点资源的动作。
8.如权利要求1所述的方法,其特征在于,还包括将URI分配给所述新资源,使得所述资源可以使用所述URI来访问的动作。
9.如权利要求8所述的方法,其特征在于,所述分配URI给所述新资源的动作包括分配唯一URI给所述资源,使得所述URI可以用于以异乎寻常的方式访问所述资源的动作。
10.如权利要求9所述的方法,其特征在于,还包括分配一个或多个附加URI给所述资源的动作,所述一个或多个附加URI的每一个用于从所述一个或多个名字空间之一内来访问所述新资源。
11.如权利要求8所述的方法,其特征在于,所述分配URI给所述新资源的动作包括分配可以用于在分层名字空间中标识所述新资源的URI的动作。
12.如权利要求8所述的方法,其特征在于,所述分配URI给所述新资源的动作包括分配可以在平面名字空间中标识所述新资源的URI的动作。
13.如权利要求8所述的方法,其特征在于,所述分配URI给所述新资源的动作包括分配具有一个或多个按照RFC-2396定义的部分的URI的动作。
14.如权利要求1所述的方法,其特征在于,使用第一名字空间段将所述新资源链接到所述第一资源包括除将所述第一资源链接到所述新资源之外,使用将所述第一资源链接到一个或多个其它资源的现有名字空间段的动作。
15.如权利要求1所述的方法,其特征在于,所述新资源是名字空间节点资源。
16.如权利要求1所述的方法,其特征在于,所述第一资源是名字空间节点资源。
17.如权利要求1所述的方法,其特征在于,还包括标识所述一个或多个名字空间的第二名字空间内要与所述新资源相关的第二资源的动作;以及使用第二名字空间段将所述新资源链接到所述第二资源,使得所述第二名字空间段可以被穿过,以从所述第二资源导航到所述第二名字空间内的所述新资源的动作。
18.一种在一名字空间联盟基础结构中在多个名字空间中注册资源的方法,其特征在于,包括建立资源的唯一资源标识符的动作;发布所述资源在第一名字空间中的可用性的动作;将所述唯一资源标识符链接到所述第一名字空间中的第一名字空间节点资源,使得所述第一名字空间可以被穿过以标识所述资源的动作;发布所述资源在第二名字空间中的可用性的动作;以及将所述唯一资源标识符链接到所述第二名字空间中的第二名字空间节点资源,使得所述第二名字空间可以被穿过以标识所述资源的动作。
19.如权利要求18所述的方法,其特征在于,所述发布所述资源在第一名字空间中的可用性的动作包括发布所述资源在一个来自多个划分资源以提供名字空间确定范围的基础的多个名字空间中的第一名字空间中的可用性的动作。
20.如权利要求18所述的方法,其特征在于,所述发布所述资源在第一名字空间中的可用性的动作包括发布所述资源在具有一个起始名字空间节点资源的第一名字空间中的可用性的动作,所述起始名字空间节点资源可以由其它资源查询以标识在所述名字空间内的所述资源。
21.如权利要求18所述的方法,其特征在于,所述将所述唯一资源标识符链接到所述第一名字空间中第一名字空间节点资源使得所述第一名字空间可以被穿过以标识所述资源的动作包括将URI与所述资源相关联的动作。
22.如权利要求21所述的方法,其特征在于,所述将所述第一名字空间的URI与所述资源相关联的动作包括分配唯一URI给所述资源使得所述唯一URI可以用于以异乎寻常方式访问所述资源的动作。
23.如权利要求22所述的方法,其特征在于,还包括分配一个或多个附加URI给所述资源的动作,所述一个或多个附加URI的每一个用于从所述多个名字空间之一内访问所述新资源。
24.如权利要求18所述的方法,其特征在于,所述将所述唯一资源标识符链接到所述第一名字空间中的第一名字空间节点资源使得所述第一名字空间可以被穿过以标识所述资源的动作包括在所述资源与所述第一名字空间节点资源之间形成一名字空间段的动作。
25.如权利要求18所述的方法,其特征在于,所述发布所述资源在第二名字空间中的可用性的动作包括发布所述资源在来自划分资源以提供名字空间确定范围的基础的多个名字空间之中的第二名字空间中的可用性的动作。
26.如权利要求18所述的方法,其特征在于,所述发布所述资源在第二名字空间中的可用性的动作包括发布所述资源在一个具有起始名字空间节点资源的第二名字空间中的可用性的动作,所述起始名字空间节点资源可以由其它资源查询以标识在所述名字空间内的所述资源。
27.如权利要求18所述的方法,其特征在于,所述将所述唯一资源标识符链接到所述第二名字空间中的第二名字空间节点资源使得所述第二名字空间可以被穿过以标识所述资源的动作包括将所述第二名字空间的URI与所述资源相关联的动作。
28.如权利要求18所述的方法,其特征在于,所述将所述唯一资源标识符链接到所述第二名字空间中的第二名字空间节点资源使得所述第二名字空间可以被穿过以标识所述资源的动作包括在所述资源与所述第二名字空间节点资源之间形成一名字空间段的动作。
29.如权利要求18所述的方法,其特征在于,所述资源是名字空间节点资源。
30.一种用于在一名字空间联盟基础结构中在所述名字空间联盟基础结构中实现查询的方法,其特征在于,所述方法包括从设备接收查询的动作,所述查询包括第一查询部分,所述第一查询部分标识满足第一查询准则的第一部分资源,所述第一部分资源是在名字空间分层结构中第一层处标识的;以及第二查询部分,所述第二查询部分标识从包括在第一部分资源中选择的满足第二查询准则的第二部分资源,所述第二部分资源是在名字空间中第二不同位置处标识的;以及返回所述第二部分资源的身分给所述设备的动作。
31.如权利要求30所述的方法,其特征在于,所述从设备接收查询的动作包括名字空间的起始名字空间节点资源接收查询的动作。
32.如权利要求30所述的方法,其特征在于,所述从设备接收查询的动作包括名字空间内的一中间名字空间节点资源从所述名字空间的根名字空间节点资源接收查询的动作。
33.如权利要求30所述的方法,其特征在于,所述从设备接收查询的动作包括接收具有第二查询准则的查询的动作,所述查询标识所述名字空间分层结构中第二层处的资源。
34.如权利要求30所述的方法,其特征在于,所述从设备接收查询的动作包括接收具有第二查询准则的查询的动作,所述查询标识在第二不同名字空间分层结构中的资源。
35.如权利要求30所述的方法,其特征在于,所述返回第二部分资源的身分给所述设备的动作包括对于所述第二部分资源的每一个,返回至少一个可以用于以异乎寻常的方式访问资源的唯一相应的URI的动作。
36.如权利要求35所述的方法,其特征在于,还包括分配一个或多个附加URI给所述第二资源的每一个的动作,所述一个或多个附加URI的每一个用于从所述多个名字空间之一内访问所述第二资源的每一个。
37.如权利要求30所述的方法,其特征在于,还包括从所述第一部分资源中的第一资源穿越一名字空间段到所述第二部分资源中的第二资源的动作,所述名字空间段满足所述第二查询准则。
38.如权利要求30所述的方法,其特征在于,还包括使用所述第一查询准则导航通过引用所述第一部分资源的资源属性的动作。
39.如权利要求30所述的方法,其特征在于,还包括使用所述第二查询准则导航通过引用所述第二部分资源的所述第一部分资源的属性的动作。
40.一种在名字空间联盟基础结构中使用的计算机程序产品,所述计算机程序产品用于实现一种组织多个资源的方法,所述计算机程序产品包括一个或多个计算机可读介质,所述介质具有存储在其上的计算机可执行指令,当由处理器执行时,使所述名字空间联盟基础结构执行下列动作确定一新资源要包括在一个或多个名字空间中,所述一个或多个名字空间的每一个配置为组织一个或多个资源;标识所述一个或多个名字空间的第一名字空间内要与所述新资源相关的第一资源;以及使用第一名字空间段将所述新资源链接到所述第一资源,使得所述名字空间段可以被穿过以从所述第一资源导航到所述名字空间内的所述新资源。
41.如权利要求40所述的计算机程序产品,其特征在于,还包括计算机可执行指令,当被执行时,使所述名字空间联盟基础结构执行下列动作基于要包括在所述一个或多个名字空间中的所述资源,建立所述一个或多个名字空间,所述一个或多个名字空间的每一个标识资源查询的起点,使得高速缓存的用于实现查询的信息被减少,并且跨所述一个或多个名字空间的每一个分布所述高速缓存的信息。
42.如权利要求40所述的计算机程序产品,其特征在于,还包括计算机可执行指令,当被执行时,使所述名字空间联盟基础结构执行下列动作发布所述资源在所述第一名字空间中的可用性,使得所述第一名字空间可以被查询以定位所述资源。
43.如权利要求40所述的计算机程序产品,其特征在于,所述计算机可执行指令当被执行时使所述名字空间联盟基础结构标识包括名字空间的第一资源的计算机可执行指令包括计算机可执行指令,当被执行时,使所述名字空间联盟基础结构标识所述第一名字空间中的一中间名字空间节点资源,所述中间名字空间节点资源具有可以在穿越所述第一名字空间时查询的属性。
44.如权利要求40所述的计算机程序产品,其特征在于,所述在被执行时使所述名字空间联盟基础结构标识第一资源的计算机可执行指令包括计算机可执行指令,当被执行时,使所述名字空间联盟基础结构标识一中间名字空间节点资源,它具有可以作为输入提供给过滤器的属性,以在穿越所述第一名字空间段时标识所述新资源。
45.如权利要求40所述的计算机程序产品,其特征在于,还包括计算机可执行指令,当被执行时,使所述名字空间联盟基础结构执行下列动作分配一URI给所述新资源,使得所述资源可以使用所述URI来访问。
46.一种在名字空间联盟基础结构中使用的计算机程序产品,所述计算机程序产品用于实现一种在多个名字空间中注册资源的方法,所述计算机程序产品包括一个或多个计算机可读介质,所述介质具有存储在其上的计算机可执行指令,当由处理器执行时,使所述名字空间联盟基础结构执行下列动作建立资源的唯一资源标识符;发布所述资源在第一名字空间中的可用性;将所述唯一资源标识符链接到所述第一名字空间中的第一名字空间节点资源,使得所述第一名字空间可以被穿过以标识所述资源;发布所述资源在第二名字空间中的可用性;以及将所述唯一资源标识符链接到所述第二名字空间中的第二名字空间节点资源,使得所述第二名字空间可以被穿过以标识所述资源。
47.如权利要求46所述的计算机程序产品,其特征在于,所述计算机可执行指令在被执行时使名字空间联盟基础结构将所述唯一资源标识符链接到所述第一名字空间中第一名字空间节点资源的该计算机可执行指令包括计算机可执行指令,当被执行时,使所述名字空间联盟基础结构在所述资源与所述第一名字空间节点资源之间形成一名字空间段。
48.如权利要求46所述的计算机程序产品,其特征在于,所述计算机可执行指令在被执行时使所述名字空间联盟基础结构将所述唯一资源标识符链接到所述第二名字空间中第二名字空间节点资源的该计算机可执行指令包括计算机可执行指令,当被执行时,使所述名字空间联盟基础结构在所述资源与所述第二名字空间节点资源之间形成一名字空间段。
49.一种在名字空间联盟基础结构中使用的计算机程序产品,所述计算机程序产品用于实现一种实现在所述名字空间联盟基础结构中的查询的方法,所述计算机程序产品包括一个或多个计算机可读介质,所述介质具有存储在其上的计算机可读指令,当由处理器执行时,使所述名字空间联盟基础结构执行下列动作从一设备接收查询,所述查询包括第一查询部分,所述第一查询部分标识满足第一查询准则的第一部分资源,所述第一部分资源是在名字空间分层结构中第一层处标识的;以及第二查询部分,所述第二查询部分标识从包括在第一部分资源中的资源中选择的满足第二查询准则的第二部分资源,所述第二部分资源是在名字空间中的第二不同位置标识的;以及返回所述第二部分资源的身分给所述设备。
50.如权利要求49所述的计算机程序产品,所述计算机可执行指令在被执行时使所述名字空间联盟基础结构从一设备接收查询的该计算机可执行指令包括计算机可执行指令,当被执行时,使所述名字空间的起始名字空间节点资源接收所述查询。
51.如权利要求49所述的计算机程序产品,其特征在于,所述计算机可执行指令在被执行时使所述名字空间联盟基础结构从一设备接收查询的该计算机可执行指令包括计算机可执行指令,当被执行时,使所述名字空间联盟基础结构接收具有第二查询准则的查询,所述查询标识在所述名字空间分层结构中第二层处的资源。
52.如权利要求49所述的计算机程序产品,其特征在于,所述计算机可执行指令在被执行时使所述名字空间联盟基础结构从一设备接收查询的该计算机可执行指令包括计算机可执行指令,当被执行时,使所述名字空间联盟基础结构接收具有第二查询准则的查询,所述查询标识在第二不同名字空间分层结构中的资源。
53.如权利要求49所述的计算机程序产品,其特征在于,还包括计算机可读指令,当被执行时,使所述名字空间联盟基础结构执行下列动作从所述第一资源部分中的第一资源穿越一名字空间段到所述第二部分资源中的第二资源,所述名字空间段满足第二查询准则。
全文摘要
本发明扩展了将资源组织成集合以促进更有效和可靠的资源访问的方法、系统和计算机程序产品。名字空间管理器彼此通信以形成联盟名字空间基础结构。该基础结构可以有效地路由、迁移和处理名字空间请求,诸如例如,来自请求管理名字空间各部分的供应者的名字空间注册请求和来自请求对受管理资源访问的消费者的查找请求。资源可以注册在多个不同名字空间中并且使它们可以从多个不同名字空间访问。资源可以使用嵌套的查询来标识,这些查询在分层名字空间的多个层上过滤结果。
文档编号H04L29/12GK1755694SQ20051011332
公开日2006年4月5日 申请日期2005年9月30日 优先权日2004年9月30日
发明者G·K·R·卡其瓦亚, R·L·哈萨 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1