The invention includes a method of synchronizing objects between first and
second object stores. A synchronization manager in accordance with the
invention maintains a reference store containing identifying data
segments corresponding respectively to a plurality of objects that have
previously been synchronized between the first and second object stores.
An application program that maintains the first object store has
associated interfaces that allow the synchronization manager to compare
and manipulate objects. One such interface allows the synchronization
manager to submit an identifying data segment associated with a
particular object. In response, this interface returns a handle that
corresponds to the submitted identifying data segment. Another interface
accepts a handle that refers to an identifying data segment, and
determines if the object corresponding to the identifying data segment
has been changed in the first object store since the last
synchronization. If it has, the synchronization manager takes steps to
update the second object store. If, on the other hand, the object has
changed in the second object store, application program interfaces allow
the synchronization manager to update the object in the first object
store. Objects are transferred through the synchronization manager in an
arbitrary, application-specific format that is not determined or
understood by the synchronization manager itself.