U.S. patent application number 13/495659 was filed with the patent office on 2012-10-04 for caching infrastructure.
This patent application is currently assigned to Microsoft Corporation. Invention is credited to Christopher J. Antos, Jonathan B. Bailor, Miko Arnab Sakhya Singha Bose, Andrew G. Carlson, Simon Peter Clarke, Don Adam Hedgpeth, Naresh Kannan, Mark Rolland Knight, Mitesh Pankaj Patel, Elena Petrova, Simon Skaria, Andrew Sean Watson.
Application Number | 20120254315 13/495659 |
Document ID | / |
Family ID | 41267722 |
Filed Date | 2012-10-04 |
United States Patent
Application |
20120254315 |
Kind Code |
A1 |
Skaria; Simon ; et
al. |
October 4, 2012 |
CACHING INFRASTRUCTURE
Abstract
Example systems and methods are directed at maintaining and
retrieving presence metadata. One example method includes receiving
a request from a first client to edit a document file, and sending
short-term check out metadata to the first client to begin an
editing session. The method also includes writing the transition ID
to a transition table stored in a cache, wherein the presence of
another transition ID in the cache indicates that a document has
switched from a single-client mode to a multi-client mode. An
example system includes a processing unit operative to receive a
document, the document including short-term check out metadata
indicating an editing session has begun, ping a cache to determine
if another transition ID is stored in the cache, and send a
transition ID to a transition table stored in a cache to switch
from a single-client mode to a multi-client mode.
Inventors: |
Skaria; Simon; (Sammamish,
WA) ; Kannan; Naresh; (Seattle, WA) ; Clarke;
Simon Peter; (Seattle, WA) ; Bose; Miko Arnab Sakhya
Singha; (Seattle, WA) ; Antos; Christopher J.;
(Bellevue, WA) ; Knight; Mark Rolland; (Bellevue,
WA) ; Carlson; Andrew G.; (Redmond, WA) ;
Hedgpeth; Don Adam; (Redmond, WA) ; Patel; Mitesh
Pankaj; (Seattle, WA) ; Watson; Andrew Sean;
(Seattle, WA) ; Bailor; Jonathan B.; (Bellevue,
WA) ; Petrova; Elena; (Redmond, WA) |
Assignee: |
Microsoft Corporation
Redmond
WA
|
Family ID: |
41267722 |
Appl. No.: |
13/495659 |
Filed: |
June 13, 2012 |
Related U.S. Patent Documents
|
|
|
|
|
|
Application
Number |
Filing Date |
Patent Number |
|
|
12117025 |
May 8, 2008 |
|
|
|
13495659 |
|
|
|
|
Current U.S.
Class: |
709/205 |
Current CPC
Class: |
G06Q 10/10 20130101 |
Class at
Publication: |
709/205 |
International
Class: |
G06F 15/16 20060101
G06F015/16 |
Claims
1-20. (canceled)
21. A method for updating presence information for a document, the
method comprising: receiving, at a first client, short term check
out metadata by opening the document, the short term check out
metadata comprising presence metadata; adding a transition ID for
the first client to the short term check out metadata; sending the
transition ID to a transition table stored in a cache; determining
that presence information in the cache has not been updated by a
second client in a configurable window of time; and upon
determining that the presence information has not been updated,
deleting the presence information of the second client.
22. The method of claim 21, wherein adding the transition ID for
the first client switches the document to a multi client editing
mode.
23. The method of claim 21, wherein deleting the presence
information of the second client indicates that the document is in
a single client editing mode.
24. The method of claim 21, further comprising: deleting the
transition ID from the transition table.
25. The method of claim 21, further comprising: pinging the server
to determine whether a new transition ID has been added to the
transition table.
26. The method of claim 25, further comprising receiving a ping
from the server indicating that the document is still in the single
client editing mode.
27. The method of claim 25, further comprising receiving a ping
from the server indicating that the document has switched to the
multi client editing mode.
28. One or more computer storage media not consisting of a
propagated data signal and having computer-executable instructions
that, when executed, provide a method for updating presence
information for a document, the method comprising: receiving, at a
first client, short term check out metadata by opening the
document, the short term check out metadata comprising presence
metadata; adding a transition ID for the first client to the short
term check out metadata; sending the transition ID to a transition
table stored in a cache; determining that presence information in
the cache has not been updated by a second client in a configurable
window of time; and upon determining that the presence information
has not been updated, deleting the presence information of the
second client.
29. The one or more computer storage media of claim 28, wherein
adding the transition ID for the first client switches the document
to a multi client editing mode.
30. The one or more computer storage media of claim 28, wherein
deleting the presence information of the second client indicates
that the document is in a single client editing mode.
31. The one or more computer storage media of claim 28, further
comprising: deleting the transition ID from the transition
table.
32. The one or more computer storage media of claim 28, further
comprising: pinging the server to determine whether a new
transition ID has been added to the transition table.
33. The one or more computer storage media of claim 32, further
comprising receiving a ping from the server indicating that the
document is still in the single client editing mode.
34. The one or more computer storage media of claim 32, further
comprising receiving a ping from the server indicating that the
document has switched to the multi client editing mode.
35. A computer system comprising: a processor; and a memory
communicatively coupled to the processor, the memory having
computer-executable instructions that when executed by the
processor, provide a method for updating presence information for a
document, the method comprising: receiving, at a first client,
short term check out metadata by opening the document, the short
term check out metadata comprising presence metadata; adding a
transition ID for the first client to the short term check out
metadata; sending the transition ID to a transition table stored in
a cache; determining that presence information in the cache has not
been updated by a second client in a configurable window of time;
and upon determining that the presence information has not been
updated, deleting the presence information of the second
client.
36. The computer system of claim 35, wherein adding the transition
ID for the first client switches the document to a multi client
editing mode.
37. The computer system of claim 35, wherein deleting the presence
information of the second client indicates that the document is in
a single client editing mode.
38. The computer system of claim 35, further comprising: deleting
the transition ID from the transition table.
39. The computer system of claim 35, further comprising: pinging
the server to determine whether a new transition ID has been added
to the transition table.
40. The computer system of claim 39, further comprising receiving a
ping from the server indicating that the document has switched to
the multi client editing mode.
Description
BACKGROUND
[0001] In a collaborative environment, some computer applications
allow multiple clients to simultaneously edit a document. As
multiple clients are editing the document, a server may maintain a
copy of the document. The server may need to continually update the
copy of the document to reflect the current state of the document.
This can lead to inefficiencies.
[0002] For example, even with only a single client editing the
document, the client's application may need to continuously update
the server to allow the transition to multi-party editing when it
occurs. This can increase server load, thereby causing a
degradation in performance.
SUMMARY
[0003] Example systems and methods described herein relate to a
caching infrastructure.
[0004] According to one aspect, an example method for retrieval of
presence metadata includes: receiving a request from a first client
to edit a document file; sending short-term check out metadata to
the first client to begin an editing session; and writing the
transition ID to a transition table stored in a cache, wherein the
presence of another transition ID in the cache indicates that a
document has switched from a single-client mode to a multi-client
mode.
[0005] According to another aspect, an example system includes a
cache infrastructure for retrieval of presence metadata. The system
includes a memory storage unit, and a processing unit coupled to
the memory storage unit, wherein the processing unit is operative
to receive short-term check out metadata from a first client to
begin an editing session, add a transition ID to the short-term
check out metadata, write the transition ID to a transition table
stored in a cache, and switch from a single-client mode to a
multi-client mode. Switching from the single-client mode to the
multi-client mode comprises the processing unit being operative to
notice when the first client attempts to take another short-term
lock on the document and seeing that that a second client has
already received the document. The processing unit is operative to
determine if the multi-client mode is in progress by checking a
database, receive a ping from the first client to determine if the
transition ID is in the cache, and when the transition ID is not in
the cache, receive pings from the first client at regular
intervals, and save the document to the server a plurality of times
without incurring any reads/writes to the database, and, when the
transition ID is in the cache, receive a ping from the first client
to collect a lock table from the database to identify the second
client, and receive the second client's lock information by
receiving pings that do not carry lock information.
[0006] According to yet another aspect, an example client computer
for retrieval of metadata relating to a multi-client editing
session includes a memory unit, and a processing unit operative to
receive a document from a storage device, the document comprising
short-term check out metadata indicating an editing session has
begun, ping a cache to determine if another transition ID is stored
in the cache, and send a transition ID to a transition table stored
in a cache when the another transition ID is not stored in the
cache to switch from a single-client mode to a multi-client mode
when the another transition ID is stored in the cache.
[0007] This Summary is provided to introduce a selection of
concepts in a simplified form that are further described below in
the Detailed Description. This Summary is not intended to identify
key features or essential features of the claimed subject matter.
Nor is this Summary intended to be used to limit the claimed
subject matter's scope.
DESCRIPTION OF THE DRAWINGS
[0008] Non-limiting and non-exhaustive embodiments are described
with reference to the following figures, wherein like reference
numerals refer to like parts throughout the various views unless
otherwise specified.
[0009] FIG. 1 is a schematic block diagram illustrating an example
authoring system;
[0010] FIG. 2 is a schematic block diagram illustrating the
authoring system of FIG. 1 in which a document stored on first
computing device can include content and metadata;
[0011] FIG. 3 is a schematic block diagram of an example lock
table;
[0012] FIG. 4 is a schematic block diagram of an example authoring
environment including a first computing device on which a master
copy of a document to be authored is to be stored;
[0013] FIG. 5 is a schematic block diagram of an example client
computing system configured to implement an authoring
environment;
[0014] FIG. 6 is a flowchart illustrating an example caching
process implemented by an authoring application to recognizes a
single or multiple clients editing a document; and
[0015] FIG. 7 is a flowchart of an example subroutine used in the
method of FIG. 6 for writing a transition ID to a transition
table.
DETAILED DESCRIPTION
[0016] In the following detailed description, references are made
to the accompanying drawings that form a part hereof, and in which
are shown by way of illustrations specific embodiments or examples.
While the disclosure will be described in the general context of
program modules that execute in conjunction with an application
program that runs on an operating system on a computer system,
those skilled in the art will recognize that the disclosure also
may be implemented in combination with other program modules. The
embodiments described herein may be combined and other embodiments
may be utilized without departing from the spirit or scope of the
present disclosure. The following detailed description is therefore
not to be taken in a limiting sense, and the scope of the
disclosure is defined by the appended claims and their
equivalents.
[0017] Embodiments of the present disclosure provide an environment
in which multiple clients can collaboratively author a document
while consuming minimal server resources. In example embodiments,
when a coauthoring capable application is editing a document, the
application adds coauthoring metadata to the document and keeps a
server copy of the file updated with the latest metadata. The
coauthoring metadata and server copy allows seamlessly transitions
from a single client to a multi-client editing state and vice
versa. To keep conflicts to a minimum, the coauthoring metadata is
uploaded to the server. When a new client opens the document, the
client is notified of the areas of the document where other clients
are working.
[0018] FIG. 1 illustrates an example authoring system 100 having
features that illustrate examples aspects of the disclosure. The
authoring system 100 includes a storage device 120 storing a master
copy of a document 150. In one embodiment, the storage device 120
may include, but not limited to, a server, a client computer, or
other computing device. In another embodiment, the storage device
120 can include one or more storage devices (e.g., a network of
computing devices).
[0019] The authoring system 100 also includes at least one client
computing device 110 that is communicatively coupled to the storage
device 120. Each of the client computing devices 110 can edit the
document 150 by creating a client copy 155 of the document 150 and
editing the client copy 155. The client copies 155 of the document
150 are synchronized when the client computing devices 110
periodically send to the storage device 120 updates to be shared
with the other client computing devices and periodically obtain
from the storage device 120 updates from other client computing
devices.
[0020] As the term is used herein, a client computing device 110
includes any computing device that obtains a client copy of a
document to be authored from a master copy of the document. The
client computing device 110 can be different from the storage
device 120 or can include a different client account implemented on
the storage device 120. In one embodiment, a computing device that
acts as a storage device 120 for one document may act as a client
computing device 110 for a different document and vice versa.
[0021] In the example shown, four client computing devices 110A,
110B, 110C, and 110D are communicatively coupled to the storage
device 120. In other embodiments, however, any number of computing
devices 110 may be coupled to the storage device 120. In the
example shown, each client computing device 110A, 110B, 110C, 110D
can send to the storage device 120 updates generated by the client
of the client computing device and can request from the storage
device 120 updates generated by the clients of the other client
computing devices. In one embodiment, the storage device 120 can be
a server computing device and the client computing devices 110A,
110B, 110C, 110D can be client computing devices. Other system
configurations are possible. For example, in an alternative
embodiment, multiple server computing devices can be used.
[0022] As shown in FIG. 2, the document 150 stored on the storage
device 120 can include content 152 and metadata 154. Authoring
applications 130 on the client computing devices 110 process and
manipulate the content and metadata of the client copies 155 of the
document 150. In some embodiments, metadata 154 can be stored
separately from content 152. For example, content 152 can be stored
in the document 150 and metadata 154 can be stored in a table (see
FIG. 3) separate from the document 150. In other embodiments,
however, the metadata 154 can be stored within the document
150.
[0023] In general, the client computing devices 110 can synchronize
updates to the content 152 separately from updates to the metadata
154. In general, metadata updates 154 are automatically
synchronized among the storage device 120 and client computing
devices 110, whereas content updates 152 from each client computing
device 110 are synchronized at the request of the respective
client.
[0024] Referring to FIG. 3, lock metadata can be stored in a
variety of different formats. For example, the lock metadata of
FIG. 3 is stored in a table format 300. The lock table 300 of FIG.
3 includes a list of clients, each of whom is identified with a
client identifier (e.g., an identification number) that is uniquely
assigned to the client. Data units to be locked are identified with
unit identifiers (e.g., identification numbers) that are uniquely
assigned to each data unit within a document. The lock table 300
associates the unit identifiers of the one or more data units to be
locked with the client identifiers of the clients who own the
locks.
[0025] For example, in the lock table 300, data units 312 and 314
are associated with a first client 310. Other clients, therefore,
are inhibited from editing data units 312 and 314. Data unit 322 is
associated with client 320. Other clients, including the first
client 310, therefore, are inhibited from editing data unit 322.
The fourth client 340 has not locked any portion of the document
and so is not associated with any unit identifiers. In other
embodiments, however, lock metadata can be stored in a different
format or within the document. For example, the lock table 300 can
be arranged by unit identifier instead of by client identifier.
[0026] Presence metadata also can be stored in a variety of
formats. For example, presence metadata can be stored in the lock
table 300 of FIG. 3. In another embodiment, however, presence
metadata can be stored in a separate table or in a different
format. Presence metadata includes the client identifier of each
client that is currently accessing the document or that has staked
a claim (e.g., generated a content lock) on a data unit of the
document. For example, a metadata table, such as the lock table
300, can store the client identifier of each client having a claim
to at least one data unit of the document. Like lock metadata,
presence metadata can be synchronized automatically.
[0027] FIGS. 4 and 5 provide greater detail in how coauthoring
between the client copy and the master copy of the document is
implemented by a client computing device. FIG. 4 is a schematic
block diagram of an authoring system 400 including a storage device
420 on which a master copy of a document to be authored is to be
stored. The authoring system 400 also includes at least one client
computing device 410 communicatively coupled to the storage device
420.
[0028] The client computing device 410 includes an authoring
application 412 configured to provide an authoring environment in
which a client can create and/or manipulate a document to be
authored. The client computing device 410 also includes a cache
414, a layer object ("LO") 416, and a synchronization manager
("sync manager") 418. The cache 414 stores a client copy of the
document to be authored. The cache 414 also stores the metadata,
including lock and presence metadata, associated with the document.
Updates to the content and metadata of the document also can be
stored in the cache 414.
[0029] The layer object 416 provides an interface between the
authoring application 412 and the cache 414. The layer object 416
also provides an interface between the authoring application 412
and the sync manager 418. The sync manager 418 communicates with
the storage device 420 and provides an interface between the
storage device 420 and the cache 414. For example, the sync manager
418 can send updates to and obtain updates from the storage device
420 and the cache 414.
[0030] In general, an authoring environment having features that
are examples of aspects in accordance with the principles of the
disclosure can be implemented on a client computing device (e.g., a
personal computer, a server computer, a notebook computer, a PDA, a
Smartphone, or any other such computing device). A non-limiting
embodiment of a client computing system 500 configured to implement
an authoring environment is described herein with reference to FIG.
5.
[0031] In FIG. 5, the exemplary computing system 500 for
implementing the principles of the disclosure includes a client
computing device, such as client computing device 510. In a basic
configuration, the client computing device 510 typically includes
at least one processing unit 515 for executing applications and
programs stored in system memory 520. Depending on the exact
configuration and type of computing device 510, the system memory
520 may include, but is not limited to, RAM, ROM, EEPROM, flash
memory, CD-ROM, digital versatile disks (DVD) or other optical
storage devices, magnetic cassettes, magnetic tape, magnetic disk
storage or other magnetic storage devices, or other memory
technology.
[0032] System memory 520 typically stores an operating system 522,
such as the WINDOWS.RTM. operating systems from Microsoft
Corporation of Redmond, Wash., suitable for controlling the
operation of the computing device 510. System memory 520 also may
include a document cache 526 in which a client copy 527 of a
document can be stored. Metadata 529 of the document also can be
stored within the client cache 526.
[0033] The system memory 520 also may store one or more software
applications, such as authoring applications 524 for creating and
editing documents. One non-limiting example of an authoring
application 524 suitable for authoring documents in accordance with
the principles of the present disclosure is Word word processing
software from Microsoft Corporation. Other non-limiting examples of
authoring applications include POWERPOINT.RTM. presentation
software and VISIO.RTM. drawing and diagramming software, both also
from Microsoft Corporation. Other software applications can also be
used.
[0034] Computing device 510 also may have input device(s) 530, such
as a keyboard, mouse, pen, voice input device, touch input device,
etc., for entering and manipulating data. Output device(s) 535,
such as a display screen, speakers, printer, etc., also may be
included. These output devices 535 are well known in the art and
need not be discussed at length herein.
[0035] The computing device 510 also may contain communication
connections 540 that allow the device 510 to communicate with other
computing devices, for example, the storage device 420 of FIG. 4,
over a network in a distributed computing environment (e.g., an
intranet or the Internet). By way of example, and not limitation,
communication device media 540 includes wired media such as a wired
network or direct-wired connection, and wireless media, such as
acoustic, RF, infrared and other wireless media.
[0036] Turning now to FIG. 6 is a flow chart setting forth the
general stages involved in a method 600 consistent with an
embodiment of the disclosure for retrieving presence metadata.
Method 600 may be implemented using a computing device 510 as
described in above with respect to FIG. 5. Ways to implement the
stages of method 600 will be described in greater detail below.
Method 600 may begin at starting block 605 and proceed to stage 610
where computing device 510 may receive metadata 529. For example, a
client using computing device 510 (e.g. a client computer) may open
a document (e.g. 150). Opening the document may cause computing
device 510 to receive short-term check out metadata for the
document.
[0037] From stage 610, where computing device 510 received metadata
529, method 600 may advance to stage 620 where computing device 510
may add a transition ID to the metadata 529.
[0038] Once computing device 510 adds the transition ID to metadata
529 in stage 620, method 600 may continue to subroutine 630 where
computing device 510 may write the transition ID to a transition
table stored in cache 526. For example, writing the transition ID
to metadata 529 may indicate more than one client is editing the
document (i.e. switching from a single-client mode to a
multi-client mode) as show in FIG. 7.
[0039] In one example, the transition ID is a unique number, such
as a Globally Unique Identifier (GUID--i.e., a pseudo-random
128-bit number). The transition table is a list of the transition
IDs. The transition table can also include an expiration date for
each transition ID. The expiration date can be used to clear a
transition ID when a client forces creation of a transition ID and
thereupon abandon editing of the document without notification.
Other configurations are possible.
[0040] From subroutine stage 630, where computing device 510 may
write the transition ID to a transition table stored in cache 526,
method 600 may advance to stage 640 where computing device 510 may
ping storage device 120 (e.g. a server) to determine if the
transition ID is in cache 526.
[0041] When the transition ID is not in the cache, computing device
510 may ping the server at regular intervals, and save the document
to the server a plurality of times without incurring any
reads/writes to a database that stores presence information.
[0042] When the transition ID is in the cache, computing device 510
may ping the server to collect a lock table from a database to
identify a new client, and in a separate web service request,
submitting the client's lock information. Computing device 510 may
then delete the transition ID from the transition table.
[0043] Computing device 510 may also submit a client's lock
information. Submitting the client's lock information may include
pinging the server. For example, the computing device can submit
"am I alone" pings to the server, wherein the "am I alone" pings do
not carry lock information. An "am I alone" ping is simply a ping
to the server or other storage device wherein computing device 510
is requesting information to determine if the document is being
edit by another client or if another client had begun editing the
document after the client began editing the document.
[0044] Every time each client downloads presence metadata, the
number of clients in an editing session and the last time each
client updated their presence information (e.g., transition ID,
transition table, database, etc.) may be checked (among other
things), at regular intervals. If the presence information has not
been updated by any client in a configurable window of time, it is
considered a violent exit from the session. Any client who first
observes this exit can delete the client from the presence
information. Further, the delete operation should be a graceful
merge so that any other client who also made the same observation
can re-request the omissions which results in a no-op in the
server.
[0045] If the presence information reflects only one client (which
should be the examining client, i.e., computing device 510), the
following actions may be done to minimize problems associated with
the timing of the change of state of the document: 1) clear-up the
presence table so it reflects the state as a single client mode; 2)
delete the transition ID to the transition table; and 3) start the
"am I alone" pings at regular intervals.
[0046] The transition ID in the transition table indicates another
user has joined the coauthoring session and is in transition back
to multi-user authoring. When the system transitions back to one
client editing, that client starts sending the "am I alone" pings.
The "am I alone" pings returned to the client indicate the client
is alone until another client puts the transition ID back in the
transition table.
[0047] Once computing device 510 pings storage device 120 in stage
640, method 600 may continue to stage 650 where computing device
510 may refresh cache 526.
[0048] For example, computing device 510 may refresh cache 526 by
updating the transition table stored in cache 526. For instance
updating the transition table may include pinging cache 526 to
check for the presence of the transition ID in cache 526. When the
transition ID is not present in cache 526, a determination may be
made to see if cache 526 has been refreshed within a predetermined
time interval. When cache 526 has been refreshed within the
predetermined time interval, a response to the ping may be sent
from cache 526. When cache 526 has not been refreshed within the
predetermined time interval, the transition table corresponding to
the document's content database may be fetched. Once computing
device 510 has refresh cache 526 in stage 650, method 600 may then
end at stage 660.
[0049] FIG. 7 is a flow chart showing example stages of subroutine
630. Subroutine 630 begins at starting block 705 and proceeds to
stage 710 where computing device 510 may determine if the document
is already being used in the multi-client mode. For example,
computing device 510 may determine if the document is in
multi-client mode by checking a database. If computing device 510
determines the document is not in multi-client mode in stage 710,
subroutine 630 may proceed to stage 715 where computing device 510
switch from a single-client mode to a multi-client mode.
[0050] For example, switching from single-client mode to
multi-client mode may be initiated by a second client attempting to
take another short-term lock on the document and seeing that that
the client has already received the document. Switching to
multi-client mode may include computing device 510 receiving the
document and transition ID at cache 526. In this instance computing
device 510 may actually be a second client computing device. After
receiving the transition ID, computing device 510 may write the
transition ID to the transition table, and write to the database
information indicating the second client has joined the editing
session and is now working on the document.
[0051] If computing device 510 determines the document is in
multi-client mode in stage 710, subroutine 630 may continue to
stage 720 where computing device 510 may adds the client as the
"nth" client. For example, adding the "nth" client may include
computing device 510 receiving the document and transition ID, and
writing to the database information indicating the "nth" client has
joined the editing session.
[0052] From stage 715 where computing device 510 switches from
single-client mode to multi-client mode or stage 720 where
computing device 510 adds the "nth" client, subroutine 630 may
advance to stage 730 where computing device 510 may return to stage
640 (FIG. 6).
[0053] Reference may be made throughout this specification to "one
embodiment," "an embodiment," "embodiments," "an aspect," or
"aspects" meaning that a particular described feature, structure,
or characteristic may be included in at least one embodiment of the
present disclosure. Thus, usage of such phrases may refer to more
than just one embodiment or aspect. In addition, the described
features, structures, or characteristics may be combined in any
suitable manner in one or more embodiments or aspects. Furthermore,
reference to a single item may mean a single item or a plurality of
items, just as reference to a plurality of items may mean a single
item. Moreover, use of the term "and" when incorporated into a list
is intended to imply that all the elements of the list, a single
item of the list, or any combination of items in the list has been
contemplated.
[0054] Embodiments of the disclosure may be implemented as a
computer process (method), a computing system, or as an article of
manufacture, such as a computer program product or computer
readable media. The processes (programs) can be implemented in any
number of ways, including the structures described in this
document. One such way is by machine operations, of devices of the
type described in this document. Another optional way is for one or
more of the individual operations of the methods to be performed on
a computing device in conjunction with one or more human operators
performing some of the operations. These human operators need not
be collocated with each other, but each can be only with a machine
that performs a portion of the program.
[0055] The computer program product may be a computer storage media
readable by a computer system and encoding a computer program of
instructions for executing a computer process. The computer program
product may also be a propagated signal on a carrier readable by a
computing system and encoding a computer program of instructions
for executing a computer process. The term computer readable media
as used herein includes both storage media and communication
media.
[0056] Those skilled in the art will appreciate that the disclosure
may be practiced with other computer system configurations,
including hand-held devices, multiprocessor systems,
microprocessor-based or programmable consumer electronics,
minicomputers, mainframe computers, and the like. The disclosure
may also be practiced in distributed computing environments where
tasks are performed by remote processing devices that are linked
through a communications network. In a distributed computing
environment, program modules may be located in both local and
remote memory storage devices. Generally, program modules include
routines, programs, components, data structures, and other types of
structures that perform particular tasks or implement particular
abstract data types.
* * * * *