← Back to Patent Explorer
US5887172A Expired / Lapsed US ⏱️ 0.0 years remaining

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

Assignee: Oracle America Inc
•
Filing: 1996-01-10
•
Granted: 1999-03-23
•
Expires: 2016-01-10
📄 Original PDF 🌐 Google Patents 🔄 Sync Now

Abstract

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.

Inventors

  • 👤 Rangaswamy Vasudevan
  • 👤 Caveh Jalali

Bibliographic Details

Application Number —
Jurisdiction US
Data Source google_patents
Last Synchronized 2026-11-02 18:43
CPC Classifications
G; G06; G06F; G06F9/00; G06F9/06; G06F9/46; G06F9/54; G06F9/547

Claims Analysis

Total Claims: 30
Claim 1
Independent Claim 182 words
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.
Claim 2
Dependent Claim 182 words
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.
Claim 3
Dependent Claim 65 words
The interface definition language compiler of claim 1, wherein the interface definition language compiler produces a server stub adapted to receive the canonical specification of the interface of the procedure, and determine therefrom for each argument a data type at least one argument mode for the argument for providing the arguments to the server procedure, and for returning an output argument to the client stub.
Claim 4
Dependent Claim 20 words
The interface definition language compiler of claim 1, wherein the argument modes include an input mode and an output mode.
Claim 5
Dependent Claim 21 words
The interface definition language compiler of claim 1, wherein the argument modes include a lend mode and a lend to mode.
Claim 6
Dependent Claim 22 words
The interface definition language compiler of claim 1, wherein the argument modes include a move to mode and a move from mode.
Claim 7
Dependent Claim 22 words
The interface definition language compiler of claim 1, wherein the argument modes include a copy to mode and a copy from mode.
Claim 8
Dependent Claim 53 words
The interface definition language compiler of claim 1, wherein the canonical specification includes an interface specification comprising: a specification of a procedure identifier that uniquely identifies the procedure in the server; a specification of the number of arguments; and, a specification of a return type for the output argument of the server procedure.
Claim 9
Dependent Claim 157 words
The interface definition language compiler of claim 1 operating with a computer system comprising: plurality of marshalling routines; a client remote procedure call engine and a server remote procedure engine, the remote procedure engines providing a transport mechanism between the client stub and a server stub of the server procedure; and, wherein the interface definition language compiler produces in the client stub an invocation to the client remote procedure call engine to provide thereto the canonical specification, the client remote procedure call engine adapted to invoke selected marshalling routines according to the data types of the arguments specified in the canonical specification to marshall values for the arguments into transport specific structures, the client remote procedure call engine further adapted to provide the transport specific structures to the server remote procedure engine which invokes selected marshalling routines to obtain the argument value and data types, and provides the argument values and data types to the server stub.
Claim 10
Dependent Claim 21 words
The interface definition language compiler of claim 7, wherein the data type of each argument is specified by a bytecode representation.
Claim 11
Dependent Claim 57 words
The interface definition language compiler of claim 9, wherein: the interface definition language compiler produces a type dictionary including an entry for each unique data type, the entry including bytecode representation specifying the data type; and, p1 the argument specification includes for the data type of each argument a reference to an entry in the type dictionary.
Claim 12
Dependent Claim 326 words
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.
Claim 13
Dependent Claim 326 words
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.
Claim 14
Dependent Claim 136 words
The computer system of claim 11, further comprising: a server side computer including: a server application including the remote procedure; a server stub providing the interface to the remote procedure; a second plurality of marshalling routines, each marshalling routine associated with a specific server remote procedure call engine to be invoked thereby, and adapted to unmarshall an argument to determine its argument value and data type; at least one server remote procedure call engine adapted to receive from a client remote procedure call engine each marshalled argument, the server remote procedure call engine invoking at least one marshalling routine of the second plurality to unmarshall the argument to determine the argument data type and argument value, the server remote procedure call engine providing the argument value and data type of each argument to the server stub.
Claim 15
Dependent Claim 27 words
The system of claim 12, further comprising: an interface definition language compiler that produces from the interface of the server procedure the client stub and server stub.
Claim 16
Dependent Claim 54 words
The system of claim 13, further comprising: a type dictionary including an entry for each unique data type in each canonical specification of the server interfaces, a bytecode representation, and the canonical specification of the server interfaces includes for the argument type of each argument a reference to an entry in the type dictionary.
Claim 17
Dependent Claim 149 words
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.
Claim 18
Dependent Claim 149 words
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.
Claim 19
Dependent Claim 34 words
The method of claim 15, further comprising: providing in the application stub an invocation of a client remote procedure call engine, the invocation passing to the client remote procedure call engine the canonical specification.
Claim 20
Dependent Claim 32 words
The method of claim 15, further comprising: creating a server stub to receive the arguments specified in the application stub, and provide the arguments to a server application including the server procedure.
Claim 21
Dependent Claim 56 words
The method of claim 15, further comprising: creating a type dictionary that includes an entry for each unique data type in the canonical specification, the entry including a bytecode representation of the data type, such that the canonical specification includes for the data type of each argument a reference to an entry in the type dictionary.
Claim 22
Dependent Claim 28 words
The method of claim 18, wherein the type dictionary is provided to both a client application including the client stub, and a server application including the server procedure.
Claim 23
Dependent Claim 342 words
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.
Claim 24
Dependent Claim 342 words
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.
Claim 25
Dependent Claim 26 words
The computer readable memory of claim 20, further comprising: an interface definition language compiler that produces from the interface of the server procedure the client stub.
Claim 26
Dependent Claim 56 words
The computer readable memory of claim 20, further comprising: a type dictionary including an entry for each unique data type in each canonical specification of the server interfaces, a bytecode representation, and the canonical specification of the server interfaces includes for the argument type of each argument a reference to an entry in the type dictionary.
Claim 27
Dependent Claim 186 words
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.
Claim 28
Dependent Claim 186 words
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.
Claim 29
Dependent Claim 49 words
The method of claim 23, further comprising: selecting the remote procedure call engine at substantially a same time as the invocation of the server procedure from among a plurality of remote procedure call engines according to a designation of a remote procedure call engine associated with the server procedure.
Claim 30
Dependent Claim 52 words
The method of claim 23, further comprising: determining whether the server computer and the client computer have a common architecture; selecting arguments from the invocation and providing opaque data types for the arguments instead of marshalling the argument with selected marshalling routines; and, providing the opaque data types to the server procedure.

USPTO Annuity & Maintenance Windows

Annuity Stage Window Opens Payment Deadline Surcharge Period Until Estimated Fee Status
3.5 Years (Year 4) 2002-03-22 2002-09-21 2003-03-23 $2000.00 Window Closed / Lapsed
7.5 Years (Year 8) 2006-03-22 2006-09-21 2007-03-23 $3760.00 Window Closed / Lapsed
11.5 Years (Year 12) 2010-03-22 2010-09-21 2011-03-23 $7700.00 Window Closed / Lapsed

Assigned Categories & Tags

No categories assigned to this patent yet.

Assign Category Tag