Dueling Directory Service Software
-- by Martin Heller
The directory service war between Microsoft and Novell continues. While thousands of administrators manage their networks using Novell Directory Services (NDS), Microsoft is countering with Active Directory Service Interfaces (ADSI)-an attempt to capture the entire directory service arena with one family of APIs.
ADSI (formerly known as OLE DS) uses both COM (IUnknown) and OLE Automation (IDispatch) interfaces. It also supports an OLE DB interface and supplies several C-language wrapper functions that simplify use of the COM interfaces. Once you choose which interface you'd like to write to, you can theoretically write ADSI code that works with almost any major network directory service: Windows NT Server, NetWare 3.x, NDS, LDAP (Lightweight Directory Access Protocol) X.500 and perhaps even Lotus Notes.
How do you choose which interface to write to? That depends on your programming experience. COM programming is a rather technical task typically performed by C and C++ programmers. OLE Automation is a much simpler task generally done by Visual Basic programmers and system administrators. OLE DB is a query interface typically used by administrators and end users.
Microsoft says ADSI supports Java programming through Java COM, but there is a caveat: Only Microsoft's own Java implementation, Visual J++, currently supports COM objects. ADSI cannot be used from "pure" Java.
Client and service providers
As you might expect, ADSI is split into two major pieces: a client and a service provider. The client uses ADSI objects and dependent objects through interfaces; a provider implements the ADSI objects and dependent objects for a particular namespace.
ADSI objects, which represent persistent directory objects, can be leaf or container objects. Container objects can hold other ADSI objects, and correspond to namespaces, organizations, domains and computers; leaf objects don't hold other ADSI objects, and correspond to file shares, printers, users, groups and network resources. All ADSI objects, whether leaves or containers, can act as hosts for dependent objects (for instance, a file share typically hosts directories and files)
The ADSI 1.0 development kit is available free from http://www.microsoft.com/win32dev/netwrk/adsi.htm. It's approximately 2.5MB. Ironically, this kit is not compatible with the Active Directory Services preview released at Microsoft's Long Beach Professional Developers Conference last year, but it does include directory provider components for NDS, Windows NT, NetWare 3.x and LDAP.
Novell, meanwhile, has made some directory progress of its own (see the feature, "Peaceful Coexistence" in the April issue of NT Enterprise Edition). As expected, the company has released Novell Administrator for Windows NT. The free software (available at http://www.novell.com/intranetware/ntint/nadown.html) can synchronize Windows NT users with the NDS database to create one enterprise directory. And by this summer, Novell expects to ship NDS for Windows NT, which means the directory war is far from over.