类:命名和目录概念

Naming Concepts

任何计算系统的基本功能都是“命名服务”,即名称与对象相关联的方法,并且根据对象的名称查找对象。当使用几乎任何计算机程序或系统时,您总是在命名一个对象或另一个。例如,当您使用电子邮件系统时,必须提供收件人的姓名。要访问计算机中的文件,必须提供其名称。命名服务使您可以查找具有给定名称的对象。

名称用于引用对象。

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

例如,互联网域名系统(DNS)将计算机名称 Map 到 IP 地址:

www.example.com ==> 192.0.2.5

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

c:\bin\autoexec.bat ==> File Reference

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

Names

要在命名系统中查找对象,请向其提供对象的名称。命名系统确定名称必须遵循的语法。这种语法有时称为命名系统* naming Convention *。名称由组成部分组成。名称的表示形式由组成名称的组成部分的组件分隔符组成。

Naming SystemComponent SeparatorNames
UNIX 文件系统"/"/usr/hello
DNS"."sales.Wiz.COM
LDAP“,”和“ =“cn = Rosanna Lee,o = Sun,c = US

UNIX 文件系统的命名约定是,文件是从相对于文件系统根目录的路径命名的,路径中的每个组件都使用正斜杠字符(“ /”)从左到右分开。 UNIX * pathname * /usr/hello例如在文件目录usr中命名文件hello,该目录位于文件系统的根目录中。

DNS 命名约定要求 DNS 名称中的组件从右到左排序,并以点字符(“.”)分隔。因此,相对于 DNS 条目Wiz\.COM,DNS 名称sales\.Wiz\.COM用名称sales命名 DNS 条目。 DNS 条目Wiz\.COM依次在COM条目中使用名称Wiz命名一个条目。

轻型目录访问协议(LDAP)命名约定按从右到左的 Sequences 对组件进行排序,并用逗号(“,”)分隔。因此,LDAP 名称cn=Rosanna Lee, o=Sun, c=US相对于条目o=Sun命名 LDAP 条目cn=Rosanna Lee,而o=Sun则相对于c=us。 LDAP 进一步规定,名称的每个组成部分必须是名称/值对,其名称和值之间用等号(“ =”)分隔。

Bindings

名称与对象的关联称为* binding *。文件名是“绑定”到文件的。

DNS 包含将计算机名称 Map 到 IP 地址的绑定。 LDAP 名称绑定到 LDAP 条目。

参考和地址

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

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

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

为简单起见,本教程在不需要区分两者时使用“对象”来同时引用对象和对象引用。

Context

  • context 是一组名称到对象的绑定。每个上下文都有一个关联的命名约定。上下文始终提供返回对象的查找( resolution )操作,它通常还提供诸如绑定名称,取消绑定名称和列出绑定名称的操作。一个上下文对象中的名称可以绑定到具有相同命名约定的另一个上下文对象(称为 subcontext *)。

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

UNIX 文件系统中的文件目录(例如/usr)表示上下文。相对于另一个文件目录命名的文件目录表示一个子上下文(UNIX 用户将此称为* subdirectory *)。也就是说,在文件目录/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 进行通信的系统是命名系统。

命名系统向其 Client 提供“命名服务”,以执行与命名相关的操作。命名服务是通过其自己的interface访问的。 DNS 提供了将计算机名称 Map 到 IP 地址的命名服务。 LDAP 提供了将 LDAP 名称 Map 到 LDAP 条 Object 命名服务。文件系统提供了将文件名 Map 到文件和目录的命名服务。

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