In this chapter, we introduced the LDAP programming technologies in the .NET Framework. We started with a high-level overview of the landscape and delved into some of the details about how the .NET-managed code interfaces interact with the various Windows-native platform interfaces such as ADSI and the LDAP API (wldap32.dll). We spent some additional time focusing on ADSI, since it is the underpinnings of the primary .NET directory services programming interface, SDS.
We then provided a high-level overview of the facilities available in the .NET Framework, including System.DirectoryServices, as well as System.DirectoryServices.ActiveDirectory and System.DirectoryServices.Protocols, which are new additions in .NET version 2.0.
With SDS, we get the basic functionality necessary to do most types of LDAP programming in .NET, and it is included in all of the released versions of the .NET Framework. Most of the rest of the book focuses here.
With SDS.AD, we have full control over how Active Directory and ADAM operate directly using .NET. The somewhat arcane API calls previously used to manage Active Directory are now gone: trusts, replication, domain controllers, schema, sites, and subnets are all directly modifiable using the new SDS.AD namespace.
SDS.P provides a completely different approach for working with LDAP that conforms directly to the LDAP API. It also uses a provider model to allow seamless interoperability with the DSML protocol.
We concluded with some guidance on when to use the various options available.
Part I: Fundamentals
Introduction to LDAP and Active Directory
Introduction to .NET Directory Services Programming
Binding and CRUD Operations with DirectoryEntry
Searching with the DirectorySearcher
Advanced LDAP Searches
Reading and Writing LDAP Attributes
Active Directory and ADAM Schema
Security in Directory Services Programming
Introduction to the ActiveDirectory Namespace
Part II: Practical Applications
Part III: Appendixes
Appendix A. Three Approaches to COM Interop with ADSI
Appendix B. LDAP Tools for Programmers
Appendix C. Troubleshooting and Help