|
References  |
|
|
| *references marked with an asterisk below are user-added references |
|
U.S. References |
|
|
| Add a new US reference: |
| | Reference | Relevancy | Comments | Reference | Relevancy | Comments | 5713017 Lin 707/8 Jan,1998 |      Your vote accepted [0 after 0 votes] | | 5634052 Morris 707/1 May,1997 |      Your vote accepted [0 after 0 votes] | | 5628005 Hurvig 707/8 May,1997 |      Your vote accepted [0 after 0 votes] | | 5619716 Nonaka 717/167 Apr,1997 |      Your vote accepted [0 after 0 votes] | | 5606705 Randall 709/203 Feb,1997 |      Your vote accepted [0 after 0 votes] | | 5586322 Beck 707/200 Dec,1996 |      Your vote accepted [0 after 0 votes] | | 5581764 Fitzgerald 709/223 Dec,1996 |      Your vote accepted [0 after 0 votes] | | 5574906 Morris 707/1 Nov,1996 |      Your vote accepted [0 after 0 votes] | | 5491820 Belove 707/3 Feb,1996 |      Your vote accepted [0 after 0 votes] | | 5473772 Halliwell 717/171 Dec,1995 |      Your vote accepted [0 after 0 votes] | | 5434994 Shaheen
Jul,1995 |      Your vote accepted [0 after 0 votes] | | 5408619 Oran 707/10 Apr,1995 |      Your vote accepted [0 after 0 votes] | | 5388255 Pytlik 707/4 Feb,1995 |      Your vote accepted [0 after 0 votes] | | 5377329 Seitz 710/54 Dec,1994 |      Your vote accepted [0 after 0 votes] | | 5341477 Pitkin 709/226 Aug,1994 |      Your vote accepted [0 after 0 votes] | | 5155847 Kirouac 709/221 Oct,1992 |      Your vote accepted [0 after 0 votes] | | 5115504 Belove 707/100 May,1992 |      Your vote accepted [0 after 0 votes] | | 5113519 Johnson 707/201 May,1992 |      Your vote accepted [0 after 0 votes] | | 4897781 Chang 707/201 Jan,1990 |      Your vote accepted [0 after 0 votes] | | 4875159 Cary 707/203 Oct,1989 |      Your vote accepted [0 after 0 votes] | | 4866611 Cree 708/112 Sep,1989 |      Your vote accepted [0 after 0 votes] | | 4714996 Gladney 707/203 Dec,1987 |      Your vote accepted [0 after 0 votes] | | 4714992 Gladney 707/206 Dec,1987 |      Your vote accepted [0 after 0 votes] | | 4658093 Hellman 705/52 Apr,1987 |      Your vote accepted [0 after 0 votes] | | 4611272 Lomet 707/3 Sep,1986 |      Your vote accepted [0 after 0 votes] | | 4558413 Schmidt 707/203 Dec,1985 |      Your vote accepted [0 after 0 votes] | | 4468728 Wang 707/1 Aug,1984 |      Your vote accepted [0 after 0 votes] | | 4432057 Daniell 707/8 Feb,1984 |      Your vote accepted [0 after 0 votes] | | 5471629 Risch 707/201 Dec,1969 |      Your vote accepted [0 after 0 votes] | | | | | |
|
|
|
|
U.S. References |
|
|
Foreign References |
|
|
|
|
|
|
Foreign References |
|
|
Other References |
|
|
|
|
|
|
Other References |
|
|
|
|
|
References  |
|
|
Claims  |
|
|
What is claimed is:
1. A method of requesting at least one update to a plurality of files, the
method comprising:
determining a first set of at least one first identifier responsive to at
least one of the plurality of files, each of the first identifiers
comprising at least one symbol, the symbols of all of the first
identifiers in the first set comprising a first number of at least one
symbol;
determining a second identifier responsive to at least one of the plurality
of files, the second identifier having a second number, less than the
first number, of at least one symbol;
transmitting a first update request comprising the second identifier; and
responsive to one selected from no response to the first update request,
and a response not containing at least a part of the update to the
plurality of files, transmitting a second update request comprising the
first identifier.
2. The method of claim 1 wherein the determining a first set of at least
one first identifier is responsive to one selected from no response to the
first update request, and a response not containing at least a part of the
update to the plurality of files.
3. The method of claim 1 wherein the second identifier is identified
responsive to the set of at least one first identifier.
4. A method of providing an update for a set of files, comprising:
receiving a first request for an update of the set of files, the request
comprising an identifier of at least one selected from the set of files
and the update, the identifier comprising a first number of at least one
symbol;
comparing the identifier received with a set of identifiers, each
identifier in the set corresponding to at least one request for an update;
responsive to the identifier received corresponding to at least one
identifier in the set, retrieving a first index;
retrieving a second index;
comparing the first index retrieved with the second index retrieved to
produce a result;
providing the update responsive to the result; and
responsive to the identifier received not corresponding to at least one
identifier in the set, providing a request for a transmission of a second
request, different from the first request received, for the update of the
set of files.
5. The method of claim 4, additionally comprising the steps of:
receiving a second request for an update of the set of files after
requesting the additional information, the second request containing a set
of at least one identifier, the set having a second number of symbols
greater than the first number of symbols; and
providing the update of the set of files responsive to the second request.
6. The method of claim 1, additionally comprising the additional step of
selecting a third identifier.
7. The method of claim 6, wherein the third identifier is capable of
identifying an instance of a tuner.
8. The method of claim 1, additionally comprising the steps of:
transmitting a request for data; and
receiving the data requested.
9. The method of claim 1, wherein at least one selected from the
determining the first set, the determining the second identifier and the
transmitting steps are responsive to receipt of a request.
10. The method of claim 1, wherein at least one selected from the
determining the fist set, the determining the second identifier and the
transmitting steps are responsive to at least one selected from a
frequency received and at least one time received.
11. The method of claim 1, wherein the first update request comprises an
HTTP request header.
12. The method of claim 1, wherein the transmitting the first update
request step comprises transmitting the first update request to a proxy
server.
13. The method of claim 1, wherein the determining the first set of at
least one first identifier comprises building a tree structure.
14. The method of claim 13, wherein the tree structure comprises a
plurality of nodes, at least one first node of the plurality of nodes
comprising information about at least one of the plurality of files and at
least one second node different from the at least one first node comprises
information about the at least one first node.
15. The method of claim 14, wherein the determining the second identifier
step comprises computing a checksum responsive to the first identifier.
16. The method of claim 14, wherein the determining the first set of at
least one first identifier comprises computing a checksum of at least one
second node.
17. The method of claim 10, wherein the computing a checksum of at least
one second node comprises providing at least one independent vector of
prime numbers.
18. The method of claim 1, wherein the determining the first set of at
least one first identifier composes computing a checksum of at least one
of the plurality of files.
19. The method of claim 1, additionally compromising the step of receiving
information about differences between at least one of the plurality of
files and another version of each of said at least one of the plurality of
files.
20. The method of claim 1, wherein at least one selected from the first
identifier and the second identifier comprises information about at least
one computer system.
21. The method of claim 20, wherein the information about the at least one
computer system comprises an operating system of the at least one computer
system.
22. The method of claim 20, wherein the information about the at least one
computer system comprises a description of at least a portion of hardware
comprising the computer system.
23. The method of claim 20, wherein the information about the at least one
computer system comprises an amount of memory of the at least one computer
system.
24. The method of claim 20, wherein the information about the at least one
computer system comprises information about a location in which the at
least one computer system operates.
25. The method of claim 20, wherein the information about the at least one
computer system comprises a client identifier.
26. The method of claim 1, wherein:
at least one of the plurality of files comprises at least a portion of an
application; and
at least one selected from the first identifier and the second identifier
comprises information generated by the application.
27. The method of claim 1, wherein at least one of the two transmitting
steps comprises transmitting to a second computer system, the method
comprising the additional steps of:
transmitting the first update request comprising the second identifier to a
first computer system; and
receiving a response to the first update request transmitted to the first
computer system indicating the second computer system.
28. The method of claim 1, wherein at least one of the at least one files
comprises at least a portion of an application, the method additionally
comprising the steps of:
receiving a response to at least one selected from the first update request
and the second update request;
determining a running state of the application; responsive to the running
state of the application indicating the application is running, signaling
the application.
29. The method of claim 1, additionally comprising the steps of:
receiving a request response to at least one selected from the first update
request and the second update request;
receiving a third update request; and
providing at least a portion of the request response responsive to the
third update request received.
30. The method of claim 1, wherein at least one selected from the first
identifier and the second identifier comprises information about at least
one end user.
31. The method of claim 1, wherein at least one selected from the first
update request and the second update request additionally comprises a
digital certificate.
32. The method of claim 31, comprising the additional step of encrypting at
least one selected from the first update request and the second update
request.
33. The method of claim 4, wherein the retrieving the second index,
comparing and providing the update steps are responsive to the identifier
received corresponding to the at least one identifier in the set.
34. The method of claim 33, additionally comprising the steps of:
receiving a second request for an update of the set of files after
requesting the additional information, the second request containing a set
of at least one identifier, the set having a second number of symbols
greater than the first number of symbols; and
providing the update of the set of files responsive to the second request.
35. The method of claim 33, additionally comprising:
receiving a request for the set of files; and
providing at least one of the set of files.
36. The method of claim 33, wherein the set of files is one of a plurality
of sets of files, each of the plurality of sets of files comprising a
descriptor, the method comprising:
receiving a request for a list; and
providing the descriptors of at least one of the plurality of the sets of
files responsive to the request for the list.
37. The method of claim 34, wherein the set of at least one identifier in
the second request comprises a tree structure.
38. The method of claim 37, wherein:
the tree structure comprises a plurality of nodes;
at least one first node of the plurality of nodes comprises information
about at least one of the set of files; and
at least one second of the plurality of nodes different from the at least
one first node comprises information about the at least one first node.
39. The method of claim 34, wherein the providing the update of the set of
files responsive to the second request step comprises:
comparing the set of at least one identifier to the second index; and
building the update responsive to the comparing the set of at least one
identifier to the second index step.
40. The method of claim 39, wherein the update comprises at least one
command to perform an action on at least one of the set of files selected
from altering and deleting said at least one of the set of files.
41. The method of claim 34, wherein at least one of the providing the
update steps comprises:
locating a node, corresponding to a directory for containing at least one
file of the set of files, that exists in one of the set of at least one
identifier and a third index;
responsive to the node existing in the set of at least one identifier,
providing a command to delete the directory; and
responsive to the node existing in the third index, providing a command to
create the directory.
42. The method of claim 34, wherein at least one of the providing the
update steps comprises:
locating a node, corresponding to a at least one file of the set of files,
that exists in one of the set of at least one identifier and a third
index;
responsive to the node existing in the set of at least one identifier,
providing a command to delete the at least one file; and
responsive to the node existing in the third index, providing a command to
create the at least one file.
43. The method of claim 34, wherein at least one of the providing the
update steps comprises:
locating a node, corresponding to a file of the set of files, that exists
in the set of at least one identifier and a node in a third index
corresponding to a later version of the file; and
providing at least one command describing the modification of the file into
the different version.
44. The method of claim 1, wherein the transmitting the first update
request step is responsive to a size of the first set of at least one
first identifier.
45. The method of claim 1:
comprising the additional step of receiving a frequency identifier; and
wherein the transmitting the first update request step is responsive to the
frequency identifier received.
46. The method of claim 1, wherein the transmitting the first update
request step is responsive to a time period.
47. The method of claim 1, comprising the additional step of:
receiving a reply;
computing an index responsive to the reply received; and
storing the reply indexed by the index computed.
48. The method of claim 1, comprising the additional steps of:
receiving the update to the plurality of files; and
applying the update to the plurality of files responsive to at least one
selected from:
a termination of an application comprising at least one of the plurality of
files; and
a request received from the application.
49. The method of claim 1, comprising an additional step of applying less
than all of the update received responsive to the request received from
the application.
50. The method of claim 1, comprising the additional step of notifying an
application comprising at least one of the plurality of files.
51. The method of claim 33, comprising the additional steps of:
receiving the first request; and
providing a response comprising an identifier of an alternate provider of
the update.
52. The method of claim 33, wherein the update comprises a minimum delay
indicating a minimum amount of time intended to elapse before a third
request for the update of the set of files is received.
53. The method of claim 33, comprising the additional step of building the
update responsive to the identifier received.
54. The method of claim 34, comprising the additional step of building the
update responsive to the set of at least one identifier.
55. The method of claim 33, additionally comprising a step of retrieving
the update from a cache before the providing the update step.
56. The method of claim 5, wherein the cache is random access memory.
57. The method of claim 33, wherein at least one of the steps is
implemented in a JAVA programming language.
58. The method of claim 1, wherein at least one of the steps is implemented
using a Java programming language.
59. The method of claim 33, wherein the update comprises a digital
signature.
60. The method of claim 33, additionally comprising billing a party
responsive to at least one selected from the receiving, comparing,
retrieving the first index, retrieving the second index, comparing and
providing the update steps.
61. The method of claim 34, additionally comprising billing a party
responsive to at least one selected from the receiving, comparing,
retrieving the first index, retrieving the second index, comparing, either
of the providing the update and either of the receiving steps. |
|
|
|
|
Claims  |
|
|
Description  |
|
|
BACKGROUND OF THE INVENTION
This invention relates to the distribution of software over a network. More
particularly, this invention relates to the broadcasting of code and data,
and updates thereto, to a plurality of subscribers.
In large scale networks such as the Internet, or Intranets within
businesses, the distribution of software applications is often a manual
and laborious process which requires the correct use of such program tools
such as ftp, tar, compress, uudecode, and zip. The variety of platforms
and tools, and the complexity of the installation procedures make this
manner of distribution a complex and costly operation. Software
installation is therefore frequently performed by specially trained system
administrators rather than end-users.
The Internet has significantly accelerated the release schedule of
applications significantly. Software is released more frequently and in
smaller increments, and as a result many more installations have to be
performed, resulting in more work for the system administrator. This
multitude of releases can cause versioning problems when a new piece of
installed software becomes incompatible with some previously installed
software. As these updates occur more often, it is desirable to automate
this update process.
A browser is a computer program for accessing the Internet via the World
Wide Web, using the HTTP protocol. Browser plug-ins allow the user to
extend the browser so that it can incorporate new functionality. Plug-ins
are often very hard to install because they are platform dependent, and
not secure because they are implemented in low level languages such as C
or C++. To make plug-ins secure the browser needs to implement some form
of authentication algorithm such as those based on the RSA algorithm.
The Java programming language and the introduction of Java applets has made
it possible to run the same software program in a secure manner on many
different platforms, thus enabling the wide distribution of such programs
over a heterogeneous network such as the Internet. With Java applets it
has also become possible to automatically launch small Java programs from
a World Wide Web browser which eliminates a lot of the installation
headache.
When Java applets are used as applications, the user is required to use a
browser to navigate to the HTML page containing the desired applet. Once
the applet is running it is usually constrained to the HTML page in which
it is embedded, and the applet may be terminated prematurely when the user
visits a new HTML page.
Further, Java applets have several restrictions which prevent them from
scaling to larger applications. One problem is that the download times are
too long because each Java class is loaded using a separate HTTP
connection, and making each new connection often takes more time than the
actual data transfer. Also, Java applets have to be reloaded from their
source each time they are used, there is no mechanism for persistence
other than HTTP caching. HTTP caching has the drawback that it is too low
level, which causes versioning problems because it may mix old Java
classes with newer Java classes. It is usually impossible to flush an
applet from an HTTP cache, because it is not possible to know which files
in the cache belong to the applet that needs to be flushed.
Because Java applets are reloaded for each use, and because they usually
consist of many parts, they can significantly increase the number of
server accesses and thus significantly increase the server load. As a
result most high volume web-sites cannot afford to put Java applets on
their HTML pages.
A Java applet generally cannot be used when the client computer is
disconnected from the network. If the user wants to use an applet after
disconnecting the network, it is first necessary to use all the features
of the applet to populate the HTTP cache. However, if the user ventures
into a previously unexplored part of the applet once disconnected, the
applet will be unable to proceed and a fatal error will result. This is a
major drawback of caching strategies because disconnected use is important
for the next generation of portable Internet devices.
Another drawback of HTTP is that ongoing transactions can often be
corrupted when new code and data is installed on the server. This is not a
fatal problem when it happens to an HTML page, but corrupting a request
can be catastrophic for an application. HTTP simply is not an appropriate
mechanism for distributing code.
Some applications need the ability to monitor their use by the end-user. An
example is advertisement tracking where it is necessary to keep an
accurate count of how often an ad is shown. Currently advertisements are
tracked by counting the number of hits on the HTML page containing the ad,
which means that the page cannot be cached because this would affect the
hit-rate. The page is therefore marked as not-cacheable, and the result is
fewer cache hits and increased server load.
Personalized web-sites and personalized applications are also becoming very
popular. Because of security constraints it is very hard to create a
personalized applet. The reason is that the applet can't save state to the
local disk | | |