Hi,
I am looking for ways to build web services using
oCaml.
First I would like to point that out this includes
two different aspects:
1- building the web services themselves (e.g.
putting a SOAP interface on top of a database and spitting XML)
This is the server side, if you will.
2- glueing together web services
This is more the client side.
For 1-, it is not clear to me that oCaml has a
competitive edge compared to other approaches, mainly because 1- requires a lot
of "legacy" libraries not necessarily available for oCaml.
For 2-, however, the main components needed are an
HTTP stack (HTTP, TCP, SSL, etc.) and an XML stack (XML parser, etc.). And this
is where a functional language can really show its value.
I was looking at:
- ocamlNet
- cgi
and they support some aspects but not all that is
needed like SSL, cookies, etc.
Are there other libraries that would do that for
me?
As a more general question, shouldn't we (meaning
of "we" to be defined :-) implement these stacks in oCaml?
Is there any value in doing it (except for the
experience and fun of doing it)?
Is there any advantage in having the stack (and
whatever is underneath) available as oCaml constructs?
These protocols are complex and keep
evolving. Taking a reference implementation (like libwww which is complete,
maintained, supported and updated) and adding oCaml wrapper on top would make
more sense to me. Our value added would be in the design of a nice API on
top.
I am not saying that this should be done for
everything, but when there is no (or little) value in having the low-level
implementation details available as oCaml constructs, this is -- from my point
of view -- the way to go.
I would like to raise the same question for XML
libraries where namespaces, entity resolution, XML schemas (and God knows what
they are going to invent) need to be supported. Should everything be done in
oCaml? What is the value of having the low-level implementation details of XML
trees available as oCaml objects?
As mentioned on various previous postings, the
oCaml community is smaller than the Perl or Python ones. We need to be smarter
and nimbler in our efforts.
regards,
Arnaud