# US 10,455,040 B2 · Deferring invocation requests for remote objects

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 10,455,040 B2
- Document ID: US10455040B2
- Status: Granted
- Kind: B2
- Application number: 15/419,964
- Filed: 2017-01-30
- Published: 2018-08-02
- Granted: 2019-10-22
- Earliest claimed: 2017-01-30
- Assignees: Microsoft Technology Licensing, LLC
- Applicants: Microsoft Technology Licensing, LLC
- Inventors: Aaron Lahman; Yasser Shaaban; Mariyan Fransazov; Alexander Jon Dobin
- Web page: https://patentgrep.com/patent/US10455040B2

## CPC

- G06F 9/546: {Message passing systems or structures, e.g. queues}
- G06F 9/547: {Remote procedure calls [RPC]; Web services}
- G06F 9/548: {Object oriented; Remote method invocation [RMI] (non-remote method invocation G06F9/449)}
- H04L 67/025: for remote control or remote monitoring of applications
- H04L 67/561: Adding application-functional data or data for application control, e.g. adding metadata
- H04L 67/566: Grouping or aggregating service requests, e.g. for unified processing
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)

## Abstract

A system is provided for an application executing at a client to send invocation requests to remote objects of a server. Each invocation request is generated when the application invokes a proxy of a proxy class of the application corresponding to a remote object of a remote object class. For each invocation request, when the invocation request is deferrable, the system stores the invocation request. When the invocation request is not deferrable, the system sends to the server an invocation request message that includes each stored invocation request not previously sent and the current invocation request. The system receives invocation response messages from the server. For each invocation response of a received invocation response message, the system provides to the application an indication that the invocation response has been received.

## Claims

### Claim 1

A method performed by a client for sending invocation requests of an application to remote objects of a server, the method comprising:
receiving invocation requests, each invocation request being from a proxy of a proxy class of the application corresponding to a remote object of a remote object class;
for each received invocation request, determining whether the invocation request is deferrable,
when the invocation request is deferrable, storing the invocation request, and
when the invocation request is not deferrable, sending to the server an invocation request message that includes each stored invocation request not previously sent and the received invocation request, the invocation request message indicating an order in which the invocation requests we re received;
receiving from the server invocation response messages, each invocation response message being in response to an invocation request message that included one or more invocation requests, wherein at least one invocation response message includes multiple invocation responses, the multiple invocation responses being processed in the order in which the corresponding invocation requests were received; and
for each invocation response of a received invocation response message,
when the invocation response includes an output parameter, extracting the output parameter from the invocation response; and
providing to the application an indication that the invocation response has been received and any extracted output parameter.

### Claim 2 (depends on 1)

The method of claim 1 wherein the invocation requests are asynchronous invocation requests.

### Claim 3 (depends on 1)

The method of claim 1 wherein when an invocation request has been stored for more than a designated amount of time, sending an invocation request message that includes the invocation request.

### Claim 4 (depends on 1)

The method of claim 1 further comprising, in response to receiving from the application a request to send an unsent invocation request, sending an invocation request message that includes the invocation request.

### Claim 5 (depends on 1)

The method of claim 1 wherein invocation requests are received for remote objects hosted by different servers and wherein an invocation request message that is sent to a server includes only invocation requests for remote objects hosted by that server.

### Claim 6 (depends on 1)

The method of claim 1 wherein the application is executed under control of a browser.

### Claim 7 (depends on 1)

The method of claim 1 wherein the invocation requests are processed in the order specified by the invocation request message.

### Claim 8 (depends on 1)

The method of claim 1 wherein the invocation requests corresponding to the multiple invocation responses are identifiable from the multiple invocation responses.

### Claim 9

A method performed by a server for processing invocation requests of an application, the method comprising:
receiving from a client an invocation request message that includes invocation requests and that indicates an order in which the invocation requests were received, each invocation request being from a proxy of a proxy class of the application corresponding to a remote object of a remote object class of the application, the invocation request for invoking a remote object member function of the remote object;
for each invocation request of the invocation request message, processing the invocation request by:
extracting from the invocation request an object identifier of a remote object, a member function identifier of a remote object member function, and an input parameter;
invoking the identified remote object member function of the identified remote object passing the input parameter; and
upon return from the invoked remote object member function, storing an invocation response for the invocation request that includes an output parameter returned by the invoked remote object member function;
after processing the invocation requests, sending to the client an invocation response message that includes the invocation responses for processing in the order in which the corresponding invocation requests were received.

### Claim 10 (depends on 9)

The method of claim 9 wherein the invocation requests corresponding to the invocation responses are identifiable from the invocation responses.

### Claim 11 (depends on 9)

The method of claim 9 wherein the invocation requests are asynchronous invocation requests.

### Claim 12 (depends on 9)

The method of claim 9 wherein the invocation request message includes an invocation request that has been stored for more than a designated amount of time.

### Claim 13 (depends on 9)

The method of claim 9 wherein the invocation request message is sent from the client in response to receiving from the application a request to send an unsent invocation request, the invocation request message including the unsent invocation request.

### Claim 14 (depends on 9)

The method of claim 9 wherein the invocation request message includes only invocation requests for remote objects hosted by the server.

### Claim 15 (depends on 9)

The method of claim 9 wherein the application is executed under control of a browser.

### Claim 16

A computer program product comprising a computer-readable storage device storing computer-executable instructions that when executed by a processor causes the processor to perform a method comprising:
receiving invocation requests, each invocation request being from a proxy of a proxy class of the application corresponding to a remote object of a remote object class;
for each received invocation request, determining whether the invocation request is deferrable,
when the invocation request is deferrable, storing the invocation request, and
when the invocation request is not deferrable, sending to the server an invocation request message that includes each stored invocation request not previously sent and the received invocation request, the invocation request message indicating an order in which the invocation requests were received;
receiving from the server invocation response messages, each invocation response message being in response to an invocation request message that included one or more invocation requests, wherein at least one invocation response message includes multiple invocation responses, the multiple invocation responses being processed in the order in which the corresponding invocation requests were received; and
for each invocation response of a received invocation response message,
when the invocation response includes an output parameter, extracting the output parameter from the invocation response; and
providing to the application an indication that the invocation response has been received and any extracted output parameter.

### Claim 17 (depends on 16)

The computer program product of claim 16, wherein the invocation requests are asynchronous invocation requests.

### Claim 18 (depends on 16)

The computer program product of claim 16, wherein the method further comprises:
when an invocation request has been stored for more than a designated amount of time, sending an invocation request message that includes the invocation request.

### Claim 19 (depends on 16)

The computer program product of claim 16, wherein the method further comprises:
in response to receiving from the application a request to send an unsent invocation request, sending an invocation request message that includes the invocation request.

### Claim 20 (depends on 16)

The computer program product of claim 16, wherein invocation requests are received for remote objects hosted by different servers and wherein an invocation request message that is sent to a server includes only invocation requests for remote objects hosted by that server.
