From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Delivered-To: caml-list@yquem.inria.fr Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by yquem.inria.fr (Postfix) with ESMTP id C2BDBBC48 for ; Mon, 18 Apr 2005 16:32:03 +0200 (CEST) Received: from pauillac.inria.fr (pauillac.inria.fr [128.93.11.35]) by concorde.inria.fr (8.13.0/8.13.0) with ESMTP id j3IEW2sN004540 for ; Mon, 18 Apr 2005 16:32:03 +0200 Received: from nez-perce.inria.fr (nez-perce.inria.fr [192.93.2.78]) by pauillac.inria.fr (8.7.6/8.7.3) with ESMTP id QAA12943 for ; Mon, 18 Apr 2005 16:32:02 +0200 (MET DST) Received: from moutng.kundenserver.de (moutng.kundenserver.de [212.227.126.184]) by nez-perce.inria.fr (8.13.0/8.13.0) with ESMTP id j3IEW22h006104 for ; Mon, 18 Apr 2005 16:32:02 +0200 Received: from [212.227.126.160] (helo=mrelayng.kundenserver.de) by moutng.kundenserver.de with esmtp (Exim 3.35 #1) id 1DNXHh-0000aD-00; Mon, 18 Apr 2005 16:31:33 +0200 Received: from [84.167.151.36] (helo=gate.lan.gerd-stolpmann.de) by mrelayng.kundenserver.de with asmtp (Exim 3.35 #1) id 1DNXHg-0005xU-00; Mon, 18 Apr 2005 16:31:32 +0200 Received: from flakew.lan.gerd-stolpmann.de (flakew.lan.gerd-stolpmann.de [192.168.0.32]) by gate.lan.gerd-stolpmann.de (Postfix) with ESMTP id BC8F5C10A; Mon, 18 Apr 2005 16:31:31 +0200 (CEST) Subject: Re: [Caml-list] CamlGI question From: Gerd Stolpmann To: Alex Baretta Cc: Robert Roessler , Mike Hamburg , Caml-list In-Reply-To: <4263BAD0.5020901@barettadeit.com> References: <810e04dc0f6bb601fb828db8d18def6c@fas.harvard.edu> <426361DB.10704@rftp.com> <4263BAD0.5020901@barettadeit.com> Content-Type: text/plain Date: Mon, 18 Apr 2005 16:31:31 +0200 Message-Id: <1113834691.6248.42.camel@localhost.localdomain> Mime-Version: 1.0 X-Mailer: Evolution 2.0.2 Content-Transfer-Encoding: 7bit X-Provags-ID: kundenserver.de abuse@kundenserver.de auth:a6865a839c0178d9aa0ce41878507ea2 X-Miltered: at concorde with ID 4263C4E2.000 by Joe's j-chkmail (http://j-chkmail.ensmp.fr)! X-Miltered: at nez-perce with ID 4263C4E2.000 by Joe's j-chkmail (http://j-chkmail.ensmp.fr)! X-Spam: no; 0.00; caml-list:01 gerd:01 stolpmann:01 baretta:01 gerd:01 stolpmann:01 ocamlnet:01 baretta:01 ocamlnet:01 api:01 api:01 ocaml:01 o'caml:01 implements:01 event-driven:01 X-Spam-Checker-Version: SpamAssassin 3.0.2 (2004-11-16) on yquem.inria.fr X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=disabled version=3.0.2 X-Spam-Level: Am Montag, den 18.04.2005, 15:49 +0200 schrieb Alex Baretta: > Robert Roessler wrote: > > I am not able to shed any light on the CamlGI question... OTOH, the > > announcement from Gerd Stolpmann a few days ago regarding Ocamlnet 1.0 > > may be of interest, given that it includes "a mature implementation of > > the CGI protocol" and "an implementation of the FastCGI protocol". > > It is worth noting that Baretta DE&IT has commissioned a full > implementation of the HTTP/1.1 protocol from Gerd. The HTTP library will > be based on Ocamlnet and will export more or less the same API as the > Netcgi module. We chose this approach rather than FastCGI because the > FastCGI project seems dead and did not look like a viable solution for > our Xcaml application server. > > Xcaml aims at being a Apache+Tomcat+JSP+Servlet replacement. The Xcaml > virtual machine and API are already complete, but the performance which > they achieve in conjunction with Apache is mediocre. Gerd's new HTTP > connector Ocamlnet will give us top notch performance while without > sacrificing the safety guarantees of the Ocaml language and VM. Let me also add a few words about this project. What we are going to implement here is nothing else but a web server written in O'Caml, or better a web server component that can be integrated into the application it is serving. Of course, this web server will have "industry quality", especially regarding stability and performance. The HTTP kernel is already written, and implements event-driven message exchange for HTTP/1.0 and 1.1 in only 1200 lines of code. Another part of the web server is called the "reactor". It provides a Netcgi-compatible interface into which existing applications using Netcgi can be simply plugged in. That means it will be quite easy to add the web server component to existing CGI applications. The reactor processes one HTTP request after the other, and can call an arbitrary content generator for every request. To achieve parallelism, it is planned to integrate the reactor into a multi-threaded setup. I am also figuring out a purely event-based implementation (using only Unix.select) in the hope that the simplification of scheduling will give us a performance boost. This setup will be a lot more complicated, and when carefully combined with multi-threading or -processing it will also be possible to plug in existing Netcgi-based application in addition to purely event-based content generators, i.e. the best of all worlds. As you can see, some aspects of the web server design follow conservative ideas (like the reactor), and some are very experimental. I hope this results in a top-performing server that can be configured in very flexible ways. Gerd > The new library will be released to the community by Baretta DE&IT and > Gerd Stolpmann jointly under the terms of the GPL. When the integration > with the Xcaml server will be done, the full Application System/Xcaml > will be released under the terms of the GPL. > Alex > -- ------------------------------------------------------------ Gerd Stolpmann * Viktoriastr. 45 * 64293 Darmstadt * Germany gerd@gerd-stolpmann.de http://www.gerd-stolpmann.de ------------------------------------------------------------