A network directory is a storehouse of data for all network resources. A directory can be compared to a telephone book, because in the same way that listings in a telephone book contain data about a person or business, such as a name, address, and telephone number, objects in the directory represent physical resources on a network, such as printers and computers, as well as conceptual resources such as passwords and organizations. A directory service is like a telephone operator. An operator can provide information required to call a person, as well as connect you to the person by dialing the number. Similarly, a directory service can provide data about a directory resource as well as connect you to a resource.
Active Directory is the directory for the Windows Server 2003. When a user connects to a network, the directory is searched to find resources and applications that a user has permissions to access.
In addition to the resource data, Active Directory contains schema data which provides a context for how resources work together within a network. The schema includes many classes, such as computer and user, that represent commonly used resources on a network. The schema also contains many attributes that can be used to describe network objects such as an account expiration date or last login time for a user.
Active Directory architecture is based on the Lightweight Directory Access Protocol (LDAP), which is an industry standard for Internet directories. LDAP includes a C-based API used to access Active Directory and other LDAP-based directories. Windows 2000 and the Windows Server 2003 family includes the Active Directory Service Interfaces (ADSI) API, which provides access to Active Directory and other types of commonly used LDAP and network directories. The ADSI API enables developers to access directories using scripting, Visual Basic 6.0, or C++.
The first release of Visual Studio .NET introduced developers to the .NET Framework. In the .NET Framework, classes and properties for directory objects, and the methods used to access and manipulate those objects are contained within the System.DirectoryServices namespace. System.DirectoryServices is a wrapper for ADSI.
The following diagram illustrates the model for programmatically accessing network directories from managed code.