Review for "Implementing Remote Procedure Calls"

From: Justin Voskuhl (justinv_at_microsoft.com)
Date: Wed Jan 28 2004 - 08:14:01 PST

  • Next message: Ian King: "Review: Birrell & Nelson, Implementing Remote Procedure Calls"

    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.

     


  • Next message: Ian King: "Review: Birrell & Nelson, Implementing Remote Procedure Calls"

    This archive was generated by hypermail 2.1.6 : Wed Jan 28 2004 - 08:14:03 PST