You are right; I wasn't planning to write a directory
service, but rather only a provider that exposes one.
In general, my issue is that we developed an in-house CRM
system, with SQL on its back-end, and I would like the
users to be able to access the contacts via an Outlook
Address Book without generating Outlook contacts. It seems
that my only 2 options are either to develop a MAPI
Address Book Provider, or to develop an LDAP provider (I'm
trying to evaluate the less painful approach). Are you
aware of another way to achieve this? Assuming that there
is no other way, do you know where I can find
documentation for implementing an LDAP Provider for this
purpose?
Thanks,
Gil
-----Original Message-----
Ok, let's see if we are talking about the same thing when
talking about an LDAP provider.
LDAP is a service protocol running on top of TCP/IP that
makes it possible to connect to, query and modify
directory objects based
on a C/S model (here the provider is the client, DS is
the server). An LDAP provider consists of a Directory
service object model
and a set of interfaces. These interfaces allow you to
develop Directory Service management and browser
applications using the LDAP
protocol. So I assume it's NOT your intention to write
your own Directory Service, but only to write your own
provider to access an
existing Directory.
The DS provider that ships with Windows is an unmanaged
provider that offers a set of COM interfaces (ADSI
provider), the
DirectoryService namespace classes are simple wrapper
around this COM based provider. The provider itself uses
the LDAP API dll
(wldap32.dll) available on most if not all windows
versions to connect to an LDAP DS (fi. an Active Directory
Server on W2K/W2K3).
What you can do is to implement your provider using a
managed language using the unmanaged LDAP protocol API's
(you aren't gonna
write your own LDAP protocol library in managed code don't you?).
You could do this in C# or VB.Net but this is no fun as
it will require a lot of PInvoke functions and data
structure declarations,
therefore I suggest you do it using MC++ (Managed C++),
however I don't see why you would do this unless you have
very special