From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.1.3 (2006-06-01) on yquem.inria.fr X-Spam-Level: X-Spam-Status: No, score=0.7 required=5.0 tests=AWL,SPF_SOFTFAIL autolearn=disabled version=3.1.3 X-Original-To: caml-list@yquem.inria.fr Delivered-To: caml-list@yquem.inria.fr Received: from discorde.inria.fr (discorde.inria.fr [192.93.2.38]) by yquem.inria.fr (Postfix) with ESMTP id 478CEBD64 for ; Sat, 7 Jul 2007 13:42:10 +0200 (CEST) Received: from furbychan.cocan.org (furbychan.cocan.org [80.68.91.176]) by discorde.inria.fr (8.13.6/8.13.6) with ESMTP id l66IvlSh024868 (version=TLSv1/SSLv3 cipher=EDH-RSA-DES-CBC3-SHA bits=168 verify=NO) for ; Fri, 6 Jul 2007 20:57:56 +0200 Received: from rich by furbychan.cocan.org with local (Exim 3.35 #1 (Debian)) id 1I6szu-0000ED-00; Fri, 06 Jul 2007 19:57:42 +0100 Date: Fri, 6 Jul 2007 19:57:42 +0100 To: Jon Harrop Cc: caml-list@inria.fr Subject: Re: [Caml-list] RPCs, XML, Schemas, WSDL and SOAP Message-ID: <20070706185741.GA30545@furbychan.cocan.org> References: <200707061724.44910.jon@ffconsultancy.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <200707061724.44910.jon@ffconsultancy.com> User-Agent: Mutt/1.5.9i From: Richard Jones X-Miltered: at discorde with ID 468E90AC.000 by Joe's j-chkmail (http://j-chkmail . ensmp . fr)! X-Spam: no; 0.00; 0100,:01 ocaml:01 ocaml:01 camlp:01 extensively:01 camlp:01 bindings:01 val:01 stubs:01 type-safe:01 bindings:01 statically:01 cduce:01 mli:01 type-safe:01 On Fri, Jul 06, 2007 at 05:24:44PM +0100, Jon Harrop wrote: > So I'm just looking into making remote procedure calls across the internet > using OCaml. It seems that the people who invented these protocols have made > a right pigs ear of it (again). :-) > > There have been several galiant attempts to get this working from OCaml. > OCSoap by Richard Jones looks good to me. However, it uses the pre 3.10 > camlp4 extensively to analyze headers. > > Has anyone ported this to 3.10? Also, OCSoap is only a client. And WSDL is so complicated that there's quite an effort required to adapt OCSoap to new schemas. BTW, the camlp4 stuff in OCSoap isn't really required, and could be removed with relative ease. > Incidentally, I like the design but I would have written a > dynamically typed bottom layer first myself. That way users could > use the library to make calls without having to generate bindings > first. Something like: > > # let rpc = Soap.connect url;; > val rpc : string -> Soap.value list -> Soap.value = > # Soap.to_float rpc("getTemp", [Soap.of_int 90210]);; > - : float = 999.0 > > Then the macro would spit out stubs that used that style. Well, I guess the point of OCSoap was to write type-safe bindings to the Google AdWords API. The bindings are generated statically using a CDuce program which grinds over the WSDL and generates *.ml and *.mli files. You then compile these and presto you have a type-safe client. [..] Have you looked into using SunRPC? ocamlnet provides an implementation, it can be run over SSL, it's far more lightweight than XML, and there's a strong chance you'll be able to interoperate with clients and servers written in other languages. Another option would be s-expressions using the Jane St. library. Rich. -- Richard Jones Red Hat