On Mon, Dec 24, 2012 at 7:15 PM, Carlo E. Prelz <fluido / fluido.as> wrote:
>         Subject: Re: Advice for simple client/server application
>         Date: Tue 25 Dec 12 02:20:48AM +0900

> The amount of increased understanding is directly proportional to the
> amount of suffering involved ;-)

:-)

> My personal experience of inter-process-communications is that of:
>

> 4) reading a bit about CoRBA and being disgusted about that
>    committee-smacking stuff (I still have a book somewhere: anybody
>    wants to buy it?)

> 4 and 5 (as well as a myriad of other more or less successful
> solutions that I was spared), on the other hand, are object-oriented
> inter-process communications.
>
> CoRBA pretended to be language-independent, and an awkward crock was
> the result.

Sorry, I have to intervene here: CORBA does not deserve such a bad
reputation.  It *is* language independent which naturally introduces
some level of complexity.  But, for example, IIOP is pretty well done
since it especially allows for small message sizes - much smaller than
what is needed for a WebService SOAP request and response.  For WAN
communication this is an advantage.

> DRb, on the other hand, is Ruby-only (and made in Japan
> ;-), so it is clean and straightforward.

Well, to be fair it was written against a different set of
requirements.  Especially the fact that no support for different
programming languages was needed made things significantly easier.
Plus, of course, the elegance of Ruby helped a lot in making DRb easy
to use and blend seamlessly with local functionality.

> I do not have tutorials to suggest, since I generally learn by
> doing. But the nutshell is simple: from a process running here on my
> PC I can invoke the methods of an object instantiated by a process
> running in a toaster plugged to the internet in Waikaki, New Zealand,
> in a transparent way.

I'd *love* to see a picture of that toaster. :-)

> It is *almost* as if the two processes were the
> same. The scope of the *almost* will only become clear to you with
> experience.

Basically the central question for distributed applications is: which
data is stored where and what do I need to transfer between processes.
 Since remote method calls are much more expensive than in process
method calls people typically focus on reducing the number or
frequency of remote calls at the expense of more data being sent with
a single invocation.

Kind regards

robert

--
remember.guy do |as, often| as.you_can - without end
http://blog.rubybestpractices.com/