Remote procedure call system and method for RPC mechanism independent client and server interfaces interoperable with any of a plurality of remote procedure call backends
First Claim
1. An interface definition language compiler, for use with a computer system providing at least one remote procedure call mechanism-independent system for execution of a procedure in a server, the procedure invoked by a client and taking zero or more arguments, wherein the interface definition language compiler receives an interface definition file including a declaration of the interface of the procedure, and converts it to a remote procedure call mechanism-independent canonical specification which specifies a description of the interface such that a procedure call conforming to any arbitrary remote procedure call mechanism can be constructed therefrom at substantially the same time as the invocation of the procedure by the client the canonical specification including an identification of the procedure in the server, and for each argument included in the interface, a specification of a data type of the argument and at least one argument mode for passing the argument and defining the semantics for using the argument in the procedure, the compiler producing a client stub including the canonical specification, the client stub adapted to be compiled into the client for execution thereby.
2 Assignments
0 Petitions
Accused Products
Abstract
A system and method allow client applications to invoke remote procedures on a server application using any of a plurality of remote procedure mechanisms, by selecting a remote procedure call mechanism at runtime. The system and method uses client and server stubs in the application that include an mechanism-independent canonical specification of each procedure interface. The specification defines the form of the interface and arguments, but not does include conventional mechanism-specific marshalling arguments for marshalling the arguments. The resulting compiled stubs may be used with any remote procedure call engine. Such remote procedure call engines receive the specification of the procedure interface and the arguments passed by the client application to the server, and determine at runtime the particular marshalling routines to use, according to the canonical specification. This defers selection of the marshalling routines, and hence allows a single compiled client application binary code to be used with any of a variety of remote procedure call engines and marshalling routines. Deferring selection of marshalling routines further allows optimization of data types where the client and server computers share architectural characteristics. The system includes a interface definition language compiler that produces the client and server stubs having the canonical specification of the procedure interfaces, a virtual remote procedure library that selects a remote procedure call engine for a client, and plurality of remote procedure call engines.
96 Citations
25 Claims
- 1. An interface definition language compiler, for use with a computer system providing at least one remote procedure call mechanism-independent system for execution of a procedure in a server, the procedure invoked by a client and taking zero or more arguments, wherein the interface definition language compiler receives an interface definition file including a declaration of the interface of the procedure, and converts it to a remote procedure call mechanism-independent canonical specification which specifies a description of the interface such that a procedure call conforming to any arbitrary remote procedure call mechanism can be constructed therefrom at substantially the same time as the invocation of the procedure by the client the canonical specification including an identification of the procedure in the server, and for each argument included in the interface, a specification of a data type of the argument and at least one argument mode for passing the argument and defining the semantics for using the argument in the procedure, the compiler producing a client stub including the canonical specification, the client stub adapted to be compiled into the client for execution thereby.
-
11. A computer system for executing in a server application a remote procedure call by a client application, comprising:
a client side computer including; a client application including a client stub to the remote procedure, the client stub receiving zero or more arguments from the client application, and having an invocation that passes a remote procedure call mechanism-independent canonical specification to a client remote procedure call engine, the canonical specification of the interface of the remote procedure including; a procedure identifier uniquely identifying the remote procedure in a server interface of a server; for any argument specified in the interface of the remote procedure an implementation and machine independent argument specification of a data type of the argument, and at least one argument mode for passing the argument and defining the semantics for using the argument in the procedure; and
,a set of references, each reference for obtaining a value to an argument; a first plurality of marshalling routines, each marshalling routine associated with a specific client remote procedure call engine, and adapted to marshall an argument value by constructing for the argument value a representation of the argument value that is specific to the client remote procedure call engine and determined by the data type of the argument; at least one client remote procedure call engine, each client remote procedure call engine capable of receiving the canonical specification, and determining from the argument specification of the data type of each argument at the time the remote procedure call is executed, each client remote procedure call engine adapted to invoke for each argument in the canonical specification at least one marshalling routine associated with the client remote procedure call engine to marshall the argument, the client remote procedure call engine invoking the marshalling routine only when the client remote procedure call engine is invoked by client stub, and the client remote procedure call engine determined at substantially a same time as when the client application is executed. - View Dependent Claims (12, 13, 14)
-
15. A computer implemented method of creating an application stub for compilation into an application, the application stub interfacing the application to a remote procedure call mechanism for executing a procedure call defined in the application stub, the method comprising:
-
receiving an interface definition of the procedures the interface definition including zero or more input or output arguments; converting the interface definition to a remote procedure call mechanism-independent canonical specification which specifies a description of the interface such that a procedure call conforming to any arbitrary remote procedure call mechanism can be constructed therefrom at substantially the same time as the invocation of the procedure, the conversion comprising; specifying an identification of the procedure in the server; and specifying for each argument included in the interface a data type of the argument and at least one argument mode of the argument; and
,providing the canonical specification in the application stub. - View Dependent Claims (16, 17, 18, 19)
-
-
20. In a computer system including a client computer and a server computer, a computer readable memory for the client computer configured to provide a remote procedure call between the client computer and the server computer, comprising:
-
a client application including a client stub to the remote procedure, the client stub receiving zero or more arguments from the client application, and having an invocation that passes a remote procedure call mechanism-independent canonical specification to a client remote procedure call engine, the canonical specification of the interface of the remote procedure including; a procedure identifier uniquely identifying the remote procedure in a server interface of a server; for any argument specified in the interface of the remote procedure an implementation and machine independent argument specification of a data type of the argument, and at least one argument mode for passing the argument and defining the semantics for using the argument in the procedure; and
,a set of pointers, each pointer for obtaining a value to an argument; a first plurality of marshalling routines, each marshalling routine associated with a specific client remote procedure call engine, and adapted to marshall an argument value by constructing for the argument value a representation of argument value that is specific to the client remote procedure call engine and determined by the data type of the argument; at least one client remote procedure call engine, each client remote procedure call engine capable of receiving the canonical specification, and determining from the argument specification of the data type of each argument at the time the remote procedure call is executed, each client remote procedure call engine adapted to invoke for each argument in the canonical specification at least one marshalling routine associated with the client remote procedure call engine to marshall the argument, the client remote procedure call engine invoking the marshalling routine only at a time when the client remote procedure call engine is invoked by the client stub, and the client remote procedure call engine determined at substantially a same time as when the client application is executed. - View Dependent Claims (21, 22)
-
-
23. In a computer system including a client computer providing a client application and server computer providing a server procedure, a computer implemented method of providing a remote procedure call from the client application to the server procedure, comprising;
-
invoking the server procedure through a server interface in a client stub in the client application, and providing to the server procedure a number of arguments; invoking a remote procedure call engine, and providing thereto a remote procedure call mechanism-independent canonical specification which specifies a description of the interface such that a procedure call conforming to any arbitrary remote procedure call mechanism can be constructed therefrom at substantially the same time as the invocation of the procedure by the client, the canonical specification describing for each of the number of arguments, a data type of the argument and at least one argument mode for passing the argument and defining the semantics for using the argument in the server procedure; marshalling each of the arguments according to its data type with marshalling routines selected by the remote procedure call engine; and
,providing the marshalled arguments to the server procedure. - View Dependent Claims (24, 25)
-
Specification