Title: Client installation and execution system for streamed applications
Abstract: A client installation and execution system for streamed applications requires the user or administrator to obtain a subscription to the streamed application program from a subscription server before installation of the streamed application program begins. The client then obtains an encrypted access token for the streamed application program from a license server upon acknowledgment of a valid license, receives an installation information block from the server, and installs the proper icons, aliases, and description onto the client that give the user the proper look and feel of the original application program. A file spoofer is installed on the client that redirects file accesses from the client's local file system to the streaming server's file system. A registry spoofer is provided on the client for intercepting all registry calls on the client and redirecting calls that manipulate certain registries to an alternate path specified in a registry database on the client. An application page cache is also provided on the client that is managed by a cache manager that requests application pages of the streamed application program from the server. During execution of the streamed application program, page requests are generated and the cache manager requests any application pages from the server that are not resident in the application page cache and places the requested application pages in the application page cache.
Patent Number: 6,918,113 Issued on 07/12/2005 to Patel,   et al.
| Inventors:
|
Patel; Amit (Santa Clara, CA);
Pujare; Sanjay (San Jose, CA);
Ryan; Nicholas (Santa Clara, CA);
Lin; David (Mountain View, CA)
|
| Assignee:
|
Endeavors Technology, Inc. (Irvine, CA)
|
| Appl. No.:
|
827030 |
| Filed:
|
April 5, 2001 |
| Current U.S. Class: |
717/178; 709/219 |
| Intern'l Class: |
G06F 009/44.5; G06F015/16 |
| Field of Search: |
717/174-178,171,167,168-173
709/231,229,219
|
References Cited [Referenced By]
U.S. Patent Documents
| 5210850 | May., 1993 | Kelly et al.
| |
| 5666293 | Sep., 1997 | Metz et al.
| |
| 5764918 | Jun., 1998 | Poulter.
| |
| 5805809 | Sep., 1998 | Singh et al.
| |
| 6047323 | Apr., 2000 | Krause.
| |
| 6065043 | May., 2000 | Domenikos et al.
| |
| 6154878 | Nov., 2000 | Saboff.
| |
| 6275496 | Aug., 2001 | Burns et al.
| |
| 6282712 | Aug., 2001 | Davis et al.
| |
| 6301605 | Oct., 2001 | Napolitano et al.
| |
| 6311221 | Oct., 2001 | Raz et al.
| |
| 6347398 | Feb., 2002 | Parthasarathy et al.
| |
| 6370686 | Apr., 2002 | Delo et al.
| |
| 6374402 | Apr., 2002 | Schmeidler et al.
| |
| 6418554 | Jul., 2002 | Delo et al.
| |
| 6418555 | Jul., 2002 | Mohammed.
| |
| 6453334 | Sep., 2002 | Vinson et al.
| |
| 6457076 | Sep., 2002 | Cheng et al.
| |
| 6510462 | Jan., 2003 | Blumenau.
| |
| 6574618 | Jun., 2003 | Eylon et al.
| |
| 6584507 | Jun., 2003 | Bradley et al.
| |
| 6587857 | Jul., 2003 | Carothers et al.
| |
| 6601103 | Jul., 2003 | Goldschmidt Iki et al.
| |
| 6601110 | Jul., 2003 | Marsland.
| |
| 6636961 | Oct., 2003 | Braun et al.
| |
| 6687745 | Feb., 2004 | Franco et al.
| |
| 6694510 | Feb., 2004 | Willems.
| |
| 6711619 | Mar., 2004 | Chandramohan et al.
| |
| 6735631 | May., 2004 | Oehrke et al.
| |
| 6757894 | Jun., 2004 | Eylon et al.
| |
| 6763370 | Jul., 2004 | Schmeidler et al.
| |
| 6772209 | Aug., 2004 | Chernock et al.
| |
| 2001/0034736 | Oct., 2001 | Eylon et al.
| |
| 2001/0037399 | Nov., 2001 | Eylon et al.
| |
| 2001/0037400 | Nov., 2001 | Raz et al.
| |
| 2001/0044850 | Nov., 2001 | Raz et al.
| |
| 2002/0042833 | Apr., 2002 | Hendler et al.
| |
| 2002/0078203 | Jun., 2002 | Greschler et al.
| |
| 2002/0083187 | Jun., 2002 | Sim et al.
| |
| 2002/0087717 | Jul., 2002 | Artzi et al.
| |
| 2002/0138640 | Sep., 2002 | Raz et al.
| |
Primary Examiner: Khatri; Anil
Assistant Examiner: Roche; Trent J
Attorney, Agent or Firm: Knobbe, Martens, Olson & Bear, LLP
Parent Case Text
CROSS REFERENCE TO RELATED APPLICATIONS
This application Claims benefit of U.S. Provisional Patent Application Ser.
No. 60/246,384, filed on Nov. 6, 2000 (OTI.2000.0).
Claims
1. A process for installing a streamed application program on a client system
and executing said streamed application program on said client while concurrently
streaming portions of said streamed application program from a server in a computer
environment, comprising the steps of:
receiving an installation information block for said streamed application program
from said server;
providing file redirection means on said client for redirecting file accesses
from said client's local file system to the streaming server's file system;
providing a file mapping database that persistently stores on said client;
a bi-directional mapping of the client file system to the streaming server file
system after termination of said streamed application;
wherein said file mapping database is updated with said streamed application
program's file mapping data obtained from said installation information;
wherein said file redirection means performs said redirection using said file
mapping database;
providing registry interception means on said client for intercepting all registry
calls on said client and redirecting calls that manipulate certain registries to
an alternate path;
providing a registry spoof database that persistently stores on said client;
mappings of original registry paths to new alternate registry paths after termination
of said streamed application;
wherein said registry spoof database is updated with said streamed application
program's registry mapping data obtained from said installation information;
wherein said registry interception means uses said registry spoof database to
redirect registry calls;
providing an application page cache on said client;
providing application page prefetching means on said client for requesting application
pages of said streamed application program from said server;
wherein said application page prefetching means initially populates said application
page cache with an initial set of application pages when said
streamed application program is installed on said client, said initial set of
application pages are specified in said installation information; and
installing the proper icons, aliases, and description onto said client that give
the user the proper look and feel of the original application program.
2. The process of claim 1, wherein during execution of said streamed application
program said streamed application program generates page requests, said application
page prefetching means requests application pages from said server that are not
resident in said application page cache and places said requested application pages
in said application page cache.
3. The process of claim 1, wherein said application page prefetching means prefetches
additional application pages that said streamed application program may need in
the future from said server and places said additional application pages in said
application page cache, and wherein said additional application pages are selected
based on application page profiling data obtained from said installation information.
4. The process of claim 1, wherein the user selects the proper icon or alias
to start said streamed application program.
5. The process of claim 1, wherein the user or administrator obtains a subscription
to said streamed application program from a subscription server before installation
of said streamed application program begins.
6. The process of claim 1, wherein said client obtains a license for said streamed
application program from a license server before installation of said streamed
application program begins.
7. The process of claim 6, wherein said license server gives said client an encrypted
access token upon acknowledgment of a valid license.
8. The process of claim 7, wherein said client passes said encrypted access
30
token to said server for validation before requesting application pages from said server.
9. The process of claim 1, wherein during the uninstallation of said streamed
application program from said client, said file redirection means removes said
streamed application program's file mapping data from said file mapping database.
10. The process of claim 1, wherein during the uninstallation of said streamed
application program from said client, said registry interception means removes
all of said streamed application program's registry mapping data from said registry
spoof database.
11. The process of claim 1, wherein during the uninstallation of said streamed
application program from said client, said application page prefetching means removes
all of said streamed application program's application pages from said application
page cache.
12. The process of claim 1, wherein during the uninstallation of said streamed
application program from said client, said proper icons, aliases, and description
are removed from said client.
13. An apparatus for installing a streamed application program on a client system
and executing said streamed application program on said client while concurrently
streaming portions of said streamed application program from a server in a computer
environment, comprising:
a module for receiving an installation information block for said streamed application
program from said server;
file redirection means on said client for redirecting file accesses from said
client's local file system to the streaming server's file system;
a file mapping database that persistently stores on said client;
a bi-directional mapping of the client file system to the streaming server file
system after termination of said streamed application;
wherein said file mapping database is updated with said streamed application
program's file mapping data obtained from said installation information;
wherein said file redirection means performs said redirection using said file
mapping database;
registry interception means on said client for intercepting all registry calls
on said client and redirecting calls that manipulate certain registries to an alternate
path;
a registry spoof database that persistently stores on said client;
mappings of original registry paths to new alternate registry paths after termination
of said streamed application;
wherein said registry spoof database is updated with said streamed application
program's registry mapping data obtained from said installation information;
wherein said registry interception means uses said registry spoof database to
redirect registry calls;
an application page cache on said client;
application page prefetching means on said client for requesting application
pages of said streamed application program from said server;
wherein said application page prefetching means initially populates said application
page cache with an initial set of application pages when said streamed application
program is installed on said client, said initial set of application pages are
specified in said installation information; and
a module for installing the proper icons, aliases, and description onto said
client that give the user the proper look and feel of the original application
program.
14. The apparatus of claim 13, wherein during execution of said streamed application
program said streamed application program generates page requests, said application
page prefetching means requests application pages from said server that are not
resident in said application page cache and places said requested application pages
in said application page cache.
15. The apparatus of claim 13, wherein said application page prefetching means
prefetches additional application pages that said streamed application program
may need in the future from said server and places said additional application
pages in said application page cache, and wherein said additional application pages
are selected based on application page profiling data obtained from said installation information.
16. The apparatus of claim 13, wherein the user selects the proper icon or alias
to start said streamed application program.
17. The apparatus of claim 13, wherein the user or administrator obtains a subscription
to said streamed application program from a subscription server before installation
of said streamed application program begins.
18. The apparatus of claim 13, wherein said client obtains a license for said
streamed application program from a license server before installation of said
streamed application program begins.
19. The apparatus of claim 18, wherein said license server gives said client
an encrypted access token upon acknowledgment of a valid license.
20. The apparatus of claim 19, wherein said client passes said encrypted access
token to said server for validation before requesting application pages from said server.
21. The apparatus of claim 13, wherein during the uninstallation of said streamed
application program from said client, said file redirection means removes said
streamed application program's file mapping data from said file mapping database.
22. The apparatus of claim 13, wherein during the uninstallation of said streamed
application program from said client, said registry interception means removes
all of said streamed application program's registry mapping data from said registry
spoof database.
23. The apparatus of claim 13, wherein during the uninstallation of said streamed
application program from said client, said application page prefetching means removes
all of said streamed application program's application pages from said application
page cache.
24. The apparatus of claim 13, wherein during the uninstallation of said streamed
application program from said client, said proper icons, aliases, and description
are removed from said client.
25. A program storage medium readable by a computer, tangibly embodying a program
of instructions executable by the computer to perform method steps for installing
a streamed application program on a client system and executing said streamed application
program on said client while concurrently streaming portions of said streamed application
program from a server in a computer environment, comprising the steps of:
receiving an installation information block for said streamed application program
from said server;
providing file redirection means on said client for redirecting file accesses
from said client's local file system to the streaming server's file system;
providing a file mapping database that persistently stores on said client;
a bi-directional mapping of the client file system to the streaming server file
system after termination of said streamed application;
wherein said file mapping database is updated with said streamed application
program's file mapping data obtained from said installation information;
wherein said file redirection means performs said redirection using said file
mapping database;
providing registry interception means on said client for intercepting all registry
calls on said client and redirecting calls that manipulate certain registries to
an alternate path;
providing a registry spoof database that persistently stores on said client;
mappings of original registry paths to new alternate registry paths after termination
of said streamed application;
wherein said registry spoof database is updated with said streamed application
program's registry mapping data obtained from said installation information; and
wherein said registry interception means uses said registry spoof database to redirect
registry calls;
providing an application page cache on said client;
providing application page prefetching means on said client for requesting application
pages of said streamed application program from said server;
wherein said application page prefetching means initially populates said application
page cache with an initial set of application pages when said streamed application
program is installed on said client, said initial set of application pages are
specified in said installation information; and
installing the proper icons, aliases, and description onto said client that give
the user the proper look and feel of the original application program.
26. The method of claim 25, wherein during execution of said streamed application
program said streamed application program generates page requests, said application
page prefetching means requests application pages from said server that are not
resident in said application page cache and places said requested application pages
in said application page cache.
27. The method of claim 25, wherein said application page prefetching means prefetches
additional application pages that said streamed application program may need in
the future from said server and places said additional application pages in said
application page cache, and wherein said additional application pages are selected
based on application page profiling data obtained from said installation information.
28. The method of claim 25, wherein the user selects the proper icon or alias
to start said streamed application program.
29. The method of claim 25, wherein the user or administrator obtains a subscription
to said streamed application program from a subscription server before installation
of said streamed application program begins.
30. The method of claim 25, wherein said client obtains a license for said streamed
application program from a license server before installation of said streamed
application program begins.
31. The method of claim 30, wherein said license server gives said client an
encrypted access token upon acknowledgment of a valid license.
32. The method of claim 31, wherein said client passes said encrypted access
token to said server for validation before requesting application pages from said server.
33. The method of claim 25, wherein during the uninstallation of said streamed
application program from said client, said file redirection means removes said
streamed application program's file mapping data from said file mapping database.
34. The method of claim 25, wherein during the uninstallation of said streamed
application program from said client, said registry interception means removes
all of said streamed application program's registry mapping data from said registry
spoof database.
35. The method of claim 25, wherein during the uninstallation of said streamed
application program from said client, said application page prefetching means removes
all of said streamed application program's application pages from said application
page cache.
36. The method of claim 25, wherein during the uninstallation of said streamed
application program from said client, said proper icons, aliases, and description
are removed from said client.
37. A process for installing a streamed application program on a client system
and executing said streamed application program on said client while concurrently
streaming portions of said streamed application program from a server in a computer
environment, comprising the steps of:
providing file redirection means on said client for redirecting file accesses
from said client's local file system to the streaming server's file system;
providing a file mapping database that persistently stores on said client a bi-directional
mapping of the client file system to the streaming server file system after termination
of said streamed application;
wherein said file redirection means performs said redirection using said file
mapping database;
providing registry interception means on said client for intercepting all registry
calls on said client and redirecting calls that manipulate certain registries to
an alternate path;
providing a registry spoof database that persistently stores on said client;
mappings of original registry paths to new alternate registry paths after termination
of said streamed application;
wherein said registry interception means uses said registry spoof database to
redirect registry calls;
providing an application page cache on said client;
providing application page prefetching means on said client for requesting application
pages of said streamed application program from said server; and
wherein during execution of said streamed application program said streamed application
program generates page requests, said application page prefetching means requests
application pages from said server that are not resident in said application page
cache and places said requested application pages in said application page cache.
38. The process of claim 37, receiving an installation information block for
said streamed application program from said server.
39. The process of claim 38, wherein said application page prefetching means
prefetches additional application pages that said streamed application program
may need in the future from said server and places said additional application
pages in said application page cache, and wherein said additional application pages
are selected based on application page profiling data obtained from said installation information.
40. The process of claim 38, wherein said registry spoof database is updated
with said streamed application program's registry mapping data obtained from said
installation information.
41. The process of claim 38, wherein said file mapping database is updated with
said streamed application program's file mapping data obtained from said installation information.
42. The process of claim 37, wherein said application page prefetching means
initially populates said application page cache with an initial set of application
pages when said streamed application program is installed on said client.
43. The process of claim 37, wherein the user or administrator obtains a subscription
to said streamed application program from a subscription server before executing
said streamed application program.
44. The process of claim 37, wherein said client obtains a license for said
15
streamed application program from a license server before executing said streamed
application program.
45. The process of claim 44, wherein said license server gives said client an
encrypted access token upon acknowledgment of a valid license.
46. The process of claim 45, wherein said client passes said encrypted access
token to said server for validation before requesting application pages from said server.
47. An apparatus for installing a streamed application program on a client system
and executing said streamed application program on said client while concurrently
streaming portions of said streamed application program from a server in a computer
environment, comprising:
file redirection means on said client for redirecting file accesses from said
client's local file system to the streaming server's file system;
a file mapping database that persistently stores on said client a bi-directional
mapping of the client file system to the streaming server file system after termination
of said streamed application;
wherein said file redirection means performs said redirection using said file
mapping database;
registry interception means on said client for intercepting all registry calls
on said client and redirecting calls that manipulate certain registries to an alternate
path;
a registry spoof database that persistently stores on said client;
mappings of original registry paths to new alternate registry paths;
wherein said registry interception means uses said registry spoof database to
redirect registry calls;
an application page cache on said client;
application page prefetching means on said client for requesting application
pages of said streamed application program from said server; and
wherein during execution of said streamed application program said streamed application
program generates page requests, said application page prefetching means requests
application pages from said server that are not resident in said application page
cache and places said requested application pages in said application page cache.
48. The apparatus of claim 47, receiving an installation information block for
said streamed application program from said server.
49. The apparatus of claim 48, wherein said application page prefetching means
prefetches additional application pages that said streamed application program
may need in the future from said server and places said additional application
pages in said application page cache, and wherein said additional application pages
are selected based on application page profiling data obtained from said installation information.
50. The apparatus of claim 48, wherein said registry spoof database is updated
with said streamed application program's registry mapping data obtained from said
installation information.
51. The apparatus of claim 48, wherein said file mapping database is updated
with said streamed application program's file mapping data obtained from said installation information.
52. The apparatus of claim 47, wherein said application page prefetching means
initially populates said application page cache with an initial set of application
pages when said streamed application program is installed on said client.
53. The apparatus of claim 47, wherein the user or administrator obtains a subscription
to said streamed application program from a subscription server before executing
said streamed application program.
54. The apparatus of claim 47, wherein said client obtains a license for said
streamed application program from a license server before executing said streamed
application program.
55. The apparatus of claim 54, wherein said license server gives said client
an encrypted access token upon acknowledgment of a valid license.
56. The apparatus of claim 55, wherein said client passes said encrypted access
token to said server for validation before requesting application pages from said server.
57. A program storage medium readable by a computer, tangibly embodying a program
of instructions executable by the computer to perform method steps for installing
a streamed application program on a client system and executing said streamed application
program on said client while concurrently streaming portions of said streamed application
program from a server in a computer environment, comprising the steps of:
providing file redirection means on said client for redirecting file accesses
from said client's local file system to the streaming server's file system;
providing a file mapping database that persistently stores on said client;
a bi-directional mapping of the client file system to the streaming server file
system after termination of said streamed application;
wherein said file redirection means performs said redirection using said file
mapping database;
providing registry interception means on said client for intercepting all registry
calls on said client and redirecting calls that manipulate certain registries to
an alternate path;
providing a registry spoof database that persistently stores on said client;
mappings of original registry paths to new alternate registry paths after termination
of said streamed application;
wherein said registry interception means uses said registry spoof database to
redirect registry calls;
providing an application page cache on said client;
providing application page prefetching means on said client for requesting application
pages of said streamed application program from said server; and
wherein during execution of said streamed application program said streamed application
program generates page requests, said application page prefetching means requests
application pages from said server that are not resident in said application page
cache and places said requested application pages in said application page cache.
58. The method of claim 57, receiving an installation information block for said
streamed application program from said server.
59. The method of claim 58, wherein said application page prefetching means prefetches
additional application pages that said streamed application program may need in
the future from said server and places said additional application pages in said
application page cache, and wherein said additional application pages are selected
based on application page profiling data obtained from said installation information.
60. The method of claim 58, wherein said registry spoof database is updated with
said streamed application program's registry mapping data obtained from said installation information.
61. The method of claim 58, wherein said file mapping database is updated with
said streamed application program's file mapping data obtained from said installation information.
62. The method of claim 57, wherein said application page prefetching means initially
populates said application page cache with an initial set of application pages
when said streamed application program is installed on said client.
63. The method of claim 57, wherein the user or administrator obtains a subscription
to said streamed application program from a subscription server before executing
said streamed application program.
64. The method of claim 57, wherein said client obtains a license for said streamed
application program from a license server before executing said streamed application program.
65. The method of claim 64, wherein said license server gives said client an
encrypted access token upon acknowledgment of a valid license.
66. The method of claim 65, wherein said client passes said encrypted access
token to said server for validation before requesting application pages from said server.
Description
BACKGROUND OF THE INVENTION
1. Technical Field
The invention relates to the streaming of computer program object code across
a network in a computer environment. More particularly, the invention relates to
streaming and execution of existing applications across a network of servers streaming
computer program object code and other related data to clients in a computer environment.
2. Description of the Prior Art
Retail sales models of computer application programs are fairly straight forward.
The consumer either purchases the application program from a retailer that is either
a brick and mortar or an ecommerce entity. The product is delivered to the consumer
in a shrink-wrap form.
The consumer installs the program from a floppy disk or a CD-ROM included in
the packaging. A serial number is generally provided that must be entered at installation
or the first time the program is run. Other approaches require that the CD-ROM
be present whenever the program is run. However, CD-ROMs are easily copied using
common CDR technology.
Another approach is for the consumer to effectuate the purchase through an
ecommerce entity. The application program is downloaded in its entirety to the
consumer across the Internet. The consumer is emailed a serial number that is required
to run the program. The consumer enters the serial number at the time the program
is installed or the first time the program is run.
Once the application program is installed on a machine, it resides on the machine,
occupying precious hard disk space, until it is physically removed. The installer
portion of the program can also be installed on a server along with the installation
files. Users within an intranet can install the program from the server, across
the network, onto their machines. The program is a full installation of the program
and resides on the user's machine until it is manually removed.
Trial versions of programs are also available online that are a partial or
full installation of the application program. The program executes normally for
a preset time period. At the end of the time period, the consumer is told that
he must purchase the program and execution is terminated. The drawback to this
approach is that there is an easy way for the consumer to fool the program. The
consumer simply uninstalls the program and then reinstalls it, thereby restarting
the time period.
Additionally, piracy problems arise once the application program is
resident on the consumer's computer. Serial numbers for programs are easily obtained
across the Internet. Software companies lose billions of dollars a year in revenue
because of this type of piracy.
The above approaches fail to adequately protect software companies' revenue stream.
These approaches also require the consumer to install a program that resides indefinitely
on the consumer's hard disk, occupying valuable space even though the consumer
may use the program infrequently.
The enterprise arena allows Application Service Providers (ASP) to provide browser-based
implementations such as Tarantella offered by Santa Cruz Operation, Inc. in Santa
Cruz, Calif. and Metaframe offered by Citrix Systems Inc. of Fort Lauderdale, Fla.
A remote application portal site allows the user to click on an application in
his browser to execute the application. The application runs on the portal site
and GUI interfaces such as display, keystrokes and mouse clicks are transferred
over the wire. The access to the program is password protected. This approach allows
the provider to create an audit trail and to track the use of an application program.
AppStream Inc. of Palo Alto, Calif. uses Java code streamlets to provide
streaming applications to the user. The system partitions a Web application program
into Java streamlets. Java streamlets are then streamed to the user's computer
on an as-needed basis. The application runs on the user's computer, but is accessed
through the user's network browser.
The drawback to the browser-based approaches is that the user is forced to work
within his network browser, thereby adding another layer of complexity. The browser
or Java program manages the application program's run-time environment. The user
loses the experience that the software manufacturer had originally intended for
its product including features such as application invocation based on file extension associations.
It would be advantageous to provide a client installation and execution system
for streamed applications that installs a streamed application program onto a client
system that appears to the user as if the application program is fully installed
on the client. It would further be advantageous to provide a client installation
and execution system for streamed applications that executes the streamed application
program on a client while concurrently streaming portions of the streamed application
program from a server.
SUMMARY OF THE INVENTION
The invention provides a client installation and execution system for streamed
applications. The system installs a streamed application program onto a client
system that appears to the user as if the actual application program is fully installed
on the client. In addition, the invention provides a system that executes the streamed
application program on a client while concurrently streaming portions of the streamed
application program from a server.
The invention requires the user or administrator to obtain a subscription to
the streamed application program from a subscription server before installation
of the streamed application program begins. The client then obtains an encrypted
access token for the streamed application program from a license server upon acknowledgment
of a valid license.
The invention receives an installation information block for the streamed application
program from the server and installs the proper icons, aliases, and description
onto the client that give the user the proper look and feel of the original application program.
A file spoofer is installed on the client that redirects file accesses from the
client's local file system to the streaming server's file system. A file mapping
database on the client contains a bidirectional mapping of the client file system
to the streaming server file system which the file spoofer uses to perform its
redirection. The file mapping database is updated with the streamed application
program's file mapping data obtained from the installation information.
A registry spoofer is provided on the client for intercepting all registry calls
on the client and redirecting calls that manipulate certain registries to an alternate
path specified in a registry database on the client. The registry database contains
mappings of original registry paths to new alternate registry paths and is updated
with the streamed application program's registry mapping data obtained from the
installation information.
An application page cache is also provided on the client that is managed by a
cache manager that requests application pages of the streamed application program
from the server. The cache manager initially populates the application page cache
with an initial set of application pages when the streamed application program
is installed on the client.
The user selects the proper icon or alias to start the streamed application program.
The client then passes the encrypted access token to the server for validation
before requesting application pages. During execution of the streamed application
program, page requests are generated and the cache manager requests any application
pages from the server that are not resident in the application page cache and places
the requested application pages in the application page cache.
Additional application pages are prefetched by the cache manager that
the streamed application program may need in the future based on application page
profiling data obtained from the installation information.
Other aspects and advantages of the invention will become apparent from the
following detailed description in combination with the accompanying drawings, illustrating,
by way of example, the principles of the invention.
BRIEF DESCRIPTION OF THE DRAWINGS
FIG. 1 is a block schematic diagram of a preferred embodiment of the invention
showing components on the server that deal with users subscribing to and running
applications according to the invention;
FIG. 2 is a block schematic diagram of a preferred embodiment of the invention
showing the client components supporting application delivery and execution according
to the invention;
FIG. 3 is a block schematic diagram of a preferred embodiment of the invention
showing the components needed to install applications on the client according to
the invention;
FIG. 4 is a block schematic diagram of the Builder that takes an existing application
and extracts the Application File Pages for that application according to the invention;
FIG. 5
a is a block schematic diagram illustrating how the Client Network
Spoofer is used to handle mapping TCP interfaces to HTTP interfaces according to
the invention;
FIG. 5
b is a block schematic diagram illustrating how the Client Network
Spoofer is used to handle mapping TCP interfaces to HTTP interfaces according to
the invention;
FIG. 6
a is a block schematic diagram showing several different components
of the client software according to the invention;
FIG. 6
b is a block schematic diagram showing the use of volatile and
non-volatile storage of code and data in the client and server according to the invention;
FIG. 7
a is a block schematic diagram showing one of two ways in which
data may be compressed while in transit between the server and client according
to the invention;
FIG. 7
b is a block schematic diagram showing the other way in which data
may be compressed while in transit between the server and client according to the invention;
FIG. 8 is a block schematic diagram showing an organization of the streaming
client software according to the invention;
FIG. 9 is a block schematic diagram showing an alternative organization of the
streaming client software according to the invention;
FIG. 10 is a block schematic diagram showing the application streaming software
consisting of a streaming block driver according to the invention;
FIG. 11 is a block schematic diagram showing the application streaming software
has been divided into a disk driver and a user mode client according to the invention;
FIG. 12 is a block schematic diagram showing the unencrypted and encrypted client
caches according to the invention;
FIG. 13 is a block schematic diagram showing an application generating a sequence
of code or data requests to the operating system according to the invention;
FIG. 14 is a block schematic diagram showing server-based prefetching according
to the invention;
FIG. 15 is a block schematic diagram showing a client-to-client communication
mechanism that allows local application customization to travel from one client
machine to another without involving server communication according to the invention;
FIG. 16 is a block schematic diagram showing a client cache with extensions
for supporting local file customization according to the invention;
FIG. 17 is a block schematic diagram showing aspects of a preferred embodiment
of the invention related to load balancing and hardware fail over according to
the invention;
FIG. 18 is a block schematic diagram showing the benefits to the use of compression
in the streaming of Application File Pages according to the invention;
FIG. 19 is a block schematic diagram showing pre-compression of Application
File Pages according to the invention;
FIG. 20 is a block schematic diagram showing multi-page compression of Application
File Pages according to the invention;
FIG. 21 is a block schematic diagram showing profile-based prefetching according
to the invention;
FIG. 22 is a block schematic diagram showing the use of tokens and a License
Server according to the invention;
FIG. 23 is a block schematic diagram showing a flowchart for the Builder Install
Monitor according to the invention;
FIG. 24 is a block schematic diagram showing a flowchart for the Builder Application
Profiler according to the invention;
FIG. 25 is a block schematic diagram showing a flowchart for the Builder SAS
Packager according to the invention;
FIG. 26
a is a block schematic diagram showing versioning support according
to the invention;
FIG. 26
b is a block schematic diagram showing versioning support according
to the invention;
FIG. 27 is a block schematic diagram showing a data flow diagram for the Streamed
Application Set Builder according to the invention;
FIG. 28 is a block schematic diagram showing the Streamed Application Set format
according to the invention;
FIG. 29 is a block schematic diagram showing an SAS client using a device driver
paradigm according to the invention;
FIG. 30 is a block schematic diagram showing an SAS client using a file system
paradigm according to the invention;
FIGS. 31
a through 31
h is a schematic diagram showing various
components of the AppinstallBlock format according to the invention;
FIG. 32 is a block schematic diagram showing the Application Install Block lifecycle
according to the invention;
FIG. 33 is a block schematic diagram showing peer caching according to the invention;
FIG. 34 is a block schematic diagram showing proxy caching according to the invention;
FIG. 35 is a block schematic diagram showing multicast within a LAN and a packet
protocol according to the invention;
FIG. 36 is a block schematic diagram showing concurrent requests for application
server pages, for the case when the page is first requested through the proxy according
to the invention;
FIG. 37 is a block schematic diagram showing concurrent requests for application
server pages, for the case when the page is first requested through the peer caching
according to the invention;
FIG. 38 is a block schematic diagram showing concurrent requests for application
server pages, for the case when the page is received only through peer caching
according to the invention;
FIG. 39 is a block schematic diagram showing a client-server system using peer
and proxy caching according to the invention;
FIG. 40 is a block schematic diagram showing a preferred embodiment of the invention
preventing piracy of remotely served, locally executed applications according to
the invention;
FIG. 41 is a block schematic diagram showing the filtering of accesses to remote
application files according to the invention;
FIG. 42 is a block schematic diagram showing the filtering of accesses to remote
files based on process code location according to the invention;
FIG. 43 is a block schematic diagram showing the filtering of accesses to remote
files based on targeted file section according to the invention;
FIG. 44 is a block schematic diagram showing the filtering of accesses to remote
files based on surmised purpose according to the invention; and
FIG. 45 is a block schematic diagram showing the filtering of accesses to remote
files based on past access history according to the invention.
DETAILED DESCRIPTION OF THE INVENTION
The invention is embodied in a client installation and execution system for streamed
applications in a computer environment. A system according to the invention installs
a streamed application program onto a client system that appears to the user as
if the actual application program is fully installed on the client. In addition,
the invention provides a system that executes the streamed application program
on a client while concurrently streaming portions of the streamed application program
from a server.
The invention provides a highly efficient and secure application delivery system
in conjunction with the adaptively optimized execution of applications across a
network such as the Internet, a corporate intranet, or a wide area network. This
is done in such a way that existing applications do not need to be recompiled or
recoded. Furthermore, the invention is a highly scalable, load-balancing, and fault-tolerant system.
When using the invention, an end-user requests applications that are resident
on remote systems to be launched and run on the end-user's local system. The end-user's
local system is called the client or client system, e.g., a desktop, laptop, palmtop,
or information appliance. A remote system is a called a server or server system
and is located within a collection of one or more servers called a server cluster.
From the point of view of the client system, the application appears to be installed
locally on the client even though it was initially installed on a different computer
system. The applications execute locally on the client system and not on the server
system. To achieve this result, the application is converted into a form suitable
for streaming over the network. The streaming-enabled form of an application is
called the Streamed Application Set (SAS) and the conversion process is termed
the SAS Builder. The conversion of an application into its SAS form typically takes
place on a system different from either an end-user client system or an Application
Service Provider Server Cluster. This system is called the SAS Conversion System
or, simply, the conversion system.
Components of the invention are installed on the client system to support
activities such as the installation, invocation, and execution of a SAS-based application.
Other components of the invention are installed on the server system to support
activities such as the verification of end user application subscription and license
data and the transfer and execution of a SAS-based application on the client system.
Some of the client and some of the server components run in the kernel-mode while
other components run in the usual user-mode.
The term Application Service Provider (ASP) refers to an entity that uses the
server components on one or more server systems, i.e., an ASP Server Cluster, to
deliver applications to end-user client systems. Such an entity could be, for example,
a software manufacturer, an e-commerce vendor that rents or leases software, or
a service department within a company. The invention enables an ASP to deliver
applications across a network, in a highly efficient and secure way; the applications
are adaptively optimized for execution on an end-user's client system.
A number of techniques are employed to increase the overall performance of the
delivery of an application and its subsequent execution by minimizing the effect
of network latency and bandwidth. Among the techniques employed are: the SAS Builder
identifies sequences of frequently accessed application pages and uses this information
when generating a SAS; individual SAS pages and sequences of SAS pages are compressed
and cached in an in-memory cache on the server system; various aspects of the applications
are monitored during their actual use on a client and the resulting profiling data
is used by the client to pre-fetch (pull) and by the server to send (push) additional
pages which have a high likelihood of being used prior to their actual use; and
SAS pages are cached locally on a client for their immediate use when an application
is invoked.
Aggregate profile data for an application, obtained by combining the profile
data from all the end-user client systems running the application,