A system providing improved methods for remote method invocation of a service
is
described. The system includes methodology for a client to cast, at design time,
a generic interface class to a remote service having a defined interface. The generic
interface class dynamically generates a proxy for making a remote method call on
the remote service at runtime, while also providing for runtime type checking.
The generic interface class is subclassed to provide support for particular wire
formats and methods of transport. The dynamically generated proxy converts a remote
method call by the client into a wire format specified in the remote service's
interface definition and calls the remote service using the method of transport
specified in the interface definition. The system also supports making a service
available to remote clients and includes modules for converting remote method calls
on a service into native format.