Distributed Objects - Remote Message Passing
lex at cc.gatech.edu
Mon Nov 20 16:25:45 UTC 2000
The best summary of the problems with the abstraction I've seen is at:
What do you think?
In particular, in your experience, what kind of things do you do to deal
with computers or networks crashing? At the very least, you are surely
very concious of which objects might be remote, aren't you? If you are
having to explicitly treat remote objects as different from regular
objects, it seems like a major benefit of RMI has been lost.
I'll toss out an example to demonstrate the idea: browsing remote code.
A few days ago, someone suggested that remote browsing could be
implemented by plugging remote objects into a regular system browser.
But suppose someone sets this up, clicks on a new item in the browser,
and that some remote method call hangs. The user then hits alt-. to get
control back. At this point, how do you know the browser is in a
consistent state? Whatever answer you give, is going to mean that the
browser code couldn't, after all, just be used as it is.
Overall, it seems that remote method invocation is convenient to
prototype with, but that it gets complicated when you worry about
unusual cases. How do you guard against crashes? How do you deal with
a message being sent twice, but the answer only being received once?
How do you deal with computers so slow they *look* like they've crashed?
Once you are thinking about issues like these, I don't see how RPC/RMI
really simplifies things so much. Once you are thinking about how real
networks fail, it seems better to just use asynchronous message passing
cg at cdegroot.com (Cees de Groot) wrote:
> Lex Spoon <lex at cc.gatech.edu> said:
> >But if you have control over both the client and the server, might I ask
> >what the goal is? First, method invocation isn't a great way to talk
> >across networks, especially since remote objects will never look exactly
> >like local objects, anyway. Read and Write are a much better fit for
> >current networks.
> Could you elaborate? My background is SunRPC/DCE/Corba/RMI, so method
> invocation is a sort of automatism I really don't think about anymore.
> >Second, if you really do want to do remote method
> >invocations, then it seems like overhead will be unavoidable.
> >Abstraction comes at a price.
> Witness RMI, which is (IMHO) a very decent implementation and serves
> well to show the amount of complexity that's necessary to do this right.
More information about the Squeak-dev