1 DOCUMENT SYNCHRONIZATION OVER STATELESS PROTOCOLS
In typical document systems, documents are accessed at the Whole document level, such that an entire document is received by a client computer from a server for editing. This requires loW level data associated With the underlying document format to be transmitted from the server to the client computer. Also, incremental document formats have to be garbage collected and defragmented over a netWork connection. Furthermore, locks must be controlled across the netWork. Controlling locks can be complex and fragile task that requires a significant amount of content to be exchanged. Transmitting loW level data, including garbage collection and defragmentation information, as Well as control locks, unnecessarily ties an application to it’ s loW level file format and can be inflexible and lead to inefficiencies.
Example systems and methods described herein relate to file (e.g. document) synchronization and/or loading over a stateless protocol.
According to one aspect, a data structure for storing a document on a first computing device independent of a document format of the document, the data structure includes: a plurality of cells and a plurality of data objects defining content of the document. Each of the cells has a cell identifier that uniquely identifies a particular cell Within the document and is associated With at least one revision. Each data object is associated With one of the cells and has an object identifier that uniquely identifies the data object Within the associated cell, and is configured to communicate With other cells and With objects Within the associated cell. In addition, each of the cells is defined so that each other cell remains unaffected by changes to data objects of the cell.
According to another aspect, a revision manifest of a revision is stored on a computer readable medium of a first computing device. The revision manifest defines a revision representing a state of a cell at a point in time. The revision manifest includes: a plurality of object groups, each object group comprising at least one data object; and a unit of consistency comprising the at least one data object, each unit of consistency being defined so that editing one of the units of consistency does not affect any other unit of consistency.
According to yet another aspect, a method of synchronizing a document on a first computing device, the document broken into cells, each cell being defined by at lease one revision manifest, the method includes: receiving a first revision and at least one cell associated With the document; receiving an update to the first computing device, the update indicating an updated revision identifier associated With each cell associated With the document; retaining the first revision of each cell When the first revision identifier of the cell matches the updated revision identifier of the cell; generating a neW revision of each cell, Wherein generating the neW revision comprises assigning the neW revision a neW revision identifier When the first revision identifier of the cell does not match the updated revision identifier of the cell; deleting any cell not referenced by the root objects; and synchronizing the document by replacing the cells With the neW revision of each cell. The cell identifier includes a globally unique identifier (GUID) and an integer (INT) pair, the GUID being globally unique a scope defining a set of cells and revisions and including root objects, Wherein cells Within the scope are accessible
via the root objects. The cell identifier is associated With a first revision having at least one first revision identifier. Each of the at least one revision identifiers representing a state of the cells at a point it time. The cell includes a scope defining a set of cells and revisions and the scope includes at least one root object. Cells Within the scope are accessible via the root object.
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
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.
FIG. 1 is a schematic block diagram illustrating an example authoring system;
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 units of consistency;
FIG. 3 is a schematic block diagram of unit of consistency;
FIG. 4 is a schematic block diagram of a scope;
FIG. 5 is a schematic block diagram of an example client computing system configured to implement an authoring environment; and
FIG. 6 is a floWchart illustrating an example synchronizing process implemented by an authoring application.
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.
Embodiments of the present disclosure provide an environment in Which a single client can author a document or multiple clients can collaboratively author a document While consuming minimal server and transmission resources. In example embodiments, When a coauthoring capable application is editing a document, the application obtains only pieces of the document. Before the client receives the document pieces, an application’s data model has been partitioned into explicit units of consistency.
In example embodiments described herein, a document is broken into a series of parts, referred to as units of consistency. By default, a document can be partitioned into a single unit of consistency that encompasses the entire document. When specific knoWledge of the document’s structure is knoW, the document can be partitioned into more than one unit of consistency. For instance, in a presentation, such as one created using the POWERPOINT® presentation graph