Method and system for executing network streamed application
First Claim
1. A method for executing a streamed application on a client system having an operating system and connected to an application server via a network, the application being divided into a plurality of streamlets, each streamlet containing a portion of a file associated with the application, the method comprising the steps of:
- receiving from the server a file structure specification for at least a primary application file of the application when the application is installed on a computer;
configuring a virtual file system on the client which interacts with the operating system as a local data storage device to appear to the operating system that the files defined in the file structure specification are present in the virtual file system;
in response to the operating system issuing a data retrieval request to retrieve a portion of a specific file from the virtual file system;
(a) determining if the streamlets corresponding to the specified portion of the specific file are present in the virtual file system, (b) sending a fetch request to the server indicating a data missing condition if the corresponding streamlets are not present and adding streamlets returned from the server to satisfy the fetch request to the virtual file system, and (c) returning the requested portion of the specific file to the operating system.
5 Assignments
0 Petitions
Accused Products
Abstract
A method and system for executing a streamed application on a client system utilizes a virtual file system installed in the client which is configured to appear to the operating system as a local storage device containing all of the application files required by the application. Prior to streaming, the application files are broken up into streamlets corresponding generally to various portions of the application files and these streamlets are delivered to the client by the server, preferably using a predictive algorithm to determine an optimal transmission order. After an initial set of streamlets is received, the application is executed from the virtual file system. File loads issued by the operating system to the virtual file system are translated to determine which streamlets correspond to the load request and the appropriate data is returned. If a needed streamlet is not present, a streamlet request is issued to the server and the virtual file system maintains a busy status until the necessary streamlets have been provided.
323 Citations
46 Claims
-
1. A method for executing a streamed application on a client system having an operating system and connected to an application server via a network, the application being divided into a plurality of streamlets, each streamlet containing a portion of a file associated with the application, the method comprising the steps of:
-
receiving from the server a file structure specification for at least a primary application file of the application when the application is installed on a computer;
configuring a virtual file system on the client which interacts with the operating system as a local data storage device to appear to the operating system that the files defined in the file structure specification are present in the virtual file system;
in response to the operating system issuing a data retrieval request to retrieve a portion of a specific file from the virtual file system;
(a) determining if the streamlets corresponding to the specified portion of the specific file are present in the virtual file system, (b) sending a fetch request to the server indicating a data missing condition if the corresponding streamlets are not present and adding streamlets returned from the server to satisfy the fetch request to the virtual file system, and (c) returning the requested portion of the specific file to the operating system. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 22)
receiving unrequested streamlets from the server; and
adding the unrequested streamlets to the virtual file system.
-
-
3. The method of claim 1, further comprising the steps of:
-
receiving from the server a startup streamlet set containing at least a minimal set of streamlets sufficient for execution of the application to be initiated; and
adding the streamlets in the startup streamlet set to the virtual file system.
-
-
4. The method of claim 3, wherein the startup streamlet set comprises application streamlets sufficient to begin application execution and have the application run to a point where user interaction is required.
-
5. The method of claim 3, wherein the file structure specification and the startup streamlet set are received by the client as part of a startup block.
-
6. The method of claim 1, further comprising the step of informing the operating system that the virtual file system is processing the data retrieval request during a period between the sending of the fetch request and when the fetch request is satisfied.
-
7. The method of claim 1, wherein the application file set comprises all application files which are required for the application to operate.
-
8. The method of claim 1, further comprising the steps of:
-
forwarding to the server a request to start the streaming application;
verifying that the virtual file system is present on the client system; and
if the virtual file system is not present, installing the virtual file system on the client.
-
-
9. The method of claim 8, wherein the step of installing the virtual file system comprises installing a streaming file system device driver which acts as an interface between the operating system and the virtual file system.
-
10. The method of claim 1, further comprising the steps of:
-
maintaining a record of processes authorized to access the virtual file system; and
blocking data retrieval requests issued by the operating system to the virtual file system which are not generated on behalf of an authorized process.
-
-
11. The method of claim 1, further comprising the step of decompressing streamlets retrieved from the server.
-
12. The method of claim 11, wherein streamlets are decompressed prior to adding them to the virtual file system.
-
13. The method of claim 1, further comprising the step of:
purging streamlets from the virtual file system in response to a storage low condition.
-
14. The method of claim 13, further comprising the step of informing the server when streamlets are purged from the virtual file system.
-
15. The method of claim 1, further comprising the step of purging at least selected streamlets from the virtual file system when use of the streaming application is terminated.
-
16. The method of claim 1, further comprising the steps of:
-
monitoring a sequence of data retrieval requests issued by the operating system to generate application usage tracking information; and
periodically forwarding the tracking information to the server.
-
-
17. The method of claim 1, further comprising the step of signaling the operating system to execute the primary application file from the virtual file system.
-
22. The method of claim 1, further comprising the steps of:
-
monitoring a sequence of data retrieval requests issued by the operating system to generate application usage tracking information; and
periodically forwarding the tracking information to the server.
-
-
18. A method for executing a streamed application on a client system having an operating system and connected to an application server via a network, the application being divided into a plurality of streamlets, each of which corresponds to a code-page sized portion of an application file, the method comprising the steps of:
-
sending to the server a request to initiate the application;
receiving from the server a start block comprising a file structure specification for at least a primary file of the application when the application is installed on a computer and a startup streamlet set containing at least a minimal set of streamlets sufficient to begin application execution;
installing a virtual file system on the client which interacts with the operating system as a local data storage device via device driver;
configuring the virtual file system to the operating system that the files defined in the file structure specification are present in the virtual file system;
signaling the operating system to execute the primary application file from the virtual file system;
in response to the receipt of a streamlet from the server, adding the received streamlet to the virtual file system;
in response to the operating system issuing a data retrieval request to retrieve a sequence of code pages beginning at a specified portion of a specific file from the virtual file system;
(a) determining if the streamlets corresponding to the specified code pages are present in the virtual file system, (b) if the corresponding streamlets are present, returning the requested code pages to the operating system, (c) otherwise, sending a fetch request to the server indicating a data missing condition, presenting a busy condition to the operating system until the fetch request is satisfied and the corresponding streamlets have been added to the virtual file system, and returning the requested code pages to the operating system. - View Dependent Claims (19, 20, 21)
determining whether the received streamlet completes an outstanding fetch request and, if so, indicating to the virtual file system that fetch request has been satisfied. -
20. The method of claim 19, further comprising the steps of:
-
maintaining a record of processes authorized to access the virtual file system; and
blocking data retrieval requests issued by the operating system to the virtual file system which are not generated on behalf of an authorized process.
-
-
21. The method of claim 19, further comprising the step of decompressing streamlets retrieved from the server.
-
-
23. A system for executing a streamed application on a client computer system having an operating system and connected to an application server via a network, the application being divided into a plurality of streamlets, each streamlet containing a portion of a file associated with the application, the system comprising:
-
a streaming support module comprising a virtual file system, the virtual file system including a streamlet library configured to store a plurality of streamlets and having data associating streamlets in the streamlet library with specific portions of files associated with the application;
the streaming support module being configured to permit communication between the operating system and the virtual file system as if the virtual file system were a local data storage device, issue fetch requests for streamlets to the server, and add streamlets received from the server to the streamlet library;
The streaming support module being further configured to respond to data retrieval requests issued by the operating system to retrieve a portion of a specific file from the virtual file system by;
(a) determining if the streamlets corresponding to the specified portion of the specific file are present in the streamlet library, (b) if the streamlets are present, returning the data to the operating system, (c) otherwise, initiating a fetch request to the server indicating a data missing condition and returning the requested code pages to the operating system after the fetch request has been satisfied. - View Dependent Claims (24, 25, 26, 27, 28, 29, 30, 31, 32)
a virtual file system manager module configured to respond to data retrieval requests issued by the operating system; - and
a streaming file system driver configured as an interface between the operating system and the virtual file system manager.
-
-
25. The system of claim 24, wherein the streaming support module further comprises an application manager configured to issue the fetch requests to the server and add streamlets received from the server to the streamlet library.
-
26. The system of claim 23, wherein the streaming support module is further configured to:
-
request from the server a startup block comprising a file structure specification for at least a primary file of the application when the application is installed on a computer and a startup streamlet set containing at least a minimal set of streamlets sufficient to begin application execution;
add the save the file structure specification in the virtual file system and add the streamlets in the startup streamlet set in the streamlet library; and
signal the operating system to execute the primary application file from the virtual file system.
-
-
27. The system of claim 26, wherein the startup streamlet set comprises application streamlets sufficient to begin application execution and have the application run to a point where user interaction is required.
-
28. The system of claim 23, wherein the streaming support module is further configured to present a busy condition to the operating system during a period between the sending of the fetch request to the server when data requested by the operating system is not present in the virtual file system and when the fetch request is satisfied.
-
29. The system of claim 23, wherein each streamlet corresponds to a code-page sized portion of a respective application file.
-
30. The system of claim 23, further comprising an application launcher module configured to, in response to an initiation of a streaming application, verify that various components of the streaming support module are present on the client system, retrieve missing components from the server and install the retrieved components on the client.
-
31. The system of claim 23, wherein the streaming support module is further configured to:
-
maintain a record of processes authorized to access the virtual file system; and
block data retrieval requests issued by the operating system to the virtual file system which are not generated on behalf of an authorized process.
-
-
32. The system of claim 23, wherein the streaming support module is further configured to:
-
monitor a sequence of data retrieval requests issued by the operating system to generate application usage tracking information; and
periodically initiate sending a message to the server including the tracking information.
-
-
33. A computer program product stored on a computer readable medium, the product comprising a computer program for executing a streamed application on a client system having an operating system and connected to an application server via a network, the application being divided into a plurality of streamlets, each streamlet containing a portion of a file associated with the application, the computer program comprising code to configure the client to:
-
receive from the server a file structure specification for at least a primary application file of the application when the application is installed on a computer;
configure a virtual file system on the client which interacts with the operating system as a local data storage device to appear to the operating system that the files defined in the file structure specification are present in the virtual file system;
in response to the operating system issuing a data retrieval request to retrieve a portion of a specific file from the virtual file system;
(a) determine if the streamlets corresponding to the specified portion of the specific file are present in the virtual file system, (b) send a fetch request to the server indicating a data missing condition if the corresponding streamlets are not present and adding streamlets returned from the server to satisfy the fetch request to the virtual file system, and (c) return the requested portion of the specific file to the operating system. - View Dependent Claims (34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46)
receive unrequested streamlets from the server; and
add the unrequested streamlets to the virtual file system.
-
-
35. The computer program product of claim 33, the computer program further comprising code to configure the client to:
-
receive from the server a startup streamlet set containing at least a minimal set of streamlets sufficient for execution of the application to be initiated; and
add the streamlets in the startup streamlet set to the virtual file system.
-
-
36. The computer program product of claim 33, the computer program further comprising code to configure the client to inform the operating system that the virtual file system is processing the data retrieval request during a period between the sending of the fetch request and when the fetch request is satisfied.
-
37. The computer program product of claim 33, the computer program further comprising code to configure the client to:
-
forward to the server a request to start the streaming application;
verify that the virtual file system is present on the client system; and
if the virtual file system is not present, install the virtual file system on the client.
-
-
38. The computer program product of claim 37, wherein the code to install the virtual file system configures the client to install a streaming file system device driver which acts as an interface between the operating system and the virtual file system.
-
39. The computer program product of claim 33, the computer program further comprising code to configure the client to:
-
maintain a record of processes authorized to access the virtual file system; and
block data retrieval requests issued by the operating system to the virtual file system which are not generated on behalf of an authorized process.
-
-
40. The computer program product of claim 33, the computer program further comprising code to configure the client to decompress streamlets retrieved from the server.
-
41. The computer program product of claim 40, the computer program further comprising code to decompress streamlets prior to adding them to the virtual file system.
-
42. The computer program product of claim 33, the computer program further comprising code to configure the client to:
purge streamlets from the virtual file system in response to a storage low condition.
-
43. The computer program product of claim 42, the computer program further comprising code to configure the client to inform the server when streamlets are purged from the virtual file system.
-
44. The computer program product of claim 33, the computer program further comprising code to configure the client to purge at least selected streamlets from the virtual file system when use of the streaming application is terminated.
-
45. The computer program product of claim 33, the computer program further comprising code to configure the client to:
-
monitor a sequence of data retrieval requests issued by the operating system to generate application usage tracking information; and
periodically forwarding the tracking information to the server.
-
-
46. The computer program product of claim 33, the computer program further comprising code to configure the client to signal the operating system to execute the primary application file from the virtual file system.
Specification