OSSP CVS Repository

ossp - ossp-pkg/srpc/EVAL
Not logged in
[Honeypot]  [Browse]  [Directory]  [Home]  [Login
[Reports]  [Search]  [Ticket]  [Timeline
  [Raw

ossp-pkg/srpc/EVAL
			      Evaluation
			      ==========

o Spread 3.15.2, http://www.spread.org/

  Spread is a sophisticated message passing framework. The software
  itself is written in C and uses a design very similar to SRPC's: It
  is split into a permanently running daemon and a link library
  containing interface routines to that daemon for the programmer. The
  daemon will maintain so called "groups", which computers can join
  and leave. Furthermore the daemon provides group communication
  services based on TCP, UDP or Multicast-UPD. There is no actual RPC
  functionality available, but implementing such a system on top of
  Spread would be relatively trivial.

  The software seems to be actively maintained, well-written and
  documented, but unfortunately the following drawbacks kept us from
  using it:

    - Spread's license currently prohibits any commercial use, but
      according to the authors (as of April 2001) they are providing
      special license exceptions for Open Source projects and working
      on moving Spread to a commercial split of from their University
      and then releasing Spread under a real Open Source license.

    - It is not possible for peers to communicate without the daemon.

    - The API for the programmer is somewhat messy.

    - No GNU autoconf, no install target.

    - The I/O system is hardcoded into the library and cannot be
      customized for our own needs.


o XML-RPC, http://www.xmlrpc.org/

  XML-RPC is a standardized remote procedure call framework for which
  several complying implementations exist. These implementations
  provide support for the programming languages Perl, Python, Java,
  C/C++, Lisp, PHP, Microsoft .NET, Tcl, Delphi, WebObjects and many
  more. Remote procedure calls are encoded in a portable XML
  representation and transferred via HTTP.

  The software seems to be popular and many resources dealing with
  XML-RPC exist, but for us the massive XML encoding overhead was too
  much.


o RPC2, http://www.coda.cs.cmu.edu/

  This RPC mechanism is part of the CODA network file system, but it
  can be used without the file system part. RPC2 consists of a link
  library for the programmer and a stub generator, that will create
  function descriptions, which the library can then use to call the
  described function remotely. The whole approach is very clean and
  minimalistic, but unfortunately, the code depends on liblwp -- a
  user space threading library. While threading is certainly useful on
  many occasions, we did not want to use a system that enforces
  threading. In C++, for instance, the behavior of exceptions within a
  thread are totally unspecified. Furthermore, user space threads do
  not achieve the performance of kernel threads, nor are they
  portable (RSE: Hmmmm... I'm not sure this really holds, because
  evaluation showed that 1. user-space dispatching is usually faster
  than dispatching in kernel-space and 2. GNU Pth proofed that
  user-space threading can be done in a very portable way).


o MRPC 0.9.1, http://www.tildeslash.org/mrpc.html

  "Modular RPC" is a minimalistic remote procedure call mechanism
  using a similar design as the original RPC: It consists of a code
  generator that will encapsulate function definitions in such a way
  that they can be called remotely with the functions provided in a
  link library. The whole system is very lean and efficient,
  marshaling is done automatically for most data types, and the
  provided documentation is sufficient.

  Unfortunately, the whole system is written in C++ and can thus not
  trivially be used in plain C or any other language.


o LinuxDoors 0.9, http://www.rampant.org/doors/

  The author discontinued development of the package in May 2001. The
  current version 0.9 is considered to be alpha quality software.


o ORBit 0.5.8, http://orbit-resource.sourceforge.net/

  ORBit implements the CORBA 2.2 protocol in order to provide RPC
  services. The source code is written in C and has been licensed
  under the GNU GPL for the general public. Considering the fact that
  ORBit uses CORBA, it is very fast and efficient. ORBit allows
  peer-to-peer communication without the use of a request broker and
  comes with an "interface definition language" (IDL) that is used for
  marshaling the parameters of remote function calls.

   - Requires glib 1.2.1 or newer.


o TIRPC, ftp://ftp.uu.net/networking/rpc/

  The "Transport Independent RPC" package is derived from the original
  SUN RPC and uses the TLI interface to access the network.
  Unfortunately, TLI is not widely supported; sockets rule the
  communication market. Thus, the package is not very useful for us.


o SunRPC

  The "original". While the RPC mechanism itself is fine, proven and
  widely available, the API for the programmer is insufficient: SunRPC
  does not support any asynchronous message passing in a sensible way.
  Furthermore, the standard dictates the use of XDR.


o DCE RPC, ftp://gatekeeper.dec.com/pub/DEC/DCE/

  This package was developed by the Open Software Foundation (OSF) in
  1993. It appears not to have changed since then: there is no support
  for GNU autoconf and consequently the build system fails miserably.
  Furthermore, the package inherently depends on pthreads but seems to
  call functions that are not part of the standard pthread
  implementation. Our impression is that a lot of clean-up work would
  be necessary before the package can even be compiled -- let alone be
  tested.

o PVM, http://www.epm.ornl.gov/pvm/

o Foreign Function Call Library
  http://clisp.cons.org/~haible/packages-ffcall.html


Evaluation for XDS
==================

o libbinio
  http://members.home.net/mikpos/libbinio/
o HiM
  http://www.sama.ru/~despair/him/
o pbio
  ftp://ftp.cc.gatech.edu/pub/groups/systems/chaos/pbio/
o SunRPC XDR
  RFC1832
o XTL
  http://gsd.di.uminho.pt/jop/xtl/
o CORBA GIOP CDR
  ???

CVSTrac 2.0.1