IP Library Granted Patent US 9,847,902
Granted Patent B2
US 9,847,902 · App. 13/734,096 · Granted Dec 19, 2017

Stateless microkernel web server architecture with self discoverable objects

Inventor: Matthew D. Bishop (North Vancouver, CA)
Assignee: Elastic Path Software, Inc.
H04L29/08072H04L29/06H04L67/02H04L67/142H04L67/42
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 9,847,902
App. No.
13/734,096
Granted
Dec 19, 2017
Kind
B2
Abstract

A method is provided for exchanging a self discoverable data object between a client executed on a client computing device and a server with a stateless REST-compliant software architecture, which is configured to reply to HTTP requests from a browser engine of the client and to messages from a runtime executable program executed by a runtime executable program interpreter of the client. The method may include receiving an HTTP response from the server, the response including the data object, the data object including a self entity including a URI and a content type of the data object, passing the data object to the runtime executable program at the runtime executable program interpreter for processing. The runtime executable program may communicate with the server using the URI and content type of the data object. Cache controls and an HREF may also be contained in the self entity.

Claims (55)

1. A method of exchanging over a computer network a data object between a client executed on a client computing device and server system including a server with a stateless REST-compliant software architecture configured to respond to HTTP requests from a browser engine of the client, the server also being configured to reply to messages from a runtime executable program executed by a runtime executable program interpreter of the client on the client computing device, the method comprising:

at the browser engine,

sending an HTTP GET request from the browser engine of the client computing device via the computer network for a data object;

receiving an HTTP response from the HTTP server, the response including in a payload of the response the data object, the data object including a self entity, wherein the self entity is a data structure that includes an HREF, a location-independent URI and a content type of the data object, as well as cache control information for the data object;

caching the data object in a browser cache based upon cache control information included in an HTTP header of the HTTP response;

removing from the data object HTTP header data including HTTP cache control information, content type, HREF, and URI; and

passing the data object to the runtime executable program at the runtime executable program interpreter;

at the runtime executable program,

identifying the URI and content type contained in the self entity of the data object;

interpreting the data object based upon the identified content type;

sending a message to the server based upon the identified URI;

receiving a reply from the server; and

processing the reply to generate an output to be displayed to the user;

at the browser engine,

sending a command to display the output on a display associated with the computing device, wherein

the content type specifies a format of the data object.

2. The method of claim 1 , wherein the server is further configured to execute an application server program and the step of sending a message to the server based upon the identified URI, includes sending the message to the application server program, and the step of receiving a reply from the server including receiving a reply from the application server program.

3. The method of claim 1 , further comprising, at the runtime executable program, caching the data object in an interpreter cache based on cache control information in the self entity of the data object.

4. The method of claim 1 , wherein the cache control information includes one or more of a max-age indicator, an ETag, and an if-modified-since indicator.

5. The method of claim 4 , wherein the runtime executable program is configured to control the caching of the data object in an interpreter cache based upon the cache control information.

6. The method of claim 5 , further comprising, at the runtime executable program, sending a message to the server conditionally requesting a new version of the data object and including the if-modified-since indicator.

7. The method of claim 5 , further comprising, at the runtime executable program, requesting a new instance of the data object if an age of the data object exceeds an age indicated by the max-age indicator.

8. The method of claim 5 , further comprising, at the runtime executable program, sending a conditional request for a new instance of the data object with an ETag of a cached instance of the data object accompanying the request, to cause the server to reply with a new instance only if the current instance of the data object on the server has an ETag that does not match the received ETag.

9. A method of exchanging over a computer network a data object between a client executed on a client computing device and a server system including a server with a stateless REST-compliant software architecture configured to respond to HTTP requests from a browser engine of the client, the server also being configured to reply to messages from a runtime executable program executed by a runtime executable program interpreter of the client on the client computing device, the method comprising:

at the server,

receiving an HTTP GET request from the browser engine of the client computing device via the computer network for a data object;

generating the data object with a self entity, wherein the self entity is a data structure that includes an HREF, a location-independent URI and a content type of the data object, as well as cache control information for the data object;

sending an HTTP response, including the data object and the self-entity along with the location-independent URI and the content type into a payload of the HTTP response, to the requesting browser engine, for passage to a runtime executable environment associated with the browser engine;

at the browser engine,

receiving the HTTP response including the data object;

caching the data object in a browser cache based on HTTP cache control information;

removing from the data object all HTTP header data including HTTP cache control information, content type, HREF, and URI;

passing the data object to a runtime executable environment, without HTTP cache control information, content type, or URI;

at the runtime executable program in the runtime executable environment,

receiving the data from the browser engine;

reading the cache control information and content type from the self entity;

caching the data object based on cache control information in the self entity of the data object;

sending a message to the server based upon the URI in the self entity;

at the server,

receiving a message from the runtime executable program executed in the runtime executable environment, the message including the URI of the self entity;

based on the URI, identifying an application state associated with the object;

generating a stateful reply, based on the application state; and

sending the reply to the runtime executable environment;

at the runtime executable program in the runtime environment,

receiving the reply; and

returning a result to the browser engine;

at the browser engine,

displaying the result on a display associated with the computing device, wherein

the content type specifies a format of the data object.

10. The method of claim 9 , wherein the cache control information includes one or more of a max-age indicator, an ETag, and an if-modified-since indicator.

11. The method of claim 10 , wherein the server is configured to respond to messages requesting a new version of the data object and including the if-modified-since indicator by only serving a new instance of the data object if it has been modified since a date and time indicated in the if-modified-since indicator.

12. The method of claim 10 , wherein the max age indicator causes the runtime executable program to purge cached objects exceeding the age indicated in the max age indicator.

13. The method of claim 10 , wherein the ETag causes the runtime executable program to request a new instance of the data object and send the ETag with the request, and the server is configured to respond with a new instance only if the current instance of the data object on the server has an ETag that does not match the received ETag.

14. The method of claim 9 , wherein the server is configured to respond to messages to a URI space that includes the URI.

15. The method of claim 9 , wherein the server system is configured as an e-commerce platform.

Assignments (6)
RELEASE OF SECURITY INTEREST Recorded Jan 12, 2022
From: NATIONAL BANK OF CANADA
To: ELASTIC PATH SOFTWARE INC.
Reel/Frame 058636/0637 →
SECURITY INTEREST Recorded Jan 10, 2022
From: ELASTIC PATH SOFTWARE INC.
To: ALTER DOMUS (US) LLC
Reel/Frame 058589/0131 →
SECURITY INTEREST Recorded Oct 28, 2019
From: ELASTIC PATH SOFTWARE INC.
To: NATIONAL BANK OF CANADA
Reel/Frame 050840/0942 →
RELEASE OF SECURITY INTEREST Recorded Nov 16, 2018
From: COMERICA BANK
To: ELASTIC PATH SOFTWARE, INC.
Reel/Frame 047530/0021 →
SECURITY INTEREST Recorded Mar 6, 2015
From: ELASTIC PATH SOFTWARE INC.
To: COMERICA BANK
Reel/Frame 035101/0244 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 4, 2013
From: BISHOP, MATTHEW D.
To: ELASTIC PATH SOFTWARE, INC.
Reel/Frame 029570/0433 →
Continuity (4)
Continuation 13646052 · Oct 5, 2012
Continuation 13633008 · Oct 1, 2012
Provisional Application 61584037 · Jan 6, 2012
Related Publication 20130179545A1 · Jul 11, 2013