文档

Java™ 教程
隐藏目录
命名和目录概念
路径: Java 命名和目录接口

课程:命名和目录概念

命名概念

任何计算系统中的一个基本设施是命名服务,即通过名称与对象关联并根据名称找到对象的方法。在使用几乎任何计算机程序或系统时,您总是在给一个对象或另一个对象命名。例如,当您使用电子邮件系统时,必须提供收件人的名称。要访问计算机中的文件,必须提供其名称。命名服务允许您根据名称查找对象。

使用名称引用对象。

命名服务的主要功能是将人们友好的名称映射到对象,例如地址、标识符或计算机程序通常使用的对象。

例如,Internet域名系统(DNS)将机器名称映射到IP地址:

www.example.com ==> 192.0.2.5

文件系统将文件名映射到程序可以使用的文件引用,以访问文件的内容。

c:\bin\autoexec.bat ==> 文件引用

这两个示例还说明了命名服务存在的广泛范围——从在Internet上为对象命名到在本地文件系统中为文件命名。

名称

要在命名系统中查找对象,需要提供对象的名称。命名系统确定名称必须遵循的语法。这种语法有时被称为命名系统的命名约定。名称由组件组成。名称的表示包括一个组件分隔符,用于标记名称的组件。

命名系统 组件分隔符 名称
UNIX文件系统 "/" /usr/hello
DNS "." sales.Wiz.COM
LDAP "," 和 "=" cn=Rosanna Lee, o=Sun, c=US

UNIX文件系统的命名约定是文件名根据相对于文件系统根目录的路径命名,路径中的每个组件都使用正斜杠字符("/")从左到右分隔。例如,UNIX的路径名/usr/hello表示文件系统根目录中名为usr的文件目录中的文件hello

DNS命名约定要求DNS名称中的组件从右到左排序,并由点字符(".")分隔。因此,DNS名称sales.Wiz.COM表示相对于DNS条目Wiz.COM的名称为sales的DNS条目。而DNS条目Wiz.COM本身表示在COM条目中名称为Wiz的条目。

轻量级目录访问协议(LDAP)命名约定将组件从右向左排序,由逗号字符(“,”)分隔。因此,LDAP名称cn=Rosanna Lee, o=Sun, c=US表示相对于条目o=Sun,LDAP条目cn=Rosanna Lee的名称,而该条目相对于c=us。LDAP还有另一个规则,即名称的每个组件必须是一个名称/值对,名称和值之间用等号字符(“=”)分隔。

绑定

将名称与对象关联起来称为绑定。文件名绑定到文件。

DNS包含将机器名映射到IP地址的绑定。LDAP名称绑定到LDAP条目。

引用和地址

根据命名服务的不同,某些对象无法直接存储在命名服务中;也就是说,对象的副本不能放置在命名服务内部。相反,它们必须通过引用来存储;也就是说,将指向对象的指针引用放置在命名服务内部。引用表示关于如何访问对象的信息。通常,它是一种紧凑的表示,可以用于与对象进行通信,而对象本身可能包含更多的状态信息。使用引用,您可以联系对象并获取有关对象的更多信息。

例如,飞机对象可能包含飞机的乘客和机组人员列表、飞行计划、燃料和仪表状态以及航班号和起飞时间。相比之下,飞机对象引用可能只包含其航班号和起飞时间。引用是关于飞机对象的信息的一种更紧凑的表示,可以用于获取其他信息。例如,文件对象是使用文件引用来访问的。另一方面,打印机对象可能包含打印机的状态,例如当前队列和纸盘中的纸量。然而,打印机对象引用可能只包含有关如何连接到打印机的信息,例如其打印服务器名称和打印协议。

尽管引用通常可以包含任意信息,但将其内容称为地址(或通信端点)是有用的:关于如何访问对象的具体信息。

为了简单起见,本教程在不需要区分两者的情况下使用“对象”来指代对象和对象引用。

上下文

上下文是一组名称到对象的绑定。每个上下文都有一个关联的命名约定。上下文始终提供一个查找(解析)操作,返回对象,通常还提供绑定名称、解绑名称和列出绑定名称等操作。一个上下文对象中的名称可以绑定到具有相同命名约定的另一个上下文对象(称为子上下文)。

几个绑定到子上下文的上下文示例。

UNIX文件系统中的文件目录,例如/usr,表示一个上下文。一个相对于另一个文件目录命名的文件目录表示一个子上下文(UNIX用户称之为子目录)。也就是说,在文件目录/usr/bin中,目录binusr的子上下文。DNS域,例如COM,表示一个上下文。一个相对于另一个DNS域命名的DNS域表示一个子上下文。对于DNS域Sun.COM,DNS域SunCOM的子上下文。

最后,LDAP条目,例如c=us,表示一个上下文。一个相对于另一个LDAP条目命名的LDAP条目表示一个子上下文。对于LDAP条目o=sun,c=us,条目o=sunc=us的子上下文。

命名系统和命名空间

一个命名系统是一组连接的具有相同类型(它们具有相同的命名约定)的上下文,并提供一组公共操作。

实现DNS的系统是一个命名系统。使用LDAP进行通信的系统是一个命名系统。

命名系统为其客户提供执行与命名相关的操作的命名服务。通过其自己的接口访问命名服务。DNS提供了一个将机器名映射到IP地址的命名服务。LDAP提供了一个将LDAP名称映射到LDAP条目的命名服务。文件系统提供了一个将文件名映射到文件和目录的命名服务。

命名空间是命名系统中所有可能的名称的集合。UNIX文件系统具有一个命名空间,其中包含该文件系统中的所有文件和目录的名称。DNS命名空间包含DNS域和条目的名称。LDAP命名空间包含LDAP条目的名称。


上一页: 目录
下一页: 目录概念