From: Justin Voskuhl (justinv_at_microsoft.com)
Date: Wed Jan 28 2004 - 08:14:01 PST
This paper describes an RPC system built for handling RPCs in the
Cedar/Mesa development environment at Xerox. I've recently built
some applications using the .NET Remoting functionality built into
the .NET framework and there are some interesting comparisons to
be made I think. I'm impressed at how much of the functionality
of a modern system like .NET Remoting is present in this RPC system.
First, the Xerox RPC system they present automatically handles generating
proxy/stub components on the client and server side, because of the
rich type information exposed by their programming environment.
Each module gives information about the procedures it exports, as
well as the types of the arguments and type of the return value.
.NET provides this functionality via a class library. Instead
of accessing interfaces, in .NET you get access to remote objects.
The objects can be accessed by reference or by value.
The Xerox RPC system has a standard way of implementing serialization
of parameters and return values. The .NET Remoting system does this
as well, but provides a few optional choices for the programmer to
control this. You can use the binary serializer provided by .NET, or
the XML serializer, or you can choose to implement you own.
The Xerox system uses the GrapeVine distributed database to advertise
the availability of remote interfaces. In the .NET world the UDDI
standard is what's used to advertise remote services.
The implementers of this system chose to implement their own network
protocol and include an encryption scheme with their RPC package.
They claim it's needed for performance, although today it's unlikely
you would implement something like this at such a low level. In .NET
Remoting you can choose the transport (or provide your own) for the
remoting calls to run over. The built-in transport choices include
TCP, HTTP, and HTTPS. In .NET you can either have your transport
provide encryption, or your serializer can encrypt as it serializes.
Since .NET is object oriented it has another whole class of problems
to address, including object lifetimes when objects are being
marshaled by reference. It has a number of schemes available for
managing the lifetime of objects across a remoting boundary.
This archive was generated by hypermail 2.1.6 : Wed Jan 28 2004 - 08:14:03 PST