Claims
- 1. A system for streaming a software application to a client comprising:
an application library having application files and a prediction model stored therein; a streaming manager configured to send the application files to a client as a plurality of streamlets, each streamlet corresponding to a particular data block in a respective application file; a streaming prediction engine configured to identify at least one streamlet which is predicted to be most appropriate to send to a given client at a particular time in accordance with the prediction model.
- 2. The system of claim 1, wherein each streamlet corresponds to a file data block having a size equal to a code page size used during file reads by an operating system expected to be present on a client system.
- 3. The system of claim 2, wherein the data block size is four kilobytes.
- 4. The system of claim 1, wherein the application files are stored in the application library as preprocessed streamlets, each streamlet corresponding to a data block in a particular application file at a particular offset and having a predefined length.
- 5. The system of claim 4, wherein the predefined length comprises a code page size used during file reads by an operating system expected to be present on a client system.
- 6. The system of claim 4, wherein each preprocessed streamlet is compressed.
- 7. The system of claim 1, wherein the streaming manager is configured to send the client upon a first initiation of the streaming application, a file structure specification of the application files.
- 8. The system of claim 7, wherein the streaming manager is further configured to send the client upon the first initiation of the streaming application a set of streamlets comprising at least those streamlets containing the portions of the application required to enable execution of the application to be initiated.
- 9. The system of claim 8, wherein the application library has a startup block comprising the file structure specification and set of streamlets stored therein.
- 10. The system of claim 1, wherein the streaming manager is further configured to install streaming environment support software on the client prior to initiating an application streaming processes.
- 11. The system of claim 1, further comprising a differential prediction model associated with the client, the prediction engine configured to make streamlet predictions for the client in accordance with the default prediction model and the respective differential prediction model.
- 12. The system of claim 11, wherein the streaming manager is configured to, upon receipt of application usage tracking information from the client, update at least one of the differential prediction model for the client and the prediction model.
- 13. The system of claim 1, further comprising an application status repository comprising a data map for each active client, the data map generally indicating the streamlets which are present at the respective client.
- 14. The system of claim 13, wherein the streaming manager is configured to update the data map for the client upon a successful transmission of a streamlet to the client.
- 15. The system of claim 14, wherein the streaming manager is configured to, upon receipt of a request for a particular streamlet from the client:
determine if the data map indicates that the client already has the requested streamlet; if the data map indicates that the requested streamlet is on the client system, request an updated data map from the client and replace the data map with a returned updated map; retrieve the requested streamlet from the application library; and update the data map upon a successful transmission of the requested streamlet to the client.
- 16. The system of claim 15, wherein the streaming manager is further configured to, upon receipt of the streamlet request from the client, reposition the prediction engine in the default prediction model in accordance with the requested streamlet.
- 17. The system of claim 13, wherein the streaming manager is configured to, upon receipt of an unsolicited data map from the client, replace the data map in the application status repository for the client with the data map received from the client.
- 18. The system of claim 17, wherein the streaming manager is further configured to, upon receipt of the unsolicited data map, compare the data map in the application status repository for the client with the data map received from the client and log mismatches.
- 19. A method for streaming a software application comprising the steps of:
providing at a server an application library having application files stored therein; forwarding the application files to a client as a particular sequence of streamlets, each streamlet corresponding to a particular data block in a respective application file; determining the particular sequence of streamlets in accordance with a prediction model indicating which streamlets are most appropriate to send to a given client at a particular time.
- 20. The method of claim 19, wherein each streamlet corresponds to a file data block having a size equal to a code page size used during file reads by an operating system expected to be present on a client system.
- 21. The method of claim 20, wherein the data block size is four kilobytes.
- 22. The method of claim 19, further comprising the step of dividing the application files into streamlets prior to initiation of a streaming session.
- 23. The method of claim 19, further comprising the step of storing the application files in the application library as preprocessed streamlets, each streamlet corresponding to a data block in a particular application file at a particular offset and having a predefined length.
- 24. The method of claim 23, wherein the predefined length comprises a code page size used during file reads by an operating system expected to be present on a client system.
- 25. The method of claim 23, further comprising the step of compressing each streamlet prior to storage in the application library.
- 26. The method of claim 19, further comprising the step of sending the client upon a first initiation of the streaming application a file structure specification of the application files.
- 27. The method of claim 26, further comprising the step of sending to the client upon the first initiation of the streaming application a set of streamlets comprising at least those streamlets containing the portions of the application required to enable execution of the application to be initiated.
- 28. The method of claim 27, further comprising the step of storing in the application library a startup block comprising the file structure specification and set of streamlets stored therein.
- 29. The method of claim 19, further comprising the step of initiating a process to install streaming environment support software on the client prior to initiating an application streaming processes.
- 30. The method of claim 19, wherein the step of determining comprising determining the particular sequence of streamlets in accordance with the prediction model and a differential prediction model associated with the client.
- 31. The method of claim 30, further comprising the step of, upon receipt of application usage tracking information from the client, updating at least one of the differential prediction model for the client and the prediction model.
- 32. The method of claim 19, further comprising the steps of, upon receipt of a request for a particular streamlet from the client:
retrieving the requested streamlet from the application library; and transmitting the streamlet to the client.
- 33. The method of claim 19, further comprising the steps of:
providing a data map for each active client generally indicating the streamlets which are present at the respective client; and updating the data map associated with a particular client upon a successful transmission of a streamlet to the particular client.
- 34. The method of claim 33, further comprising the steps of, upon receipt of a request for a particular streamlet from the client:
determining if the data map associated with the client indicates that the already has the requested streamlet; and in response to a positive determination, requesting an updated data map from the client and replacing the data map with a returned updated map.
- 35. The method of claim 34, further comprising the step of adjusting a position in the prediction model for the client in accordance with the requested streamlet.
- 36. The method of claim 33, further comprising the step of, upon receipt of an unsolicited data map from the client, replacing the data map in the application status repository for the client with the data map received from the client.
- 37. The method of claim 36, further comprising the steps of:
comparing the data map in the application status repository for the client with the unsolicited data map received from the client; and logging mismatches identified during the comparing step.
- 38. A computer program product stored on a computer readable medium, the product comprising a computer program for configuring a server with an application library having application files stored therein to stream the application to a client, the computer program comprising code to configure the server to:
forward the application files to a client as a particular sequence of streamlets, each streamlet corresponding to a particular data block in a respective application file; and determine the particular sequence of streamlets in accordance with a prediction model indicating which streamlets are most appropriate to send to a given client at a particular time.
- 39. The computer program product of claim 38, the computer program further comprising code to further configure the server to divide the application files into streamlets prior to initiation of a streaming session.
- 40. The computer program product of claim 39, the computer program further comprising code to configure the server to divide the application files into streamlets corresponding to a data block in a particular application file at a particular offset and having a predefined length.
- 41. The computer program product of claim 38, the computer program further comprising code to configure the server to send the client upon a first initiation of the streaming application a file structure specification of the application files.
- 42. The computer program product of claim 41, the computer program further comprising code to send to the client upon the first initiation of the streaming application a set of streamlets comprising at least those streamlets containing the portions of the application required to enable execution of the application to be initiated.
- 43. The computer program product of claim 42, the computer program further comprising code to store in the application library a startup block comprising the file structure specification and set of streamlets stored therein.
- 44. The computer program product of claim 38, the computer program further comprising code to install streaming environment support software on the client prior to initiating an application streaming processes.
- 45. The computer program product of claim 38, the computer program further comprising code to determine the particular sequence of streamlets in accordance with the prediction model and a differential prediction model associated with the client.
- 46. The computer program product of claim 45, the computer program further comprising code to, upon receipt at the server of application usage tracking information from the client, update at least one of the differential prediction model for the client and the prediction model.
- 47. The computer program product of claim 38, the computer program further comprising code to, upon receipt at the server of a request for a particular streamlet from the client:
retrieve the requested streamlet from the application library; and transmit the streamlet to the client.
- 48. The computer program product of claim 38, the computer program further comprising code to:
provide a data map for each active client generally indicating the streamlets which are present at the respective client; and update the data map associated with a particular client upon a successful transmission of a streamlet to the particular client.
- 49. The computer program product of claim 48, the computer program further comprising code to, upon receipt at the server of a request for a particular streamlet from the client:
determine if the data map associated with the client indicates that the already has the requested streamlet; and in response to a positive determination, request an updated data map from the client and replacing the data map with a returned updated map.
- 50. The computer program product of claim 49, the computer program further comprising code to adjust a position in the prediction model for the client in accordance with the requested streamlet.
- 51. The computer program product of claim 48, the computer program further comprising code to, upon receipt at the server of an unsolicited data map from the client, replace the data map in the application status repository for the client with the data map received from the client.
- 52. The computer program product of claim 51, the computer program further comprising code to:
compare the data map in the application status repository for the client with the unsolicited data map received from the client; and log mismatches identified during the comparing step.
CROSS-REFERENCE TO RELATED APPLICATIONS:
[0001] The present application claims the benefit under 35 U.S.C. § 119 of U.S. Provisional Application Ser. No. 60/235,535 entitled “Native Streaming Architecture”, filed on Sep. 26, 2000, the entire contents of which is hereby expressly incorporated by reference. The present 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.
[0002] This application is also related to the following pending U.S. Patent applications, the entire contents of which is hereby expressly incorporated by reference: (a) U.S. patent application Ser. No. 09/237,792 entitled “Link Presentation and Data Transfer” and filed on Jan. 26, 2000; (b) U.S. Provisional Patent Application Ser. No. 60/177,736 entitled “Method and Apparatus for Determining Order of Streaming Modules” and filed on Jan. 21, 2000; (c) U.S. Provisional Patent Application Ser. No. 60, 177,444 entitled “Method and Apparatus for Improving the User-Perceived System Response Time in Web-based Systems” and filed on Jan. 21, 2000; and (d) U.S. Provisional Patent Application Ser. No. 60/207,632 entitled “Apparatus and Method for Improving the Delivery of Software Applications and Associated data in Web-based Systems” and filed in Mar. 25, 2000.
Provisional Applications (1)
|
Number |
Date |
Country |
|
60235535 |
Sep 2000 |
US |
Continuation in Parts (1)
|
Number |
Date |
Country |
Parent |
09120575 |
Jul 1998 |
US |
Child |
09751105 |
Dec 2000 |
US |