English version
Accueil     À propos     Téléchargement     Ressources     Contactez-nous    

Ce site est rarement mis à jour. Pour les informations les plus récentes, rendez-vous sur le nouveau site OCaml à l'adresse ocaml.org.

Browse thread
[Caml-list] Ensemble (English sense)
[ Home ] [ Index: by date | by threads ]
[ Search: ]

[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
Date: 2001-07-24 (21:16)
From: Gerd Stolpmann <info@g...>
Subject: Re: [Caml-list] Ensemble (English sense)
On Tue, 24 Jul 2001, Aaron Roth wrote:
>Hi, all. I'm thinking of developing a client-server application using
>O'Caml. The choices at this point seem to be CORBA (through C) or SOAP, both
>of which would entail quite a bit of work to use in O'Caml, I think. But
>looking around yesterday, I came across Ensemble, from Cornell, which seems
>like an excellent framework for all manner of network programming, including
>client-server. But checking through the Ensemble CVS logs, it doesn't seem
>that the code's been touched in nearly 2 years. Does this mean that it's
>reached a state of perfection or of total disuse? Is anyone out there using
>Ensemble for large-scale (say, > 500 clients) applications? Will anyone
>argue for or against it vis-a-vis CORBA or SOAP? Broadly, my requirements
>are to run that many clients with some decent security, possibly involving a
>3rd party VPN solution but preferably with (at least some aspects of)
>security integrated right into the networking code (e.g. CORBA/SSL, SOAP
>over HTTPS). And the servers would be some flavor of UNIX, so no DCOM (as
>far as I know). Particularly appealing about Ensemble is the possibility of
>later adding more peer-to-peer style messaging between clients in a part of
>the application separate from the client-server part. Thank you for your

There is a fourth alternative: Some times ago, I've written a Sun RPC module in
O'caml. It includes an rpcgen tool, and is quite simple to use. Unlike other
RPC implementations, it is event-driven, and can handle multiple connections at
the same time. Both servers and clients can do this, and an application can be
server and client, so peer-to-peer messages are possible.

However, I don't know if it is able to handle >500 connections. This will be a
problem if the connections are TCP-based, because you will have Unix.select
with >500 file descriptors. This may be a performance bottleneck. In this case,
I would recommend UDP which is possible, too.

The RPC module does not include any security. You could either add some code to
encrypt the messages yourself (I could give you some hints), or you could
connect it with a VPN.

The advantage of using Sun RPC is that it is possible to have mixed-language
solutions. You can access the services from C, and from every other language
that has a foreign function interface. Furthermore, it is a lightweight
protocol that transfers data in a very compact manner.

You can find it at:

Gerd Stolpmann      Telefon: +49 6151 997705 (privat)
Viktoriastr. 45             
64293 Darmstadt     EMail:   gerd@gerd-stolpmann.de
Bug reports: http://caml.inria.fr/bin/caml-bugs  FAQ: http://caml.inria.fr/FAQ/
To unsubscribe, mail caml-list-request@inria.fr  Archives: http://caml.inria.fr