Patent US5724588A successfully refreshed from Google Patents.
← Back to Patent Explorer
US5724588A Expired / Lapsed US ⏱️ 0.0 years remaining

Method and system for network marshalling of interface pointers for remote procedure calls

Assignee: Microsoft Technology Licensing LLC
•
Filing: 1995-06-07
•
Granted: 1998-03-03
•
Expires: 2015-06-07
📄 Original PDF 🌐 Google Patents 🔄 Sync Now

Abstract

Abstract A computer method and system for passing a pointer to an interface from a server process to a client process. In a preferred embodiment, the server process instantiates an object that has multiple interfaces. The server process identifies an interface to pass to the client process and creates a stub object for receiving a request to invoke a function member of the interface and for invoking the requested function member upon receiving the request. The server process then sends an identifier of the stub to the client process. When the client process receives the identifier of the stub, it instantiates a proxy object for receiving requests to invoke a function member of the interface and for sending the request to the identified stub. The client process can then invoke the function members of the interface by invoking function members of the proxy object. The proxy object sends a request to the identified stub. The identified stub then invokes the corresponding function member of the interface.

Inventors

  • 👤 Richard Douglas Hill
  • 👤 Antony S. Williams
  • 👤 Robert G. Atkinson
  • 👤 Tom Corbett
  • 👤 Paul Leach
  • 👤 Shannon John Chan
  • 👤 Alexander Adams Mitchell
  • 👤 Edward K. Jung
  • 👤 Craig Henry Wittenberg

Bibliographic Details

Application Number —
Jurisdiction US
Data Source google_patents
Last Synchronized 2026-10-30 23:41
CPC Classifications
G; G06; G06F; G06F9/00; G06F9/06; G06F9/46; G06F9/54; G06F9/547; G06F9/44; G06F9/448; G06F9/4488; G06F9/548

Claims Analysis

Total Claims: 44
Claim 1
Independent Claim 125 words
A method in a computer system for providing a client with access to a client implementation of an interface corresponding to a server implementation of the interface provided by a server, comprising: under control of the server, sending to the client an indication of unmarshalling code and information for use by the unmarshalling code to provide the client implementation of the interface that corresponds to the server implementation of the interface; and under control of the client, receiving the indication of the unmarshalling code and the information; and executing the indicated unmarshalling code to generate a pointer to the client implementation of the interface in accordance with the received information whereby the client uses the generated pointer to access the client implementation of the interface.
Claim 2
Independent Claim 125 words
A method in a computer system for providing a client with access to a client implementation of an interface corresponding to a server implementation of the interface provided by a server, comprising: under control of the server, sending to the client an indication of unmarshalling code and information for use by the unmarshalling code to provide the client implementation of the interface that corresponds to the server implementation of the interface; and under control of the client, receiving the indication of the unmarshalling code and the information; and executing the indicated unmarshalling code to generate a pointer to the client implementation of the interface in accordance with the received information whereby the client uses the generated pointer to access the client implementation of the interface.
Claim 3
Dependent Claim 118 words
The method of claim 1 wherein the interface has a function member and including: under control of the server, creating a stub for, in response to receiving a request to invoke the function member of the server implementation of the interface, invoking the function member of the server implementation of the interface, and wherein the information sent to the client includes a reference to the created stub; and under control of the client, using the generated pointer to invoke the function member of the client implementation of the function member, wherein the invoked function member sends a request to the stub referenced in the received information to invoke the function member of the server implementation of the interface.
Claim 4
Dependent Claim 97 words
The method of claim 1 wherein the interface has a function member that provides a behavior, wherein the server implementation of the interface has associated state information and wherein the sending of information to the client includes the state information, and including under control of the client, using the generated pointer to invoke the function member of the client implementation of the interface wherein the invoked function member accesses the received state information to provide the behavior of the function member without requesting that the server invoke the function member of the server implementation of the interface.
Claim 5
Dependent Claim 12 words
The method of claim 3 wherein the state information is immutable information.
Claim 6
Dependent Claim 30 words
The method of claim 1 wherein the interface has a query interface function member for providing a reference to another interface that is accessible to an implementation of the interface.
Claim 7
Dependent Claim 40 words
The method of claim 1 including: under control of the server, determining whether the interface has associated custom unmarshalling code; and when the interface has associated custom unmarshalling code, sending to the client an indication of the custom unmarshalling code.
Claim 8
Dependent Claim 26 words
The method of claim 6 including: when the interface does not have associated custom unmarshalling code, sending to the client an indication of standard marshalling code.
Claim 9
Dependent Claim 76 words
The method of claim 6 including: under control of the server, invoking a query interface function member of the server implementation of the interface to determine whether the server implementation of the interface has access to a custom marshalling interface; and when the server implementation of the interface has access, invoking a function member of the custom marshalling interface to provide the indication of the unmarshalling code and the information for use by the unmarshalling code.
Claim 10
Dependent Claim 88 words
The method of claim 1 wherein the interface has a function member, wherein the server implementation of the interface has associated state information that is stored in memory shared with the client, and wherein the information sent by the server includes a reference to the state information in the shared memory and including: under control of the client, invoking the function member of the client implementation of the interface wherein the invoked function member accesses the state information using the reference to the state information in shared memory.
Claim 11
Dependent Claim 50 words
The method of claim 1 wherein the indication of the unmarshalling code identifies a class of a proxy object and before executing the unmarshalling code, instantiating a proxy object of the identified class and invoking a function member of the proxy object to control the execution of the unmarshalling code.
Claim 12
Dependent Claim 95 words
A computer system for providing a client with access to a client interface through which the client accesses a server, comprising: server means for sending to the client an indication of unmarshalling code and information for use by the unmarshalling code to provide the client interface; and client means for receiving the indication of the unmarshalling code and the information, and executing the indicated unmarshalling code to generate a pointer to the client interface in accordance with the received information whereby the client uses the generated pointer to access the server through the client interface.
Claim 13
Dependent Claim 95 words
A computer system for providing a client with access to a client interface through which the client accesses a server, comprising: server means for sending to the client an indication of unmarshalling code and information for use by the unmarshalling code to provide the client interface; and client means for receiving the indication of the unmarshalling code and the information, and executing the indicated unmarshalling code to generate a pointer to the client interface in accordance with the received information whereby the client uses the generated pointer to access the server through the client interface.
Claim 14
Dependent Claim 121 words
The system of claim 11 wherein the interface has a function member and, the server means further includes means for creating a stub, the stub for, in response to receiving a request to invoke the function member of the server implementation of the interface, invoking the function member of the server implementation of the interface, and means for sending to the client a reference to the created stub; and the client means further includes means for using the generated pointer to invoke the function member of the client implementation of the function member, wherein the invoked function member sends a request to the stub referenced in the received information to invoke the function member of the server implementation of the interface.
Claim 15
Dependent Claim 30 words
The system of claim 11 wherein the interface has a query interface function member for providing a reference to another interface that is accessible to an implementation of the interface.
Claim 16
Dependent Claim 44 words
The system of claim 11 wherein the server means further includes means for determining whether the interface has associated custom unmarshalling code, and means for sending to the client an indication of the custom unmarshalling code when the interface has associated custom unmarshalling code.
Claim 17
Dependent Claim 53 words
The system of claim 11 wherein the indication of the unmarshalling code identifies a class of a proxy object and before executing the unmarshalling code, the client means instantiates a proxy object of the identified class and invokes a function member of the proxy object to control the execution of the unmarshalling code.
Claim 18
Independent Claim 101 words
A method in a computer system for unmarshalling a pointer to a server interface sent from a server to a client, the server interface for providing a service to the client, comprising: receiving an indication of unmarshalling code and information describing the server interface of the server; locating the unmarshalling code indicated by the received indication; executing the located unmarshalling code to generate a pointer to a client interface; and using the generated pointer to invoke a function member of the client interface wherein the invoked function member provides the service to the client using the information describing the server interface.
Claim 19
Independent Claim 101 words
A method in a computer system for unmarshalling a pointer to a server interface sent from a server to a client, the server interface for providing a service to the client, comprising: receiving an indication of unmarshalling code and information describing the server interface of the server; locating the unmarshalling code indicated by the received indication; executing the located unmarshalling code to generate a pointer to a client interface; and using the generated pointer to invoke a function member of the client interface wherein the invoked function member provides the service to the client using the information describing the server interface.
Claim 20
Dependent Claim 25 words
The method of claim 16 wherein the invoked function member requests that a function member of the server interface of the server provide the service.
Claim 21
Dependent Claim 49 words
The method of claim 16 wherein the indication of the unmarshalling code identifies a class of a proxy object and before executing the unmarshalling code, instantiating a proxy object of the identified class and invoking a function member of the proxy object to control the execution of unmarshalling code.
Claim 22
Independent Claim 146 words
A method in a computer system for custom marshalling of a pointer to an object from a server to a client, the object having data members and function members comprising: instantiating the object; determining whether custom marshalling code is provided for the object; when it is determined that custom marshalling code is provided, executing custom marshalling code to provide an indication of custom unmarshalling code and information describing the object to the custom unmarshalling code; and when it is determined that custom marshalling code is not provided, executing standard marshalling code to provide an indication of standard unmarshalling code and information describing the object to the standard unmarshalling code; and sending the provided indication and information to the client so that the client can execute the indicated unmarshalling code to provide a custom or standard proxy object through which to request services of the instantiated object.
Claim 23
Independent Claim 146 words
A method in a computer system for custom marshalling of a pointer to an object from a server to a client, the object having data members and function members comprising: instantiating the object; determining whether custom marshalling code is provided for the object; when it is determined that custom marshalling code is provided, executing custom marshalling code to provide an indication of custom unmarshalling code and information describing the object to the custom unmarshalling code; and when it is determined that custom marshalling code is not provided, executing standard marshalling code to provide an indication of standard unmarshalling code and information describing the object to the standard unmarshalling code; and sending the provided indication and information to the client so that the client can execute the indicated unmarshalling code to provide a custom or standard proxy object through which to request services of the instantiated object.
Claim 24
Dependent Claim 42 words
The method of claim 19 including: creating a stub for, in response to receiving a request to invoke a function member of the object, invoking the function member of the object; and sending to the client a reference to the created stub.
Claim 25
Dependent Claim 35 words
The method of claim 19 including: determining whether the object has associated custom unmarshalling code; and when the object has associated custom unmarshalling code, sending to the client an indication of the custom unmarshalling code.
Claim 26
Dependent Claim 26 words
The method of claim 21 including: when the interface does not have associated custom unmarshalling code, sending to the client an indication of standard marshalling code.
Claim 27
Independent Claim 195 words
A method in a comptuer system for marshalling a pointer to an interface from a first server to a client, the pointer pointing to an interface of the first server that is marshalled from a second server, the interface having a function member providing a behavior, wherein the client, the first server, and the second server each have an implementation of the function member, wherein the implementation of the function member of the first server requests the implementation of the function member of the second server to perform the behavior of the function member, comprising: under control of the first server, sending to the client an indication of unmarshalling code and information indicating the second server; and under control of the client, receiving the indication of the unmarshalling code and the information; and executing the indicated unmarshalling code to generate a pointer to an interface with a client implementation of the function member that when invoked requests the second server to provide the behavior whereby when the client implementation of the function member is invoked, then the client requests the second server to perform the behavior without requesting the first server to perform the behavior.
Claim 28
Independent Claim 195 words
A method in a comptuer system for marshalling a pointer to an interface from a first server to a client, the pointer pointing to an interface of the first server that is marshalled from a second server, the interface having a function member providing a behavior, wherein the client, the first server, and the second server each have an implementation of the function member, wherein the implementation of the function member of the first server requests the implementation of the function member of the second server to perform the behavior of the function member, comprising: under control of the first server, sending to the client an indication of unmarshalling code and information indicating the second server; and under control of the client, receiving the indication of the unmarshalling code and the information; and executing the indicated unmarshalling code to generate a pointer to an interface with a client implementation of the function member that when invoked requests the second server to provide the behavior whereby when the client implementation of the function member is invoked, then the client requests the second server to perform the behavior without requesting the first server to perform the behavior.
Claim 29
Dependent Claim 114 words
A computer-readable medium containing instructions for causing a computer system to provide a client with access to a client implementation of an interface corresponding to a server implementation of the interface provided by a server by: under control of the server, sending to the client an indication of unmarshalling code and information for use by the unmarshalling code to provide the client implementation of the interface that corresponds to the server implementation of the interface; and under control of the client, receiving the indication of the unmarshalling code and the information; and executing the indicated unmarshalling code to generate a pointer to the client implementation of the interface in accordance with the received information.
Claim 30
Dependent Claim 114 words
A computer-readable medium containing instructions for causing a computer system to provide a client with access to a client implementation of an interface corresponding to a server implementation of the interface provided by a server by: under control of the server, sending to the client an indication of unmarshalling code and information for use by the unmarshalling code to provide the client implementation of the interface that corresponds to the server implementation of the interface; and under control of the client, receiving the indication of the unmarshalling code and the information; and executing the indicated unmarshalling code to generate a pointer to the client implementation of the interface in accordance with the received information.
Claim 31
Dependent Claim 119 words
The computer-readable medium of claim 24 wherein the interface has a function member and including: under control of the server, creating a stub for, in response to receiving a request to invoke the function member of the server implementation of the interface, invoking the function member of the server implementation of the interface, and wherein the information sent to the client includes a reference to the created stub; and under control of the client, using the generated pointer to invoke the function member of the client implementation of the function member, wherein the invoked function member sends a request to the stub referenced in the received information to invoke the function member of the server implementation of the interface.
Claim 32
Dependent Claim 98 words
The computer-readable medium of claim 24 wherein the interface has a function member that provides a behavior, wherein the server implementation of the interface has associated state information and wherein the sending of information to the client includes the state information, and including under control of the client, using the generated pointer to invoke the function member of the client implementation of the interface wherein the invoked function member accesses the received state information to provide the behavior of the function member without requesting that the server invoke the function member of the server implementation of the interface.
Claim 33
Dependent Claim 13 words
The computer-readable medium of claim 26 wherein the state information is immutable information.
Claim 34
Dependent Claim 31 words
The computer-readable medium of claim 24 wherein the interface has a query interface function member for providing a reference to another interface that is accessible to an implementation of the interface.
Claim 35
Dependent Claim 41 words
The computer-readable medium of claim 24 including: under control of the server, determining whether the interface has associated custom unmarshalling code; and when the interface has associated custom unmarshalling code, sending to the client an indication of the custom unmarshalling code.
Claim 36
Dependent Claim 27 words
The computer-readable medium of claim 29 including: when the interface does not have associated custom unmarshalling code, sending to the client an indication of standard marshalling code.
Claim 37
Dependent Claim 77 words
The computer-readable medium of claim 29 including: under control of the server, invoking a query interface function member of the server implementation of the interface to determine whether the server implementation of the interface has access to a custom marshalling interface; and when the server implementation of the interface has access, invoking a function member of the custom marshalling interface to provide the indication of the unmarshalling code and the information for use by the unmarshalling code.
Claim 38
Dependent Claim 89 words
The computer-readable medium of claim 24 wherein the interface has a function member, wherein the server implementation of the interface has associated state information that is stored in memory shared with the client, and wherein the information sent by the server includes a reference to the state information in the shared memory and including: under control of the client, invoking the function member of the client implementation of the interface wherein the invoked function member accesses the state information using the reference to the state information in shared memory.
Claim 39
Dependent Claim 51 words
The computer-readable medium of claim 24 wherein the indication of the unmarshalling code identifies a class of a proxy object and before executing the unmarshalling code, instantiating a proxy object of the identified class and invoking a function member of the proxy object to control the execution of the unmarshalling code.
Claim 40
Dependent Claim 149 words
A computer-readable medium containing instructions for causing a computer system to marshal a pointer to an object from a server to a client, the object having data members and function members by: instantiating the object; determining whether the custom marshalling code is provided for the object; when it is determined that custom marshalling code is provided, executing custom marshalling code to provide an indication of custom unmarshalling code and information describing the object to the custom unmarshalling code; and when it is determined that custom marshalling code is not provided, executing standard marshalling code to provide an indication of standard unmarshalling code and information describing the object to the standard unmarshalling code; and sending the provided indication and information to the client so that the client can execute the indicated unmarshalling code to provide a custom or standard proxy object through which to request services of the instantiated object.
Claim 41
Dependent Claim 149 words
A computer-readable medium containing instructions for causing a computer system to marshal a pointer to an object from a server to a client, the object having data members and function members by: instantiating the object; determining whether the custom marshalling code is provided for the object; when it is determined that custom marshalling code is provided, executing custom marshalling code to provide an indication of custom unmarshalling code and information describing the object to the custom unmarshalling code; and when it is determined that custom marshalling code is not provided, executing standard marshalling code to provide an indication of standard unmarshalling code and information describing the object to the standard unmarshalling code; and sending the provided indication and information to the client so that the client can execute the indicated unmarshalling code to provide a custom or standard proxy object through which to request services of the instantiated object.
Claim 42
Dependent Claim 43 words
The computer-readable medium of claim 34 including: creating a stub for, in response to receiving a request to invoke a function member of the object, invoking the function member of the object; and sending to the client a reference to the created stub.
Claim 43
Dependent Claim 36 words
The computer-readable medium of claim 34 including: determining whether the object has associated custom unmarshalling code; and when the object has associated custom unmarshalling code, sending to the client an indication of the custom unmarshalling code.
Claim 44
Dependent Claim 27 words
The computer-readable medium of claim 36 including: when the interface does not have associated custom unmarshalling code, sending to the client an indication of standard marshalling code.

References Cited (Backward Citations)

US5062040A Cited
US5007080A Cited
US5430876A Cited
US5187790A Cited
US5218699A Cited
US5546584A Cited
US5307490A Cited
US5526491A Cited
US5329619A Cited
US5377350A Cited
US5463625A Cited
US5517645A Cited

USPTO Annuity & Maintenance Windows

Annuity Stage Window Opens Payment Deadline Surcharge Period Until Estimated Fee Status
3.5 Years (Year 4) 2001-03-02 2001-09-01 2002-03-03 $2000.00 Window Closed / Lapsed
7.5 Years (Year 8) 2005-03-02 2005-09-01 2006-03-03 $3760.00 Window Closed / Lapsed
11.5 Years (Year 12) 2009-03-02 2009-09-01 2010-03-03 $7700.00 Window Closed / Lapsed

Assigned Categories & Tags

No categories assigned to this patent yet.

Assign Category Tag