From: Jack
Subject: Common LIsp client/server question
Date: 
Message-ID: <13fb4a48.0309040844.257d3947@posting.google.com>
I am building an expert system in Common Lisp (using CMUCL on linux).
I want to make this expert system's functionality available to a
client application running on windows. Any ideas on how to accomplish
this?

From: Kenny Tilton
Subject: Re: Common LIsp client/server question
Date: 
Message-ID: <3F577A84.20106@nyc.rr.com>
Jack wrote:
> I am building an expert system in Common Lisp (using CMUCL on linux).
> I want to make this expert system's functionality available to a
> client application running on windows. Any ideas on how to accomplish
> this?

Available as in via interprocess communication with your/a Linux box, or 
as in the whole shebang running on win32? If the latter, CL is pretty 
portable, but I wager you know that. Are you asking for recommendations 
on win32 CLs? Hang on, I see the problem, my answer is already longer 
than the spec. :)

-- 

  kenny tilton
  clinisys, inc
  http://www.tilton-technology.com/
  ---------------------------------------------------------------
"Career highlights? I had two. I got an intentional walk from
Sandy Koufax and I got out of a rundown against the Mets."
                                                  -- Bob Uecker
From: Jack
Subject: Re: Common LIsp client/server question
Date: 
Message-ID: <13fb4a48.0309041820.5b9e0ed5@posting.google.com>
I would like to keep run the lisp code on a linux box and have the
clients, running on windows machines, talk to the linux box. I am
considering using web services rather than having the programs talk
through sockets. Any thoughts?



Kenny Tilton <·······@nyc.rr.com> wrote in message news:<··············@nyc.rr.com>...
> Jack wrote:
> > I am building an expert system in Common Lisp (using CMUCL on linux).
> > I want to make this expert system's functionality available to a
> > client application running on windows. Any ideas on how to accomplish
> > this?
> 
> Available as in via interprocess communication with your/a Linux box, or 
> as in the whole shebang running on win32? If the latter, CL is pretty 
> portable, but I wager you know that. Are you asking for recommendations 
> on win32 CLs? Hang on, I see the problem, my answer is already longer 
> than the spec. :)
> 
> -- 
> 
>   kenny tilton
>   clinisys, inc
>   http://www.tilton-technology.com/
>   ---------------------------------------------------------------
> "Career highlights? I had two. I got an intentional walk from
> Sandy Koufax and I got out of a rundown against the Mets."
>                                                   -- Bob Uecker
From: Christopher C. Stacy
Subject: Re: Common LIsp client/server question
Date: 
Message-ID: <u8yp3x09t.fsf@dtpq.com>
>>>>> On 4 Sep 2003 19:20:55 -0700, Jack  ("Jack") writes:

 Jack> I would like to keep run the lisp code on a linux box and have the
 Jack> clients, running on windows machines, talk to the linux box. I am
 Jack> considering using web services rather than having the programs talk
 Jack> through sockets. Any thoughts?

If by "web services" you mean XML-based protocols like SOAP,
you don't need to bother with all that.  Those protocols,
of course, also use sockets, but they add in a huge amount
of complex overhead. Some XML libraries are available for Lisp,
but you can probably just transmit your data a lot more trivially 
by opening up a socket.  There are also JAVA-compatible RMI libraries
available, but I haven't tried them out.

Without knowing anything more than "I'd like two machines to talk to
each other about something or another", it's impossible to analyze
your requirements.
From: Jack
Subject: Re: Common LIsp client/server question
Date: 
Message-ID: <13fb4a48.0309050600.bc570e1@posting.google.com>
Thank you for your response. Here is more detail. I have an
information management system written in Delphi 5 which accesses a
server and database residing on a linux box. I am creating an expert
system which will provide intelligent training functionality to the
Delphi application. I want the expert system to run on the linux box.

Thanks again for your time.

Jack


······@dtpq.com (Christopher C. Stacy) wrote in message news:<·············@dtpq.com>...
> >>>>> On 4 Sep 2003 19:20:55 -0700, Jack  ("Jack") writes:
> 
>  Jack> I would like to keep run the lisp code on a linux box and have the
>  Jack> clients, running on windows machines, talk to the linux box. I am
>  Jack> considering using web services rather than having the programs talk
>  Jack> through sockets. Any thoughts?
> 
> If by "web services" you mean XML-based protocols like SOAP,
> you don't need to bother with all that.  Those protocols,
> of course, also use sockets, but they add in a huge amount
> of complex overhead. Some XML libraries are available for Lisp,
> but you can probably just transmit your data a lot more trivially 
> by opening up a socket.  There are also JAVA-compatible RMI libraries
> available, but I haven't tried them out.
> 
> Without knowing anything more than "I'd like two machines to talk to
> each other about something or another", it's impossible to analyze
> your requirements.
From: Christopher C. Stacy
Subject: Re: Common LIsp client/server question
Date: 
Message-ID: <ubrtzp8qv.fsf@dtpq.com>
>>>>> On 5 Sep 2003 07:00:41 -0700, Jack  ("Jack") writes:

 Jack> Thank you for your response. Here is more detail. I have an
 Jack> information management system written in Delphi 5 which accesses a
 Jack> server and database residing on a linux box. I am creating an expert
 Jack> system which will provide intelligent training functionality to the
 Jack> Delphi application. I want the expert system to run on the linux box.

Where does the Delphi 5 program reside?
From: Jack
Subject: Re: Common LIsp client/server question
Date: 
Message-ID: <13fb4a48.0309051422.724bf4a3@posting.google.com>
The Delphi 5 program resides on a windows XP machine.

······@dtpq.com (Christopher C. Stacy) wrote in message news:<·············@dtpq.com>...
> >>>>> On 5 Sep 2003 07:00:41 -0700, Jack  ("Jack") writes:
> 
>  Jack> Thank you for your response. Here is more detail. I have an
>  Jack> information management system written in Delphi 5 which accesses a
>  Jack> server and database residing on a linux box. I am creating an expert
>  Jack> system which will provide intelligent training functionality to the
>  Jack> Delphi application. I want the expert system to run on the linux box.
> 
> Where does the Delphi 5 program reside?
From: Marco Antoniotti
Subject: CMUCL WIRE package (Re: Common LIsp client/server question)
Date: 
Message-ID: <3F58AEC9.9060507@cs.nyu.edu>
... speaking of which...

CMUCL comes with a package called "WIRE" which is a sort of RPC for CMUCL.

As anybody toyed with the idea of porting it to other CL implemetantions?

I am just curious because we may have to do something like that.

Cheers

Marco


Christopher C. Stacy wrote:
>>>>>>On 4 Sep 2003 19:20:55 -0700, Jack  ("Jack") writes:
>>>>>
> 
>  Jack> I would like to keep run the lisp code on a linux box and have the
>  Jack> clients, running on windows machines, talk to the linux box. I am
>  Jack> considering using web services rather than having the programs talk
>  Jack> through sockets. Any thoughts?
> 
> If by "web services" you mean XML-based protocols like SOAP,
> you don't need to bother with all that.  Those protocols,
> of course, also use sockets, but they add in a huge amount
> of complex overhead. Some XML libraries are available for Lisp,
> but you can probably just transmit your data a lot more trivially 
> by opening up a socket.  There are also JAVA-compatible RMI libraries
> available, but I haven't tried them out.
> 
> Without knowing anything more than "I'd like two machines to talk to
> each other about something or another", it's impossible to analyze
> your requirements.
From: Gilbert Baumann
Subject: Re: CMUCL WIRE package (Re: Common LIsp client/server question)
Date: 
Message-ID: <87smn8m37j.fsf@saphir.local>
Marco Antoniotti <·······@cs.nyu.edu> writes:
> ... speaking of which...
> 
> CMUCL comes with a package called "WIRE" which is a sort of RPC for CMUCL.
> 
> As anybody toyed with the idea of porting it to other CL implemetantions?
> 
> I am just curious because we may have to do something like that.
> 

Portable Hemlock (http://www.stud.uni-karlsruhe.de/~unk6/hemlock/)
will contain a portable WIRE. In fact there already is an initial, yet
not throughly tested, port in the CVS repository.

But bear in mind that getting two different Lisp implementations to
talk to each other via the WIRE protocol can get interesting as
symbols are transfered as symbol name, symbol package pairs, while the
actual home package of a symbol might vary across Lisp
implementations.

-- 
Gilbert Baumann
;; Hacking for food.
From: Eric Marsden
Subject: Re: CMUCL WIRE package
Date: 
Message-ID: <wzid6eby5te.fsf_-_@melbourne.laas.fr>
>>>>> "ma" == Marco Antoniotti <·······@cs.nyu.edu> writes:

  ma> CMUCL comes with a package called "WIRE" which is a sort of RPC
  ma> for CMUCL. As anybody toyed with the idea of porting it to other
  ma> CL implemetantions?

I wrote a partial WIRE implementation in Emacs Lisp, for use in an
Emacs interface to CMUCL.

   <URL:http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/slime/slime/>


However, I wouldn't recommend putting much effort into the WIRE
protocol. In my opinion, the simplicity of WIRE over CORBA is
insufficient compensation for its lack of features. Consider all the
features that you gain from the use of a real distribution middleware
like CORBA:

   - interoperability with other programming languages
   
   - an object model, with a mechanism for representing and transfering
     object references

   - when implementing a server, the notion of an object adapter, which
     allows servant lifecycles to be managed independently from that of
     CORBA objects

   - good support for exception handling

   - access to services such as naming and event distribution

While using CORBA from C++ is pretty painful, due to a very complex
language mapping, it really isn't difficult from Common Lisp. Check
out CLORB, a free ORB for Common Lisp:

   <URL:http://clorb.sf.net/>

-- 
Eric Marsden                          <URL:http://www.laas.fr/~emarsden/>
From: David Golden
Subject: Re: CMUCL WIRE package
Date: 
Message-ID: <235b265c.0309081338.3516b41e@posting.google.com>
Eric Marsden <········@laas.fr> wrote in message news:<··················@melbourne.laas.fr>...

> 
> While using CORBA from C++ is pretty painful, due to a very complex
> language mapping, it really isn't difficult from Common Lisp. Check
> out CLORB, a free ORB for Common Lisp:
> 
>    <URL:http://clorb.sf.net/>


It was my understanding (admittedly derived from only slight dealings
with CORBA back when I actually had a job) that the OMG stuff almost
universally assumes single-dispatch "methods in classes/interfaces"
OO.  Annoying once you've gotten used to multiple dispatch.

N.B. I could be wrong - please correct me if I am.  I haven't read the
Common Lisp IDL mapping specification in depth, but the impression I
get is that it is almost completely about going from existing
IDL-interfaces with operations "inside" interfaces to Lisp rather than
an existing CLOS-style OO system to IDL.

Maybe you could fake it with a "MultiMethod" abstract class,
instantiations of derivations of which are intended to be multimethod
calls on the single-dispatch-oo side, or maybe just give every class
every permutation of method call (bleurgh!).

Any better way?

Are there any (preferably transactional :-) ) multiple-dispatch
distributed object management systems that I in my youthful ignorance
don't know about?
From: Eric Marsden
Subject: Re: CMUCL WIRE package
Date: 
Message-ID: <wziekyq2el1.fsf@melbourne.laas.fr>
>>>>> "dg" == David Golden <············@oceanfree.net> writes:

  dg> It was my understanding (admittedly derived from only slight dealings
  dg> with CORBA back when I actually had a job) that the OMG stuff almost
  dg> universally assumes single-dispatch "methods in classes/interfaces"
  dg> OO.  Annoying once you've gotten used to multiple dispatch.

that's correct: CORBA makes it possible for objects implemented in
different programming languages to interoperate by requiring all
remote method invocations to use a common object model, type hierarchy
and data serialization format. There's no multiple dispatch for remote
methods. 

I would say the gain in interoperability outweighs the rigidity of the
object model; there are lots of useful services that aren't
implemented in Common Lisp. CORBA (from CL) is probably the
communications-oriented middleware where you lose the least expressive
power from the common object model; it's far less constraining than
web services for example.


  dg> Are there any (preferably transactional :-) ) multiple-dispatch
  dg> distributed object management systems that I in my youthful ignorance
  dg> don't know about?

not that I know of. 

-- 
Eric Marsden                          <URL:http://www.laas.fr/~emarsden/>
From: Kenny Tilton
Subject: Re: Common LIsp client/server question
Date: 
Message-ID: <3F58B4B6.6020401@nyc.rr.com>
Christopher C. Stacy wrote:
>>>>>>On 4 Sep 2003 19:20:55 -0700, Jack  ("Jack") writes:
>>>>>
> 
>  Jack> I would like to keep run the lisp code on a linux box and have the
>  Jack> clients, running on windows machines, talk to the linux box. I am
>  Jack> considering using web services rather than having the programs talk
>  Jack> through sockets. Any thoughts?
> 
> If by "web services" you mean XML-based protocols like SOAP,
> you don't need to bother with all that.  Those protocols,
> of course, also use sockets,...

Purely for what it is worth, I have been sharing my socket miseries with 
someone I respect and he said, "web services, not sockets". perhaps the 
idea is that the web service developers then get to worry about the sockets?

-- 

  kenny tilton
  clinisys, inc
  http://www.tilton-technology.com/
  ---------------------------------------------------------------
"Career highlights? I had two. I got an intentional walk from
Sandy Koufax and I got out of a rundown against the Mets."
                                                  -- Bob Uecker
From: Christopher C. Stacy
Subject: Re: Common LIsp client/server question
Date: 
Message-ID: <uy8x3np8n.fsf@dtpq.com>
>>>>> On Fri, 05 Sep 2003 16:08:56 GMT, Kenny Tilton ("Kenny") writes:

 Kenny> Christopher C. Stacy wrote:
 >>>>>>> On 4 Sep 2003 19:20:55 -0700, Jack  ("Jack") writes:
 >>>>>> 
 Jack> I would like to keep run the lisp code on a linux box and
 >> have the
 Jack> clients, running on windows machines, talk to the linux box. I am
 Jack> considering using web services rather than having the programs talk
 Jack> through sockets. Any thoughts?
 >> If by "web services" you mean XML-based protocols like SOAP,
 >> you don't need to bother with all that.  Those protocols,
 >> of course, also use sockets,...

 Kenny> Purely for what it is worth, I have been sharing my socket miseries
 Kenny> with someone I respect and he said, "web services, not
 Kenny> sockets". perhaps the idea is that the web service developers then get
 Kenny> to worry about the sockets?

The point is that they get to worry about something else.
Whether that's generally desirable or not is debatable.

When we say "sockets", we don't mean a byte stream.
We mean something you can READ and PRINT on, at least.
From: Jon S. Anthony
Subject: Re: Common LIsp client/server question
Date: 
Message-ID: <m3d6egm9pf.fsf@rigel.goldenthreadtech.com>
··········@circusry.com (Jack) writes:

> I am building an expert system in Common Lisp (using CMUCL on linux).
> I want to make this expert system's functionality available to a
> client application running on windows. Any ideas on how to accomplish
> this?

CORBA, roll your own protocol over sockets, use someone elses protocol
over sockets, etc.  All of these work just fine (I've used them all).

/Jon