On Wed, 25 Mar 1998, Erik Meijer wrote:
> Hi Alex,
>
>
> >I just started playing with Haskell for CGI applications.
> >I would like to try writing a more serious CGI app, but
> >missing infrastructure makes it more difficult than conventional
> >approaches.
> >
> >In decreasing order of preference, is there an available implementation of:
> >* an equivalent to Java's Naming and Directory Services interface
> >* an LDAP client for some particular LDAP server
>
> If you don't mind to restrict yourself to Windows, and these applications
> are available as COM Automation objects you
> are done. We already interfaced to the ADSI components,
> would that be enough?
The difficulty is that we typically develop on Windows and Linux and
deploy on linux or solaris. The system I am working on involves using
CGI/servlets to update a directory server and then a Java based produciton
system (Jess, a CLIPS clone), to process the directory information.
Javasoft doesn't appear to have implemented an ADSI client.
In general, IDL/CORBA would be prefereable to COM because it is more
cross-platform (specifically it can operate as a client to Java servers).
> In theory we can interoperate with any plain COM component, but
> the technology for that is not yet stable. And as Alastair pointed
> out GreenCard can be used to interface to plain C libraries.
Yes, but the pointer page says that Greencard is likely to be replaced.
> To answer Tommy:
> > I think there are two major causes to this effect: one is the high
> > emphasize on theoretical aspects of the language and a disproportional
> > low effort on plain practial aspects.
In both the ODBC and DS cases, it would be useful if someone would define
a standard Haskell interface to database or ds services.
Javasoft did not actually provide an ODBC implementation, instead they
provided an interpretation of rel databases for java (JDBC). The
JDBC-ODBC bridge was straightforward, but the key point was to give java
programmers a consistent way to access any relational database. I mailed
Dima in order to get the ODBC source, so for a particular task that may be
useful, but his ODBC is a particular implementation of accessing
rel-databases from Haskell.
Javasoft's JNDI is similar. Javasoft is not supplying a directory server
or even defining a particular directory interface e.g. LDAP or NDS or ADSI
instead it is defining a convenient and general way of accessing directory
service semantics within Java.
A standard definition of what it means to talk to a persistent hashtable,
a directory server, or a relational database from Haskell would make it
much easier to reuse subsequent implementations (drivers) written in
Haskell or in Haskell calling C or whatever.
In principle, (I don't know if this is true), you could abstract your COM
code into a generic distributed object interpretation in Haskell. One
could then implement a COM or Corba interface to the remote objects via
some driver. Javasoft is doing something similar with RMI->Corba now (but
not well).
> I agree, if only I had the resources!
I am not saying that you need to implement all of this code. If you just
define APIs and SPIs, other people can supply implementations. Obviously
spec definition is also a lot of work. I am just suggesting that it is
less than doing full implementations.
-Alex-
___________________________________________________________________
S. Alexander Jacobson i2x Media
1-212-697-0184 voice 1-212-697-1427 fax