# 目录概念

> 原文： [https://docs.oracle.com/javase/tutorial/jndi/concepts/directory.html](https://docs.oracle.com/javase/tutorial/jndi/concepts/directory.html)

使用 _ 目录服务 _ 扩展了许多命名服务。目录服务将名称与对象相关联，并将这些对象与 _ 属性 _ 相关联。

目录服务=命名服务+包含属性的对象

您不仅可以按名称查找对象，还可以根据对象的属性获取对象的属性或 _ 搜索 _。

<center>![Diagram showing a directory system: a name references a directory object which contains attributes.](img/480449295664eab3c0e4c32119131329.jpg)</center>

一个例子是电话公司的目录服务。它将订户的姓名映射到他的地址和电话号码。计算机的目录服务非常类似于电话公司的目录服务，因为它们都可用于存储诸如电话号码和地址之类的信息。然而，计算机的目录服务功能更强大，因为它可以在线获得，并且可以用于存储可供用户，程序甚至计算机本身和其他计算机使用的各种信息。

_ 目录对象 _ 表示计算环境中的对象。例如，可以使用目录对象来表示打印机，人，计算机或网络。目录对象包含 _ 属性 _，用于描述它所代表的对象。

## 属性

目录对象可以具有 _ 属性 _。例如，打印机可能由目录对象表示，该目录对象具有其速度，分辨率和颜色作为属性。用户可能由目录对象表示，该目录对象具有用户的电子邮件地址，各种电话号码，邮政地址和计算机帐户信息作为属性。

属性具有 _ 属性标识符 _ 和一组 _ 属性值 _。属性标识符是标识独立于其值的属性的标记。例如，两个不同的计算机帐户可能具有`“邮件”`属性; `“mail”`是属性标识符。属性值是属性的内容。例如，电子邮件地址可能包含：

```
Attribute Identifier : Attribute Value
                 mail   john.smith@example.com

```

## 目录和目录服务

_ 目录 _ 是一组连接的目录对象。 _ 目录服务 _ 是一种服务，它提供用于创建，添加，删除和修改与目录中的对象相关联的属性的操作。该服务通过自己的界面访问。

许多目录服务的例子都是可能的。

Network Information Service (NIS)

NIS is a directory service available on the UNIX operating system for storing system-related information, such as that relating to machines, networks, printers, and users.

[Oracle Directory Server](http://www.oracle.com/technetwork/testcontent/index-085178.html)

The Oracle Directory Server is a general-purpose directory service based on the Internet standard [LDAP](http://www.ietf.org/rfc/rfc2251.txt).

## 搜索服务

您可以通过将目录对象的名称提供给目录服务来查找目录对象。或者，许多目录（例如基于 LDAP 的目录）支持 _ 搜索 _ 的概念。搜索时，您不能提供名称，而是提供 _ 查询 _，该查询由一个逻辑表达式组成，您可以在其中指定一个或多个对象必须具有的属性。该查询称为 _ 搜索过滤器 _。这种搜索方式有时被称为 _ 反向查找 _ 或 _ 基于内容的搜索 _。目录服务搜索并返回满足搜索过滤器的对象。

例如，您可以查询目录服务以查找：

*   所有具有`“年龄”`属性大于 40 年的用户。
*   所有 IP 地址以“192.113.50”开头的机器。

## 结合命名和目录服务

Directories often arrange their objects in a hierarchy. For example, the LDAP arranges all directory objects in a tree, called a _directory information tree (DIT)_. Within the DIT, an organization object, for example, might contain group objects that might in turn contain person objects. When directory objects are arranged in this way, they play the role of naming contexts in addition to that of containers of attributes.