通过无状态协议的文档同步转让专利

申请号 : CN200980115903.1

文献号 : CN102016835B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : S·P·克拉克M·A·S·S·波斯P·P·贝尔H·萨利巴X·孙

申请人 : 微软公司

摘要 :

各种示例系统、方法、和数据结构针对同步文档。一种示例数据结构包括从第一客户机接收编辑文档的请求,并将短期合格元数据发送给第一客户机以开始编辑会话。该数据结构包括多个单元格以及定义文档的内容的多个数据对象。每一数据对象与单元格中的一个相关联且具有唯一地标识相关联的单元格中的数据对象的、且被配置成与其他单元格以及相关联的单元格内的对象进行通信的对象标识符。另外,单元格中的每一个被如此定义使得每一其他单元格保持不受对该单元格的数据对象的变更的影响。

权利要求 :

1.一种在第一计算设备上同步文档的方法,所述文档被分成单元格,且每一单元格由至少一个修订清单来定义,所述方法包括:接收与所述文档相关联的第一修订和至少一个单元格,所述至少一个单元格包括包含全局唯一标识符和整数对的单元格标识符,所述全局唯一标识符是全局唯一的,所述单元格标识符与包括至少一个第一修订标识符的所述第一修订相关联,所述修订标识符中的每一个表示一时间点处所述单元格的状态,且所述至少一个单元格包括定义单元格和修订的集合的范围且所述范围包括至少一个根对象,其中所述范围内的单元格可经由所述至少一个根对象来访问;

接收对所述第一计算设备的更新,所述更新指示与关联于所述文档的每一单元格相关联的已更新的修订标识符;

当每一单元格的所述第一修订标识符与该单元格的所述已更新的修订标识符匹配时,保留该单元格的所述第一修订;

生成每一单元格的新修订,其中生成所述新修订包括当该单元格的所述第一修订标识符与该单元格的所述已更新的修订标识符不匹配时向所述新修订分配新的修订标识符;

删除所述根对象未引用的任何单元格;以及

通过用每一单元格的新修订替换所述单元格来同步所述文档。

2.如权利要求1所述的方法,其特征在于,生成所述新修订包括对于每一单元格判定该单元格中的每一对象的对象标识符是否匹配已更新的对象标识符。

3.如权利要求2所述的方法,其特征在于,所述已更新的对象标识符定义了对所述文档的修订进行定义且包括包含至少第一数据对象的至少第一对象组的修订清单。

4.如权利要求3所述的方法,其特征在于,所述修订清单指向在先前修订清单中定义的对象组。

5.一种在第一计算设备上同步文档的系统,所述文档被分成单元格,且每一单元格由至少一个修订清单来定义,所述系统包括:用于接收与所述文档相关联的第一修订和至少一个单元格的装置,所述至少一个单元格包括包含全局唯一标识符和整数对的单元格标识符,所述全局唯一标识符是全局唯一的,所述单元格标识符与包括至少一个第一修订标识符的所述第一修订相关联,所述修订标识符中的每一个表示一时间点处所述单元格的状态,且所述至少一个单元格包括定义单元格和修订的集合的范围且所述范围包括至少一个根对象,其中所述范围内的单元格可经由所述至少一个根对象来访问;

用于接收对所述第一计算设备的更新的装置,所述更新指示与关联于所述文档的每一单元格相关联的已更新的修订标识符;

用于当每一单元格的所述第一修订标识符与该单元格的所述已更新的修订标识符匹配时,保留该单元格的所述第一修订的装置;

用于生成每一单元格的新修订的装置,其中生成所述新修订包括当该单元格的所述第一修订标识符与该单元格的所述已更新的修订标识符不匹配时向所述新修订分配新的修订标识符;

用于删除所述根对象未引用的任何单元格的装置;以及

用于通过用每一单元格的新修订替换所述单元格来同步所述文档的装置。

6.如权利要求5所述的系统,其特征在于,用于生成所述新修订的装置包括用于对于每一单元格判定该单元格中的每一对象的对象标识符是否匹配已更新的对象标识符的装置。

7.如权利要求6所述的系统,其特征在于,所述已更新的对象标识符定义了对所述文档的修订进行定义且包括包含至少第一数据对象的至少第一对象组的修订清单。

8.如权利要求7所述的系统,其特征在于,所述修订清单指向在先前修订清单中定义的对象组。

说明书 :

通过无状态协议的文档同步

[0001] 背景
[0002] 在典型的文档系统中,文档在整个文档等级上进行访问,从而使得客户机计算机从服务器接收整个文档来进行编辑。这要求将与底层文档格式相关联的低层数据从服务器传送到客户机计算机。同样,增量文档格式必须通过网络连接来进行无用信息收集和碎片整理。此外,必须跨网络来控制锁。控制锁可以是要求交换大量内容的复杂且脆弱的任务。传送低层数据,包括无用信息收集和碎片整理信息,以及控制锁,不必要地将应用程序绑定到其低层文件格式且可能是不灵活的并导致低效。
[0003] 概述
[0004] 此处描述了与通过无状态协议的文件(例如,文档)同步和/或加载有关的示例系统和方法。
[0005] 根据一个方面,一种用于在第一计算设备上独立于文档的文档格式来存储文档的数据结构,该数据结构包括:多个单元格和定义文档的内容的多个数据对象。单元格中的每一个具有唯一地标识文档中的特定单元格且与至少一个修订相关联的单元格标识符。每一数据对象与单元格中的一个相关联且具有唯一地标识相关联的单元格中的数据对象的对象标识符,并且被配置成与其他单元格以及相关联的单元格内的对象进行通信。另外,单元格中的每一个被如此定义使得每一其他单元格保持不受对该单元格的数据对象的变更的影响。
[0006] 根据另一方面,修订的修订清单存储在第一计算设备的计算机可读介质上。修订清单定义表示在一时间点处单元格的状态的修订。修订清单包括:多个对象组,每一对象组包括至少一个数据对象;以及包括至少一个数据对象的一致性单元,每一一致性单元被如此定义使得编辑一致性单元中的一个不会影响任何其他一致性单元。
[0007] 根据另一方面,一种在第一计算设备上同步文档的方法,文档被断开成多个单元格,每一单元格由至少一个修订清单来定义,该方法包括:接收第一修订和与文档相关联的至少一个单元格;接收对第一计算设备的更新,该更新指示与关联于文档的每一单元格相关联的已更新的修订标识符;当每一单元格的第一修订标识符与该单元格的已更新的修订标识符匹配时,保留该单元格的第一修订;生成每一单元格的新修订,其中生成新修订包括当该单元格的第一修订标识符与该单元格的已更新的修订标识符不匹配时向新修订分配新修订标识符;删除根对象未引用的任何单元格;以及通过用每一单元格的新修订替换单元格来同步文档。单元格标识符包括全局唯一标识符(GUID)和整数(INT)对,GUID在定义单元格和修订的集合且包括根对象的范围内是全局唯一的,其中该范围内的单元格可经由根对象来访问。单元格标识符与具有至少一个第一修订标识符的第一修订相关联。至少一个修订标识符中的每一个表示一时间点处单元格的状态。单元格包括定义单元格和修订的集合的范围且该范围包括至少一个根对象。该范围内的单元格可经由根对象来访问。
[0008] 提供本概述以便以简化形式介绍将在以下详细描述中进一步描述的一些概念。本概述并非旨在标识出所要求保护的主题的关键特征或必要特征。本概述亦非旨在用于限制所要求保护的主题的范围。
[0009] 附图描述
[0010] 参考附图描述了非限制性的和非穷尽的实施例,其中除非另外指定,否则在各个视图中相同的附图标记指示相同的部分。
[0011] 图1是示出示例创作系统的示意性框图;
[0012] 图2是示出图1的创作系统的示意性框图,其中存储在第一计算设备上的文档可包括一致性内容单元;
[0013] 图3是一致性单元的示意性框图;
[0014] 图4是范围的示意性框图;
[0015] 图5是被配置成实现创作环境的示例客户机计算系统的示意性框图;以及[0016] 图6是示出创作应用程序所实现的示例同步过程的流程图。
[0017] 详细描述
[0018] 在以下详细描述中,参考了构成了详细描述的一部分并作为说明示出了各具体实施方式或示例的附图。虽然将在结合在计算机系统上的操作系统上运行的应用程序执行的程序模块的一般上下文中描述本发明,但本领域的技术人员将会认识到,本发明也可结合其他程序模块实现。可结合此处所描述的实施例并且可利用其他实施例而不背离本发明的精神或范围。由此,以下详细描述并不旨在限制,且本公开的范围由所附权利要求及其等效方案所定义。
[0019] 本公开的各实施例提供了其中单个客户机可创作文档或多个客户机可协作创作文档同时消耗最少服务器和传输资源的环境。在示例实施例中,当有联合创作能力的应用程序正在编辑一文档时,应用程序只获得该文档的某些片段。在客户机接收文档片段之前,应用程序的数据模型已经被划分成显式一致性单元。
[0020] 在此处描述的示例实施例中,文档被分成被称为一致性单元的一系烈部分。默认地,文档可被划分成涵盖整个文档的单个一致性单元。当已知文档的结构的具体知识时,文档可被划分成多于一个一致性单元。例如,在诸如使用 演示图形程序来创建的演示等的包括多于一张幻灯片的演示中,可被划分成多个一致性单元,其中每一一致性单元包括一张幻灯片。例如,包括十张幻灯片的演示可被划分成十个一致性单元。
[0021] 在上面的示例中,多于或少于十个一致性单元是可能的。例如,每一幻灯片可包括页脚且每一页脚可以是一个一致性单元。因此,包括十张幻灯片的演示可能具有20个一致性单元。同样,默认地,整个文档可以是一个一致性单元。
[0022] 有两个实现增量的主要方法。第一,增量可通过“diff”算法显式地计算。例如,所使用的算法可以是在WINDOWS平台中找到的“远程差异压缩”(RDC)库。该算法方法具有数据可被认为是不透明的且可不需要结构或结构性知识的优点。这对于其中文档的格式是固定的、未知的或无法变更的场景是理想的。固定的、未知的或无法变更的文件格式的非限制性示例包括文本文件、位图图像和音频文件。
[0023] 然而,对这种灵活性的折衷是算法无法很好地跟踪的变更所引起的高计算成本和传输低效。这在数据未被设计成高效同步时可能发生。即,数据不具有“显式的”增量或好的变更位置。
[0024] 第二,增量可被细分成能与预期的变更相当精确地对齐的称为“颗粒”的更小的变更单元。增量因而是在两个状态之间可以不同的颗粒集。这种方案在计算上较便宜且当数据能有效地被细分成与预期的更新精确对齐的小变更单元时具有变得更高效的潜力。
[0025] 两种方法可独立地或组合地使用。例如,当组合地使用两种方法时,文档访问模型可提供一致性单元内的任意粒度等级。通过显式增量方案,同步引擎可利用任意粒度等级来提高效率。
[0026] 现在参考附图,图1示出了具有示出本发明的各示例方面的特征的示例创作系统100。创作系统100包括存储文档150的主副本的存储设备120。在一实施例中,存储设备
120可包括但不限于,服务器、客户机计算机、或其他计算设备。在另一实施例中,存储设备
120可包括一个或多个存储设备(例如,计算设备的网络)。
[0027] 创作系统100还包括通信耦合到存储设备120的一个或多个客户机计算设备110A、110B、110C、110D。客户机计算设备中的每一个可通过接收对一个或多个一致性单元
155的更新并编辑一致性单元155中的数据对象来编辑文档150。当客户机计算设备定期向存储设备120发送要与其他客户机计算设备共享的更新时,同步一致性单元155。
[0028] 如此处所使用的术语,客户机计算设备包括获得从文档的主副本中创作的一致性单元的任何计算设备。客户机计算设备可与存储设备120不同,或者可包括在存储设备120上实现的不同客户机账户。在一实施例中,担当用于一个文档的存储设备120的计算设备可以担当用于不同文档的客户机计算设备,反之亦然。
[0029] 在所示示例中,四个客户机计算设备110A、110B、110C和110D通信耦合到存储设备120。然而,在其他实施例中,任意数量的计算设备可以耦合到存储设备120。在所示示例中,每一客户机计算设备110A、110B、110C、110D都可向存储设备120发送客户机计算设备的客户所生成的更新,并且可从存储设备120请求供编辑/创作的其他一致性单元。在一实施例中,存储设备120可以是服务器计算设备而客户机计算设备110A、110B、110C、110D可以是客户机计算设备。其他系统配置是可能的。例如,在替换实施例中,可以使用多个服务器计算设备。
[0030] 如图2中所示,存储在存储设备120上的文档150可包括被划分成一致性单元155A、155B的内容152A和152B。客户机计算设备110上的创作应用程序130处理并操纵文档150的一致性单元155A、155B的内容。一般地,客户机计算设备110A可与客户机计算设备110B所提供的更新分开地同步对内容152A的更新。因为对不同一致性单元做出更新,所以将不存在一致性单元之间的合并冲突。
[0031] 参考图3,一致性单元155A(即数据结构)被示为包括一致性单元155A的多个修订305、310和315。单元格是具有类似属性的数据对象组。例如,单元格可包含一组文本、一组图片等。单元格305、310和315中的每一个包括唯一地标识文档150中的特定单元格的单元格标识符320(仅为单元格305示出)。单元格305、310和315中的每一个可使用单元格标识符与文档150中的至少一个其他单元格进行通信。同样,单元格305、310和315中的每一个与至少一个修订325(仅为单元格305示出)相关联。注意,单元格的状态由包含数据对象组的状态的修订来描述。
[0032] 每一单元格可包括含有全局唯一标识符(GUID)和整数(INT)对的单元格标识符。每一单元格还可被包括在定义单元格和修订的集合的文件中。该范围还可包括至少一个根对象。该范围内的单元格可经由根对象来访问。单元格标识符可与包括至少一个第一修订标识符的第一修订相关联。至少一个修订标识符中的每一个可表示一时间点处单元格的状态。注意,术语文件用于表示命名的存储“实体”且不一定是诸如文本文件或jpeg图像等的物理文件。
[0033] 一致性单元155A包括定义文档150的内容的多个数据对象330、335、340和345。一般地,数据对象可以是任意二进制数据。数据对象的非排他性示例包括文本、图片、表、超链接、电影文件、音频文件等。每一数据对象330、335、340和345与单元格305、310和315中的一个相关联,且具有唯一地标识相关联的单元格中的数据对象的对象标识符。例如,对象标识符350唯一地标识单元格305中的数据对象330。单元格标识符、对象标识符和修订标识符可包括GUID和INT对。此外,GUID可以是在单元格内全局唯一的。
[0034] 每一数据对象330、335、340和345被配置成与其他单元格和相关联的单元格中的其他对象进行通信。例如,数据对象330可与引用单元格310和315进行通信但不与包含在单元格310和315中的对象进行通信。这帮助确保甚至一个单元格独立于另一单元格变更情况下的一致性。一般地,对象可引用相同单元格中的任何其他对象以及其他单元格,但不可引用其他单元格中的对象。另外,单元格305、310和315中的每一个被如此定义使得每一其他单元格保持不受对该单元格的数据对象的变更的影响。同样,每一单元格305、310和315能够引用范围内的至少一个单元格。范围可定义单元格和修订的集合。见图4的范围的示意。
[0035] 在划分期间,数据对象330、335、340和345中的每一个可被分组在至少一个对象组中。对象组的使用最小化了单独地跟踪对象的开销。在所有对象相对较大的场景中,由于开销小,对象组将是不必要的。然而,在对象可以任意小的场景中,使用对象组来控制开销。对象组还允许取得对象(即,变更单元)并将其一起分组到更大的单元中。在划分期间,需要甚至在创建组时试图并维持“变更单元”特性。
[0036] 存储设备120可基于各种因素将数据对象330、335、340和345分类到对象组中,如每一数据对象由客户机计算机110更新的概率(即,基于使用的试探)。例如,对象可被分组到若干类别中。类别的非限制性示例包括:1)已知要频繁地变更的对象类型(例如,文档元数据属性,诸如单词计数和最后修改时间);2)已知要非常频繁地变更的对象类型(例如,图片);3)变更的频率未知的对象;以及4)已经频繁地变更的对象(例如,用户已经疯狂似地修改的列表的列表结构)。
[0037] 另外,存储设备120可基于每一数据对象的大小将数据对象330、335、340和345分类到对象组中。例如,大小可以是对于分类算法的输入。如果对象被认为是大的,则跟踪该对象的开销,因为单个对象变得不重要。在考虑益处的时候这尤其正确(即,这帮助阻止不必要地取得或同步对象)。如果对象相对于对象组的开销是非常小的,则对象可被分组,而不管对象多久变更一次。
[0038] 如上所述,每一单元格305、310和315能够引用范围内的至少一个单元格且范围可定义单元格和修订的集合。图4示出范围400的示意性框图。范围400包括根单元格405、单元格410和无用信息单元格415。例如,根单元格405包括修订420、425和430。修订的一个示例可包括一致性单元155A的最后自动保存的实例,即,在最后变更之前的文件状态。例如,修订可包括在文本被添加(修订一)之前的文本域的状态。如果文本被添加到文本域,则可以创建新的修订(修订二)。因此,“撤销”操作将从修订二回退到修订一。
同样,每一单元格可包括不同数量的修订。例如,单元格405包括两个修订(修订435和
440),而无用信息单元格包括一个修订(修订445)。
[0039] 单元格修订通过将文档划分成允许复制(或更新)单元比整个文档小得多的多个一致性单元来实现。使用单元格修订允许更快地看见变更。在部分同步(即,同步一致性单元对比同步整个文档)的情况中,划分允许看见以其他方式不能看见的更新。有效的划分还允许合并应用程序以使其运行较少次数。例如,根据定义,冲突只有在变更发生在同一一致性单元中时才可能发生,且不同一致性单元中的任何其他变更不能造成冲突,且同步应用程序可在不需要合并的情况下运行。另外,一致性单元可以形成增量加载/保存操作的有效基础。当与应用程序完全地集成时,加载和同步场景更易于响应且可以创建新的共享/协作特征。
[0040] 为了维持一致性单元中的一致性,所有更新需要保证是一致的。这需要将潜在不一致的更新一起组成批来形成一致的更新,即事务。子文件访问应用程序接口(API)可通过事务来执行更新而没有非受控范围等级字节访问。
[0041] 为了有效的同步和复制,可以在一致性单元等级(即,划分)处使用并执行子文件版本化。在其最简单的形式中,这可仅仅涉及向每一划分分配只要对该划分做出变更就改变的GUID。
[0042] 可以通过过渡形式的新版本在一致性单元等级处做出更新。同步可涉及在客户机和服务器之间传送新版本(即状态)。然而,更新通常是小的且基于客户机和服务器可能都已经拥有的某些先前状态。传送差或增量可利用这点来使得同步更高效。
[0043] 每一修订可包括任意数量的数据对象。例如,修订425具有三个数据对象(数据对象450、455和460)。可以为单元格的每一修订创建修订清单470。修订清单470可指示包含在修订中的对象的根集、到其他修订清单的依赖关系/引用、以及对象组(即,对象如何被安排到对象组中)。每一修订清单470可指向在先前修订清单中定义的其他对象组。
[0044] 修订清单470可定义表示在一时间点处文档150的状态的修订。修订清单470包括至少一个对象组且每一对象组包括至少一个数据对象。修订清单470还描述了单个修订,其根据定义只可用于描述单个单元格(是一致性单元)中的对象的状态。
[0045] 第二计算设备(例如,存储设备120)可部分地或完全地确定哪些数据对象被安排到哪个对象组中。第二计算设备还可基于每一对象被更新的频率来定义每一对象组。另外,第二计算设备可基于对象的大小来定义每一对象组。同样,第一计算设备(例如,客户机计算机110)可以影响哪些数据对象被安排到哪些对象组中。
[0046] 现在参考图5,更详细地示出了客户机设备110A。客户机设备110A可以是个人计算机、服务器计算机、笔记本计算机、PDA、智能机、或任何其他这种计算设备。
[0047] 在图5中,示例客户机计算设备110A通常包括用于执行存储在系统存储器520上的应用软件和程序的至少一个处理单元515。取决于计算设备110A的确切配置和类型,系统存储器520可包括但不限于,RAM、ROM、EEPROM、闪存、CD-ROM、数字多功能盘(DVD)或其他光存储设备、磁带盒、磁带、磁盘存储或其他磁性存储设备、或者其他存储器技术。
[0048] 系统存储器520通常存储适于控制计算设备110A的操作的操作系统522,诸如来自华盛顿州雷蒙德市微软公司的 操作系统。系统存储器520还可包括其中可以存储文档的一致性单元527的文档高速缓存526。文档的元数据529也可被存储在客户机高速缓存526中。
[0049] 系统存储器520还可存储用于创建和编辑文档的一个或多个软件应用程序,如创作应用程序130。适于根据本发明的原理来创作文档的创作应用程序130的一个非限制性示例是来自微软公司的 文字处理软件。创作应用程序的其他非限制性示例包括全来自微软公司的 演示软件、 绘图和作图软件、以及
因特网浏览器。也可使用其他软件应用程序。
[0050] 计算设备110A还可具有用于输入和操纵数据的输入设备530,诸如键盘、鼠标、笔、语音输入设备、触摸输入设备等。还可包括输出设备535,诸如显示屏、扬声器、打印机等。这些输出设备535在本领域中公知且无需在此处详细讨论。
[0051] 计算设备110A还可包含通信连接540,其允许设备110A通过分布式计算环境中的网络(例如,内联网或因特网)与其他计算设备(例如,图1的存储设备120)进行通信。作为示例而非限制,通信设备介质540包括有线介质,诸如有线网络或直接线连接,以及无线介质,诸如声学、RF、红外线和其它无线介质。
[0052] 图6是阐明根据本发明一实施例的用于在对一致性单元做出变更之后同步文档的方法600中涉及的各概略阶段的流程图。方法600可使用以上参考图5描述的计算设备110A来实现。以下将更详细地描述实现方法600的各阶段的方式。
[0053] 方法600在开始框605处开始并行进至阶段610,在那里计算设备110A可接收修订和该修订所应用到的任何单元格。例如,可以接收修订集以及关于哪些单元格应该将其状态设为哪些修订的相应指令。换言之,在同步时接收下列内容:1){修订}-修订集;2){(单元格,修订)}-描述了“已修改”的单元格以及就所接收的修订而言其新状态是什么的单元格id、修订id元组的集合。“已修改”意味着变更了该修订中的某条信息。例如,使用计算设备110A的客户机(例如,客户机计算机)可接收来自演示的幻灯片或来自文字处理文档的页眉/页脚信息。一旦已经应用了变更,则存储可以省去不能通过在根单元格处开始并遍历对象/单元格引用来“发现”的任何单元格和/修订。“发现”指的是存储可以做出以摆脱客户机因为无法访问数据而不再使用的无关数据的一种优化。例如,一旦应用了变更,则存储可省去不再从根单元格直接或间接引用的任何单元格和/或修订。
[0054] 从阶段610,在那里计算设备110A接收修订以及该修订所应用到的任何单元格,方法600可前进至阶段620,在那里计算设备110A可接收对一致性单元527的更新。更新可指示与关联于一致性单元527或文档150的每一单元格相关联的已更新的修订标识符。例如,计算设备110A可正在运行 演示图形程序,而一致性单元527可以
是幻灯片。对幻灯片的更新可在用户编辑幻灯片时接收。
[0055] 一旦在阶段620中计算设备110A接收对一致性单元527的更新,方法600可继续至阶段680,在那里计算设备110A判定是保留第一修订还是生成新的修订。当计算设备110A确定要保留第一修订时,方法600继续至阶段630,在那里计算设备110A可保留第一修订。当单元格的第一修订标识符与单元格的已更新的修订标识符匹配时,可以保留第一修订。当第一修订标识符可匹配已更新的修订标识符的一个示例是当做出修订然后撤销该修订时。例如,用户可以在幻灯片中键入单词然后删除新键入的单词。因为幻灯片没有变更所有没有生成新修订的需要。
[0056] 当计算设备110A判定要创建新的修订时,方法600从阶段680继续至阶段640,在那里计算设备110A生成新的修订。生成新的修订可包括当单元格的第一修订标识符与单元格的已更新的修订标识符不匹配时向新的修订分配新的修订标识符。生成新的修订还可包括为每一单元格判定是否单元格中的每一对象的对象标识符与已更新的对象标识符匹配。已更新的对象标识符可定义修订清单。修订清单可定义一致性单元527或文档的修订,且可包括包含至少第一数据对象的至少第一对象组。修订清单还可指向先前的修订清单。例如,在用户编辑期间,应用程序跟踪作为用户编辑的一部分被修改的对象组。然后使用标准GUID生成算法来创建新的修订ID。然后将对象集打包到对象组中(如上所讨论的),然后从表示新修订的新修订清单引用对象组和先前的修订清单。
[0057] 一旦计算设备110A在阶段640中生成新的修订,方法600可继续至阶段650,在那里计算设备110A可将根对象不再引用的任何单元格作为无用信息来收集。无用信息收集包括确定无法通过在根单元格处开始遍历对象/单元格引用来“发现”的对象。因为无法访问已经作为无用信息被收集的单元格,所以不会再需要它们且可通过删除它们来释放盘空间/资源。
[0058] 一旦计算设备110A在阶段650中删除根对象不再引用的任何单元格,方法600可继续至阶段660,在那里计算设备110A可同步文档150或一致性单元527。例如,计算设备110A可通过用每一单元格的新修订替换现有单元格来同步文档。一旦计算设备110A在阶段660同步了文档150或一致性单元527,方法600随后可在阶段670处结束。
[0059] 本说明书通篇引述的“一个实施例”、“一实施例”、“各实施例”、“一个方面”、或“各方面”意指特定的所描述的特征、结构或特性包括在本发明的至少一个实施例中。因此,对这样短语的使用可指的是一个以上的实施例或方面。另外,在一个或多个实施例或方面中,可以用任何合适的方式来组合所描述的特征、结构或特性。此外,对单个项的引用可意味着单个项或多个项,正如对多个项的引用可意味着单个项一样。此外,在合并到列表中时对术语“和”的使用旨在暗示列表的所有元素、列表的单个项、或已经构想的列表中的项的任意组合。
[0060] 本发明的实施例可被实现为计算机进程(方法)、计算系统或制品,诸如计算机程序产品或计算机可读介质。这些过程(程序)可以用任何数量的方式,包括本文中所描述的结构来实现。一种此类方式是通过本文中描述的类型的设备的机器操作。另一可任选的方式是结合一个或多个人类操作者执行该方法的各个操作中的某一些来在计算设备上执行这些操作中的一个或多个。这些人类操作者无需彼此同在一处,而是其每一个可以仅与执行程序的一部分的机器同在一处。
[0061] 计算机程序产品可以是计算机系统可读并编码了用于执行计算机过程的指令的计算机程序的计算机存储介质。计算机程序产品还可以是计算系统可读并编码了用于执行计算机过程的指令的计算机程序的载体上的传播信号。如此处所使用的术语“计算机可读介质”包括存储介质和通信介质两者。
[0062] 本领域的技术人员可以理解,本发明方法可以使用其它计算机系统配置来实现,包括手持式设备、多处理器系统、基于微处理器或可编程消费电子产品、小型计算机、大型计算机等。本发明也可以在其中任务由通过通信网络链接的远程处理设备执行的分布式计算环境中实现。在分布式计算环境中,程序模块可以位于本地和远程存储器存储设备中。一般而言,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、组件、数据结构和其他类型的结构。