Proxy Classes for Object-Oriented Remote Procedure Calls in Browsers

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Cloud-based applications lack support for object-oriented remote procedure calls (RPCs) from web browsers to servers, limiting their ability to use an object-oriented approach when accessing remote objects.

Innovation Solution

The system generates proxy classes on the client-side that mirror remote object classes on the server, allowing for object-oriented method invocations and property synchronization without requiring browser add-ons, by sending invocation requests and responses through HTTP messages.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Adaptability or versatility

If web browsers use traditional RPC mechanisms to access server services, then basic remote procedure calls can be made, but object-oriented method invocations are not supported

Engineering Contradiction:
Improveobject-oriented access supportVSAvoidbrowser functionality
Core Design Contradiction:
Adaptability or versatilityVSDevice complexity

Solution Approach 1:

The patent introduces a proxy class as an intermediary between the browser and the server. The proxy class contains methods that mirror the remote object's interface, allowing object-oriented method invocations in JavaScript. When a method is called on the proxy, the invocation is automatically converted into an HTTP request to the server, enabling OOP semantics without requiring the browser itself to support RPC natively.

Inventive Principle:
Principle #24Intermediary (Mediator)

Solution Approach 2:

The proxy class creates a local copy of the remote object's interface definition. By generating a JavaScript class that replicates the remote object's methods and properties, the system enables developers to interact with remote objects using familiar object-oriented syntax, while the actual method invocations are translated into HTTP communications behind the scenes.

Inventive Principle:
Principle #26Copying

2Reliability

If property values are synchronized between client and server in real-time, then data consistency is improved, but communication overhead increases

Engineering Contradiction:
Improvedata consistencyVSAvoidcommunication overhead
Core Design Contradiction:
ReliabilityVSLoss of energy

Solution Approach 1:

The proxy class maintains local copies of property values and provides getter and setter methods that operate on these local copies. When properties are accessed or modified through the proxy, the changes are automatically synchronized with the server in the background. This self-service mechanism ensures data consistency without requiring constant active communication, reducing overhead while maintaining reliability.

Inventive Principle:
Principle #25Self-service

3Speed

If all invocation requests are sent immediately to the server, then response time is reduced, but network traffic increases

Engineering Contradiction:
Improveresponse timeVSAvoidnetwork traffic
Core Design Contradiction:
SpeedVSQuantity of substance

Solution Approach 1:

The proxy class pre-loads and caches property values from the server before they are actually needed by the application. By performing preliminary data retrieval and storing it locally in the proxy, the system reduces the need for frequent immediate requests to the server, thereby reducing network traffic while maintaining fast response times for subsequent property accesses.

Inventive Principle:
Principle #10Preliminary action

Data Source

PatentUS11010219B2Object-oriented remote procedure calls for browser applications
Publication Date: 2021.05.18 MICROSOFT TECHNOLOGY LICENSING LLC
  • US11010219B2 patent drawing
  • US11010219B2 patent drawing
  • US11010219B2 patent drawing

AI summary

A system is provided for an application executed by a client to invoke a remote object method of a remote object of a remote object class that is hosted by a server. The application instantiates a proxy of a proxy class that includes a proxy member function with the same signature as the remote object member function. The application associates an object identifier with the proxy. The application invokes the proxy member function of the proxy. Under control of the invoked proxy member function, the application sends to the server an invocation request message that includes the object identifier that is associated with the proxy and an identifier of the remote object member function. The application relies on functionality provided by the browser without the need for the browser to access add-on functionality when executing the application.