Method and apparatus for determining the order of streaming modules
First Claim
1. A method for streaming a plurality of modules of an application from a server to a client, the method comprising:
- identifying potential execution transitions between the plurality of modules, the plurality of modules each including executable code;
associating a weighted value with each transition, each said weighted value indicating a likelihood relative to other transitions that said transition will occur when the application is executed;
computing an order in which the plurality of modules is to be streamed to the client, based on the weighted values associated with the transitions;
initiating transmission of the plurality of modules to the client in said order, to cause the client to execute executable code in at least a first module of the plurality of modules while at least a second module of the plurality of modules is being transmitted to the client;
deciding, during the transmission of the plurality of modules, whether said order in which the plurality of modules is to be streamed to the client is to be modified in response to receiving data pertaining to a current execution state of the application from the client; and
transmitting the plurality of modules in a modified order if said order has been decided to be modified based on the current execution state of the application.
2 Assignments
0 Petitions
Accused Products
Abstract
A method for determining an order in which to stream modules of an application from a server to a client, where the application uses modules in an execution-time dependent order, employs a predictive model to determine which module transitions are most likely to occur in the future in view of the clients present state in the application and then stream the modules to the client in the determined order. Different sets of transition weights can be used for clients falling into different categories, such as time of application use and age of the user at the client. Additional factors which can be used to select the order to stream the modules include cache utilization at the client and customized streaming orders specified by the user.
202 Citations
20 Claims
-
1. A method for streaming a plurality of modules of an application from a server to a client, the method comprising:
-
identifying potential execution transitions between the plurality of modules, the plurality of modules each including executable code; associating a weighted value with each transition, each said weighted value indicating a likelihood relative to other transitions that said transition will occur when the application is executed; computing an order in which the plurality of modules is to be streamed to the client, based on the weighted values associated with the transitions; initiating transmission of the plurality of modules to the client in said order, to cause the client to execute executable code in at least a first module of the plurality of modules while at least a second module of the plurality of modules is being transmitted to the client; deciding, during the transmission of the plurality of modules, whether said order in which the plurality of modules is to be streamed to the client is to be modified in response to receiving data pertaining to a current execution state of the application from the client; and transmitting the plurality of modules in a modified order if said order has been decided to be modified based on the current execution state of the application. - View Dependent Claims (2, 3, 4, 5, 6)
-
-
7. A method for streaming a plurality of modules of an application from a server to a client, the method comprising:
-
receiving notice that a user is executing a particular function associated with two or more of the plurality of modules of the application, each of the plurality of modules including executable code; if the particular function has an associated user-selected streaming order, initiating streaming of the two or more of the plurality of modules associated with the particular function to the client in the user-selected streaming order; and if the particular function does not have an associated user-selected streaming order, determining an alternative order for streaming of the two or more of the plurality of modules associated with the particular function based on data pertaining to a current execution state of the particular function and a set of predefined weighted values for transitions between modules of said two or more of the plurality of modules associated with the particular function, and streaming the two or more of the plurality of modules to the client in the alternative order. - View Dependent Claims (8, 9, 10, 11)
-
-
12. A system for streaming a plurality of modules of an application from a streaming server computer to a client computer, the system comprising:
-
the streaming server computer coupled to the client computer via a network; a streaming code module database having the plurality of modules stored therein, each of the plurality of modules including executable code; and a streaming control file database having predictive data stored therein, the predictive data comprising potential execution transitions between the plurality of modules and a weighted value associated with each of the potential execution transitions, each said weighted value indicating a likelihood relative to other transitions that the corresponding potential execution transition will occur when the application is executed; wherein the streaming server computer is configured to receive an indication from the client computer that the application is in a given state, compute an order in which the modules should be sent to the client computer with reference to weighted values associated with module transitions for the application when in the given state, and stream the modules to the client computer in the computed order. - View Dependent Claims (13, 14, 15, 16, 17)
-
-
18. A machine-readable storage device containing executable instructions which, when executed by a processing system, cause the processing system to perform a method for streaming a plurality of modules of an application from a server to a client, the method comprising:
-
identifying potential execution transitions between the plurality of modules, each of the plurality of modules including executable code; associating a weighted value with each transition, each said weighted value indicating a likelihood relative to other transitions that said transition will occur when the application is executed; computing an order in which the plurality of modules is to be streamed to the client, based on a weighted value associated with each transition; initiating transmission of the plurality of modules to the client in said order, to cause the client to execute executable code in at least a first module of the plurality of modules while at least a second module of the plurality of modules is being transmitted to the client; and deciding, during the transmission of the plurality of modules, whether said order in which the plurality of modules is to be streamed to the client is to be modified in response to receiving data pertaining to a current execution state of the application from the client. - View Dependent Claims (19, 20)
-
Specification