Claims
- 1. A method for determining an order in which to stream modules of an application from a server to a client configured to execute the application concurrently with module streaming, the application utilizing the modules in an execution-time dependent order, the method comprising the steps of:
identifying potential execution transitions between modules; associating at least one weighted value with each transition indicating a likelihood relative to other transitions that the particular transitions between modules will occur; upon notice that the client is executing a particular module, determining a subsequent order of utilization of the modules by the application at the client with reference to the weighted values associated with identified transitions from the particular module; and indicating that modules should be streamed to the client in the determined order.
- 2. The method of claim 1, wherein:
a plurality of weighted values are associated with each transition, each weight being further associated with a respective category; and the weighted values used during the determining step are selected in accordance with a specified category.
- 3. The method of claim 2, wherein the respective categories comprise user age and time of usage.
- 4. The method of claim 1, further comprising the steps of:
identifying a sequence of module transitions having the same weighted transition values; and grouping the modules in the identified sequence of module transitions into a batch; wherein, when the determined order includes a particular module in the batch should be streamed, the step of indicating comprises indicating that all module in the batch should be streamed to the client.
- 5. The method of claim 1, wherein the determining step comprises determining the subsequent order of utilization of the modules with further reference to a projected client cache utilization and a cost to stream particular modules.
- 6. The method of claim 5, wherein the cost comprises a module size.
- 7. A method for determining an order in which to stream modules of an application from a server to a client executing the application concurrently with module streaming, the application utilizing the modules in an execution-time dependent order and comprising a plurality of functions, each function having at least one associated module, the method comprising the steps of:
receiving from a user a customized streaming order for modules associated with a specific function; receiving notice that the user is executing a particular function; if the particular function has an associated customized streaming order for the user, indicating that modules associated with the particular function should be streamed to the client in the selected streaming order; otherwise, determining an alternative order of utilization of modules in the particular function; and indicating that modules should be streamed to the client in the determined order.
- 8. The method of claim 7, wherein the step of determining comprises predicting an order of usage of the modules in the particular function.
- 9. The method of claim 8, wherein the step of predicting an order is performed with use of a set of predefined weighted transition values between modules in the function.
- 10. The method of claim 7, wherein the step of determining comprises selecting a set of modules to maximize cache utilization at the client.
- 11. The method of claim 7, further comprising the steps of:
receiving from a user a customized function streaming sequence; and indicating that modules should be streamed to the client in accordance with the customized function streaming sequence.
- 12. A system for streaming modules of an application from a server to a client executing the application concurrently with module streaming, the application utilizing the modules in an execution-time dependent order, the system comprising:
a streaming sever connectable to a client via a network; a streaming code module database having the application module stored therein; a streaming control file database having a predictive data stored therein, the predictive data comprising potential execution transitions between modules and at least one weighted value with each transition indicating a likelihood relative to other transitions that the particular transitions between modules will occur; the streaming server being configured to:
receive an indication from the client that the application is in a given state; determine an order of module utilization by the application at the client with reference to weighted values associated with model transitions for the application when in the given state; and stream modules the client in the determined order.
- 13. The system of claim 12, wherein:
a plurality of weighted values are associated with each transition, each weight being further associated with a respective category; the streaming server being further configured to select weighted values for use during order determination in accordance with a specified category for the client.
- 14. The system of claim 13, wherein the respective categories comprise user age and time of usage.
- 15. The system of claim 12, wherein the streaming server is further configured to:
identify a sequence of module transitions having the same weighted transition values; group the modules in the identified sequence of module transitions into a batch; and stream the grouped modules to the client in a batch.
- 16. The system of claim 12, wherein the streaming server is further configured to:
project client cache utilization in response to client receipt of particular sets of modules; and determine an order of module utilization by the application at the client with further reference to the client cache utilization projections.
- 17. The system of claim 12, wherein the streaming server is further configured to:
receive from a user a customized streaming order specifying at least one of a sequence of functions and a sequence of modules for a specific function and; and determine an order of module utilization by the application at the client with further reference to the customized streaming order.
- 18. A computer program residing on a computer readable medium for configuring a computer to determine an order in which to stream modules of an application from the computer to a client executing the application concurrently with module streaming, the application utilizing the modules in an execution-time dependent order, the computer program comprising computer code to configure the computer to:
upon notice that the client is executing a particular module, determine a subsequent order of utilization of the modules by the application at the client with reference to predefined weighted transition values for potential execution transitions between modules by the application, the transition values indicating a likelihood relative to other transitions that the particular transition between modules will occur; and indicating that modules should be streamed to the client in the determined order.
- 19. The computer program product of claim 18, wherein a plurality of weighted values are associated with each transition, each weight being further associated with a respective category, the computer program further comprising code to configure the computer to selected weighted values to use in accordance with a specified category.
- 20. The computer program product of claim 18, the computer program further comprising code to:
project client cache utilization in response to receipt by the client of a specific set of modules; and determine a subsequent order of utilization of the modules by the application at the client with further reference to the project client cache utilization.
CROSS-REFERENCE(S) TO RELATED APPLICATIONS
[0001] This application claims the benefit under 35 U.S.C. §119 of U.S. Provisional Application Serial No. 60/177,736 entitled “Method and Apparatus for Determining Order of Streaming Modules”, filed on Jan. 21, 2000, the entire contents of which is hereby expressly incorporated by reference. The application is also a continuation-in part of U.S. patent application Ser. No. 09/120,575 entitled “Streaming Modules” and filed on Jul. 22, 1998.
Provisional Applications (1)
|
Number |
Date |
Country |
|
60177736 |
Jan 2000 |
US |
Continuations (1)
|
Number |
Date |
Country |
Parent |
09745646 |
Dec 2000 |
US |
Child |
10354947 |
Jan 2003 |
US |
Continuation in Parts (1)
|
Number |
Date |
Country |
Parent |
09120575 |
Jul 1998 |
US |
Child |
10354947 |
Jan 2003 |
US |