基于web的多用户协作的制作方法

文档序号:6593109阅读:239来源:国知局
专利名称:基于web的多用户协作的制作方法
基于web的多用户协作背景出于各种原因,在地理上彼此分开的不同用户可能希望就文档进行协作。先前用 于方便这种类型的远程协作的技术通常涉及使这些不同用户在远程工作站上安装合适的 特征丰富(richly-featured)的客户端。概述描述了用于基于web的多用户协作的工具和技术。这些工具可提供使用户能够使 用各自的浏览器来就文档进行远程协作的方法。这些方法可将给定文档的各部分的表示发 送到浏览器,并将文档的各部分与特定用户相关联。浏览器可接收如由用户提供的命令的 表示,并且可确定是否在浏览器处执行命令。这些方法还可包括从浏览器接收对文档的各 部分的修订,以及将文档的这些部分存储在被配置成存储相对新近变更的内容的存储区域 中。上述主题也可被实现为方法、计算机控制装置、计算机进程、计算系统或诸如计算 机可读介质等制品。通过阅读下面的详细描述并审阅相关联的附图,这些及各种其他特征 将变得显而易见。提供本概述是为了以简化的形式介绍将在以下详细描述中进一步描述的一些概 念。本概述并不旨在标识所要求保护的主题的关键特征或必要特征,也不旨在将本概述用 来限制所要求保护的主题的范围。此外,所要求保护的主题不限于解决在本发明的任一部 分中提及的任何或所有缺点的实现。附图简述

图1是示出用于提供基于web的多用户协作的系统或操作环境的组合的框和流程 图。图2是示出涉及启动如图1所示的协作过程的组件和数据流的组合的框和流程 图。图3是示出用于启动对某一文档的协作工作(例如,编辑)的过程的流程图。图4是示出用于在给定浏览器处启动协作的组件和流程的组合的框和流程图。图5是示出用于处理协作用户对文档作出的修订的组件和流程的组合的框和流 程图。图6是示出用于处理由浏览器报告的修订的过程的流程图。图7是示出浏览器可提供的用以处理对由多个用户协作编辑的内容的修订的组 件和数据流的组合的框和流程图。图8是示出用于接收并处理来自浏览器的修订的服务器侧组件和数据流的组合 的框和流程图。图9是示出用于提供协作客户机服务的服务器侧组件的框图。详细描述下面的详细描述涉及用于基于web的多用户协作的技术。尽管在结合计算机系统 上的操作系统和应用程序的执行而执行的程序模块的一般上下文中提出了此处描述的主到,其他实现可以结合其他类型的程序模块来执行。一般而 言,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、组件、数据结构和 其他类型的结构。此外,本领域技术人员将明白,可以利用其他计算机系统配置来实施此处 描述的主题,这些计算机系统配置包括手持式设备、多处理器系统,基于微处理器的或可编 程消费电子产品、小型计算机、大型计算机等等。在下面的详细描述中,将参考构成本发明的一部分的附图,并且在附图中作为说 明示出了各具体实施例或示例。现在参考附图(其中若干附图中相同的标号表示相同的元 素),将描述用于访问和更新结构化数据元素的多客户机协作的工具和技术的各方面。图1示出了在100处概括地表示的用于提供基于web的多用户协作的系统和操作 环境。这些系统100可包括一个或多个服务器系统102,且本说明书的实现包括任何数量 的前端和/或后端服务器,如以下更详细地描述的那样。服务器可包括一个或多个处理器 104,这些处理器可具有被选为适于特定实现的特定类型或架构。处理器104可以耦合到被 选为与处理器104兼容的一个或多个总线系统106。服务器102还可包括耦合到总线系统106的计算机可读存储介质108的一个或多 个实例。这些总线系统能使处理器104能够将代码和/或数据读取到计算机可读存储介质 108或从计算机可读存储介质108中读取代码和/或数据。介质108可表示使用包括但不 限于半导体、磁性材料、光学等任何合适的技术来实现的存储元件。介质108可包括存储器 组件,无论其被归类为RAM、ROM、闪存、还是其他类型,并且还可表示硬盘驱动器。存储介质108可包括指令的一个或多个模块,这些指令在被加载到处理器104中 并被执行时,使得服务器102执行用于方便基于web的多用户协作的各种技术。更具体而 言,存储介质108可包括向多个客户机系统提供协作客户机服务110的指令的模块。图1 在112a和112η处提供了这样的客户机系统的两个示例(统称为客户机系统112)。然而, 本说明书的实现可包括多个客户机系统。存储介质108可包含文档存储114的一个或多个实例。虽然文档存储的进一步细 节在下文中提供,但总而言之,该文档存储容纳或包含多个客户机系统可对其进行协作编 辑或创建的文档。尽管图1示出了文档存储114和协作客户机服务110的软件驻留在相同 的存储介质108上的情形,但该示例只是为了易于说明而提供的,而不是为了限制可能的 实现。特别注意,在某些情况下,文档存储和协作客户机服务可以驻留在分开的介质和/或 分开的系统或物理箱上。更详细地转向协作客户机服务110,这些服务可方便服务器102和客户机系统112 之间的协作流。图1提供了协作流的两个示例,协作流116a表示服务器102和客户机系统 112a之间的数据和过程流,而协作流116N表示服务器102和客户机系统112η之间的数据 和过程流。更详细地转向客户机系统112,这些客户机系统可包括各自的处理器118a和 118n(统称为处理器118),这些处理器可具有或不具有与处理器104相同的类型和架构。 总线系统120a和120η (统称为系统120)可以分别耦合到处理器118a和118η,如图1所 示。这些总线系统120可以在类型和架构方面与其对应的处理器118兼容,并且可具有或 不具有与服务器102上的总线系统106相同的类型和架构。计算机可读存储介质122a和 122η (统称为存储介质122)的各个实例可包含浏览器软件124a和124η (统称为浏览器
5124)。如此处所描述的,客户机系统112和服务器系统102可以协作以使得各个终端用 户126a和126n(统称为终端用户126)能够就编辑和/或创建来自文档存储114的文档 (整体地或部分地)进行协作。在某些情况下,不同的终端用户126可协作编辑给定文档的 相同部分。在其他情况下,不同的终端用户126可就给定文档的不同部分进行协作。服务器系统102和各个客户机系统112可通过在128处概括地表示的一个或多个 合适的网络来彼此通信。这些网络128可采取任何合适的形式,无论被表征为全球、地区、 本地、个人、还是其他类型的网络。服务器系统和客户机系统可包括如适于与网络128接口 的任何网络适配器、硬件、软件、协议栈等,但这些特征为了清楚和简明起见从图1中省略。如将在下文中更详细地描述的,协作客户机服务110可使用户126能够使用浏 览器来在编辑或创建文档的至少各部分时进行协作。因为用户126能够使用浏览器, 所以客户机系统112可避免安装额外的客户机软件以使用户能够在协作体验中畅游 (dissipate)。协作客户机服务110可通过普遍存在的浏览器来向用户126提供丰富的客 户机体验。更具体而言,协作客户机服务可使用户能够访问各种类型的终端用户功能,包括 但不限于文字处理、数据库管理、电子表格管理、数据共享、电子笔记本能力等。为了启用这 些用户体验,服务器端处的协作客户机服务可转换成/自由执行上述功能中的任一个的特 征丰富的客户机所使用的任何本机格式。图1中用来描绘服务器和客户机系统的图形元素只是为了方便说明而选择的,并 且不是为了限制此处的描述的可能的实现。更具体而言,图1示出了服务器系统102是可能 由不止一个客户机系统共享的集中式计算系统的示例。客户机系统112可表示台式系统、 膝上型或移动计算系统、智能电话、启用无线的个人数字助理(PDA)或其他合适的系统。然 而,此处的描述还构想其他形式的服务器和/或客户机系统,包括但不限于图1所示的那些 示例。在描述了图1所示的系统和操作环境后,本讨论现在继续至对涉及启动协作过程 的组件和流程的描述。该讨论现在用图2给出。图2示出了在200处概括地表示的涉及启动如图1所示的协作过程的组件和数据 流。为了易于引用而非限制,图2可从先前的附图带入某些附图标记以指代类似项目。例 如,图2带入来自图1的协作客户机服务110、文档存储114、网络128、浏览器124和用户 126的表示。更详细地转向文档存储114,该文档存储可实现可用于客户机系统和终端用户的 协作的文档模型。更具体而言,这些模型可促进在这些协作工作期间提高效率并优化。例 如,某些文档模型可将文档的某些语义片段分配给此处被称为单元格的构造。另外,此处所 描述的另一构造是修订,修订是在特定时刻拍摄的单元格的快照,提供该单元格在该时间 点处的表示。例如,给定文档中的各个页面可使用具体的单元格来表示。进而,具体的修订 可被细分成表示对应于该单元格的内容的各具体的部分或方面的一个或多个对象。例如, 对象可包括出现在给定页面中的段落或图像、出现在给定列表中的项目符号等。图2在202处示出了修订结构的示例,并且可以理解,各实现可以在适当时包括任 何数量的单元格结构以表示一个或多个文档。进而,给定修订结构可包括一个或多个对象, 且图2在204a和204η处示出了对象的示例(统称为对象204)。具体的对象可由对应的ID来标识。这些对象可以指向同一单元格中的其他对象,或者可以指向其他单元格中的对象。协作客户机服务110可发送来自给定的某一文档的一个或多个修订以供不同的 终端用户126经由浏览器124来协作。例如,协作客户机服务110可确定不同的终端用户 对给定文档中的哪些修订感兴趣,并且然后可发送这些修订以便在浏览器上向这些终端用 户显示。图2在206a处表示了发送到浏览器124a以便于用户126a交互的修订的示例,在 206b处表示了发送到浏览器124b以便于用户126b交互的修订的示例,在206η处表示了发 送到浏览器124η以便于用户126η交互的修订的示例。协作客户机服务110可确定要将给定文档的哪些具体的修订206分发给各个客户 机浏览器。例如,协作客户机服务最初可向浏览器发送包含给定文档中的所有页面的名称 的导航页面,以及仅仅首页的内容。在浏览器处,不同的用户然后可点击他们各自的导航页 面,并选择他们想要查看和编辑哪些页面。协作客户机服务然后可将所选页面的内容下载 到各个浏览器。例如,不同的用户126可滚动到给定文档中的相同或不同页面。在该示例 中,一旦协作客户机服务确定不同的用户希望编辑的页面,客户机服务就可从文档存储114 中获取对应于这些页面的那些修订208。进而,协作客户机服务可将这些修订分发给合适的 用户,如206a、206b和206η(统称为分发的修订206)所示。在不同的情形中,协作客户机服务不仅可分发由某一用户正在编辑的给定页面, 而且还可分发出现在该文档中的该给定页面之前和/或之后的特定数量的页面。通过提供 特定数量的“前导”或“后继”页面,协作客户机服务可使这些用户能够在不被发送额外的 修订的情况下滚动通过若干连续页面。如将在下文中更详细地描述的,单元格模型可允许文档存储方便不同终端用户 (例如,126)之间的更高效的协作。例如,文档的修订表示通常比作为整体的文档小得多。如将在下文中更详细地描述的,文档的单元格模型可允许文档存储方便不同终端 用户(例如,126)之间的更高效的协作。例如,文档的基于修订的表示通常比作为整体的文 档小得多。由此,与将整个文档发送到不同的协作用户和客户机系统相比,协作客户机服务 可通过发送这些修订表示来减少网络资源消耗并节省网络带宽。一旦协作客户机服务已向浏览器分发具体的修订206,这些服务就可存储在210 处概括地表示的协作信息。例如,该协作信息可指示已经向哪些具体用户分发了哪些具体 修订。协作客户机服务可将该信息存储在服务器侧修订存储212中,该存储可包含不同用 户126的表示214a和214m(统称为用户表示214)。进而,用户表示214可指示已经向具体 用户分发了哪些修订,如216a和216m所示(统称为修订表示216)。如将在下文中更详细 地描述的,服务器侧修订存储中的这些条目可使得协作客户机服务能够确定由某些用户作 出的哪些修订可能与其他用户相关。在图2中描述了涉及启动各个客户机系统和用户之间的协作的组件和流程之后, 本讨论现在继续至对执行以启动对某一文档的协作工作的处理流程的描述。该描述现在用 图3来提供。图3示出了在300处概括地表示的、用于启动对某一文档的协作工作(例如,编 辑)的处理流程。为了易于引用而非限制,图3可从先前的附图带入某些附图标记以指代 类似项目。例如,图3从先前附图带入协作客户机服务110的表示。虽然处理流程300结
7合这些协作客户机服务来描述,但注意,处理流程300的实现还可由其他组件或服务来执 行而不背离本说明书的范围和精神。更详细地转向处理流程300,框302概括地表示标识一个或多个具体用户对给定 文档中的哪些单元格感兴趣。例如,框302可包括将给定文档中的页面的名称连同该文档 中的首页的内容一起发送到多个协作用户。这些用户然后可选择他们希望查看的页面的名 称。框302可包括提供相对于某一用户感兴趣的给定单元格的某种程度的前导和/或后继。 回想上文对文档的单元格模型的讨论,例如,某些单元格可表示这些文档中的页面。框304概括地表示获取框302中所标识的感兴趣的修订。例如,框304可包括从 包含内容的文档存储中获取感兴趣的修订,各个不同的用户可使用此处所描述的工具和技 术来就该内容进行协作。图2在114处提供了这一文档存储的示例,并在208处表示单元 格的示例。框306概括地表示将所获取的感兴趣的修订发送到某些用户。例如,假设三个不 同的用(例如,用户126a、126b和126η)户正在就如图2所示的给定文档进行协作,这些用 户可表现出对该给定文档的相同或不同部分的兴趣。因此,框306可包括将给定文档的适 当部分的修订表示发送到这些不同的用户(例如,206a、206b和206η)。框308概括地表示将某些用户与这些用户正在操作的单元格相关联。例如,框308 可包括将某些用户的表示(例如,图2中的214)与其修订已被提供给这些用户(例如,图 2中的修订表示216)的单元格相关联。框310概括地表示存储框308中所定义的关联。例如,框310可包括更新服务器 侧修订存储(例如,212)以存储协作用户和这些用户正就其进行协作的单元格之间的关联 或关系,如图2在214和216处所表示的。在描述了用于启动对某一文档的协作工作的处理流程300后,本讨论现在继续至 对可出现在浏览器侧以启动该协作的组件和流程的更详细的描述。该讨论现在用图4给
出ο图4示出了在400处概括地表示的、可出现在浏览器侧以启动给定客户机系统处 的协作的组件和流程。为了易于引用而非限制,图4可从先前的附图带入某些附图标记以 指代类似项目。例如,图4从先前附图带入网络128、分发的单元格206、浏览器124和用户 126。更详细转向图4,客户机侧复制管理器402可通过网络128从服务器102接收分 发的修订206。这些修订206可表示最初呈现给用户126的页面,或者可表示其他协作用 户对这些单元格作出的修订。出于描述图4的目的,假设单元格206表示最初通过浏览器 124呈现给用户126的页面。一般而言,复制管理器402可以在浏览器和服务器之间上传和下载对单元格的修 订。复制管理器还可以在适当时在网络和浏览器之间变换协议。在图4中,在206处表示 的修订被假定为采用适于网络传输的协议,而在404处表示的修订被变换为适于供浏览器处理。复制管理器402可将修订404转发到客户机侧修订存储406。一般而言,修订存储 可管理和存储针对单元格206的修订(或对这些修订的变更),无论这些修订或变更是在给 定的浏览器124处本地地发生,还是在其他浏览器处远程地发生并被报告到给定的本地浏览器124中。当开始涉及修订404的给定的协作工作时,修订存储406可存储这些单元格 408的初始状态或修订以供将来参考。修订存储406可将这些单元格的表示提供给图数据结构410,该图数据结构提供 正在协作编辑的文档的语义模型,且该语义模型提供文档的分层结构。假设数据/视图模 型的实现,图结构410可提供该模型的数据部分。图结构410可以是有向无环图,其包括不 同类型的节点、特性集以及表示传入的单元格206的其他元素。图4在412a和412η处表 示节点的示例(统称为图节点412)。例如,假设传入的修订表示协作编辑的文档的页面,图 结构410中的不同节点412可表示不同的段落、图像、页面、章节或页面中的其他部分或子 元素。某些对象可以用图中的一个节点(例如,图像)来表示,而诸如表等其他内容可用图 中的许多节点来表示。在说明性而非限制性实现中,客户机侧复制管理器402、客户机侧修订存储406、 初始单元格状态408和图结构410可以用Script#来创作并用JavaScript来实现。然而, 这些示例只是为了方便本说明书而提供的并且在不同的实现中其他情形是可能的。图结构410可提供由传入的修订206表示的内容的浏览器无关模型。进而,该图结 构中的节点412可以在各个不同的部分可用的浏览器中的任一个中呈现。因此,视图模型 或视图代码414可将这些节点412从图结构410呈现或映射到浏览器相关的查看模型。图 4提供了作为文档对象模型(D0M)416的这一查看模型的示例。DOM 416可存储协作编辑的 文档的当前视图,以表示出现在文档的一个或多个页面中的段落、图像、列表、或其他元素。视图代码414可从图结构410中创建D0M,且该图结构中的节点412a和412η对应 于DOM中的节点418a和418η (统称为DOM节点418)。D0M416然后可被呈现在浏览器124 上以供用户126查看。图4表示所呈现的内容部分可由用户在任何给定时刻在浏览器视口 420处查看。用户然后可以在他或她觉得适合时与浏览器视口中所表示的无论哪些元素交 互。在图4中描述了用于启动对具体文档的协作工作的组件和流程之后,本讨论现在 转向对用于处理协作用户对文档作出的修订的组件和流程的描述。该描述现在用图5来提{共。图5示出了在500处概括地表示的、用于处理协作用户对文档作出的修订的组件 和流程。为了易于引用而非限制,图5可从先前的附图带入某些附图标记以指代类似项目。 例如,图5从先前附图带入网络128、浏览器124、用户126、协作客户机服务110、服务器侧 修订存储212以及相关用户表示214和修订表示216。更详细地转向图5,假设用户126a和126b正在就给定文档中的相同单元格进行协 作。图5在502a和502b处将该单元格表示为在用户126a和126b之间共享。如上所述, 服务器侧修订存储212可创建并存储用户表示214和修订表示216以启动该情形。如果用 户126a创建对共享单元格502a的修订504a,则浏览器124a可将这些修订发送到协作客户 机服务110。关于修订504a的通知还可指示已被修订的单元格502a。在接收到关于修订504a的通知后,协作客户机服务110可确定这些修订504a是 否与其他用户正在编辑的单元格相关。为了作出该判定,协作客户机服务110可查询服务 器侧修订存储212以确定任何其他用户是否正在编辑单元格502a。在这种情况下,该查询 将指示用户126b也在编辑刚刚被修订的单元格502a。另外,浏览器124b可向协作客户机
9服务110查询对单元格502的任何新变更。以此方式,运行协作客户机服务的服务器可以 隐式地确定两个客户机正在就单元格502进行协作。因此,在某些情况下,协作客户机服务 110可形成关于这些修订的通知并将通知发送到浏览器124b。在其他情况下,协作客户机 服务可从浏览器124b接收请求,并且可以用对单元格502的适当修订来响应这些请求。图 5在504b处概括地表示这些和其他情形。进而,浏览器124b可更新其显示画面以结合修订 504b。在图5所示的情况下,假定用户126η正在编辑与用户126a和126b共享的单元格 502a和502b (统称为单元格502)不同的单元格506。尽管这些不同的单元格502和506可 以在相同的文档中,但用户126η当前未编辑单元格502。在这种情况下,其他用户作出的对 该单元格502的修订不与用户126η和/或浏览器124η直接相关。因此,协作客户机服务 110不会将这些修订立即通知给浏览器124η,由此节省与这一通知相关联的网络带宽。然 而,用户126η可对单元格506作出修订508,且这些修订在适当时被传递给协作客户机服务 110。进而,协作客户机服务可将这些修订传递给正在编辑同一单元格506的任何其他浏览 器或用户。如上所述,与先前的技术相比,图5所示的情形可提供操作效率。例如,协作客户 机服务可分发文档的各部分(例如,修订),而不是整个文档本身。通常,这些修订比整个 文档小得多。由此,与发送整个文档相比,通过网络发送这些修订消耗更少的网络带宽。另 外,浏览器124和协作客户机服务110可交换对文档的这些部分的修订,而不是交换整个文 档的已更新版本。因此,与交换整个文档的已更新版本相比,通过网络传递这些修订涉及发 送少得多的数据。按照该模型进行的网络通信可以与所传递的变更的大小成比例,但不与 变更的对象的大小成比例。当各个浏览器124报告对正在协作地编辑的单元格的修订时,协作客户机服务只 向正在编辑相同单元格的那些其他浏览器分发这些修订的指示。一般而言,如果给定文档 是用多个单元格来建模的,并且如果多个用户正在就该文档进行协作,则这些单元格通常 随机分布在该多个用户之间。由此,在最坏的情况下,所有这些用户都可能就同一单元格进 行协作,但在最好的情况下,至多一个用户操作给定单元格。典型的操作情形可以落在这两 个极端之间的某处,且协作客户机服务通过只向操作被修订的单元格的那些用户和浏览器 报告修订来进一步节省网络带宽和资源。在图5中描述了涉及处理协作用户对文档作出的修订的组件和数据流之后,本讨 论现在转向对用于处理这些修订的处理流程的描述。该讨论现在用图6给出。图6示出了在600处概括地表示的、用于处理如由浏览器报告的修订的流程。为 了易于引用而非限制,图6可从先前的附图带入某些附图标记以指代类似项目。例如,图6 从先前附图带入协作客户机服务110的表示。虽然处理流程600结合这些协作客户机服务 来描述,但注意,处理流程600的实现还可由其他组件或服务来执行而不背离本说明书的 范围和精神。更详细地转向图6,框602表示接收如由一个或多个浏览器(例如,先前附图中的 124)报告的修订的指示。例如,框602可包括协作客户机服务110接收这些修订的指示,如 图5在504a和508处所表示的。框604概括地表示标识经受框602中所报告的修订的单元格。例如,所报告的修订可包括指示这些修订所修改的单元格的标识符。
框606概括地表示存储如在框606中接收到的所报告的修订。例如,框606可包 括将这些修订存储在服务器侧修订存储(例如,112)中。判定框608表示确定任何其他浏览器是否已请求查看和/或编辑已被修订的给定 单元格。如果当前没有其他浏览器在给定时刻请求给定单元格,则处理流程600可取“否” 分支610以返回框602并等待来自一个浏览器的对单元格的下一次修订的通知。返回到判定框608,如果其他浏览器已经请求所修订的单元格,则处理流程600可 取“是”分支612至框614,框614表示将对单元格的修订发送到任何作出请求的浏览器。 如以上在图5中所描述的,可供协作的单元格可以随机分布在协作用户之间。在这种情况 下,框614可包括将关于这些更新的通知发送到在给定文档中协作的用户的某一较小的子 集,而不是发送到就给定文档进行协作的所有用户。在执行框614后,处理流程600可返回到框602以等到来自浏览器的下一个修订 通知。在图6中描述了用于处理各个协作浏览器所报告的修订的流程之后,本讨论现在转 向对出现在浏览器侧以处理这些修订的组件和数据流的描述。该描述现在用图7来提供。图7示出了在700处概括地表示的组件和数据流,浏览器可提供这些组件和数据 流以处理对多个用户协作地编辑的内容的修订。为了易于引用而非限制,图7可从先前的 附图带入某些附图标记以指代类似项目。例如,图7从先前附图带入网络128、示例用户 126、示例浏览器124、示例DOM 416、示例视图代码或视图模型408、以及示例图结构410。图 7还带入客户机侧修订存储406,该修订存储406可包括显示在浏览器124中以供用户126 编辑的单元格的初始状态408。另外,图7带入复制管理器402,该复制管理器402可通过 网络128来报告来自浏览器的修订504。更详细地转向图7,用户126可发出被发送出以与呈现在浏览器124中的内容交互 的各种命令,并且可通过这些命令来对该内容作出任何数量的修订。这些命令702可采取 各种类型,这取决于呈现在浏览器中的内容的类型,并且取决于什么能力通过协作客户机 服务(例如,先前附图中的110)对浏览器可用。取决于用户发出的命令702的类型,浏览器可对DOM或图结构执行这些命令。通 常,可对图执行大多数命令,这可提供数据/视图模型的模型部分。以此方式,模型部分保 持最新。然而,可对DOM执行编辑命令,并且在特定点(例如,在单词或段落的末尾),DOM 可以用由于用户编辑而产生的修订来更新图结构。以此方式,DOM和图结构不会招致跟踪 并处理用户键入的每一键击的性能惩罚,并且改为聚集键击或命令以提高处理效率。图结构中的节点可响应于命令702被更新,且只更新受到命令影响的那些节点。 一旦更新受影响的节点,视图代码408就可遍历这些节点并用例如适当的HTML来填充D0M。 进而,浏览器124可遍历DOM并呈现HTML以便向用户126显示。以此方式,浏览器124可 使用户126能够可视化该用户输入的任何命令的结果。在某些情况下,浏览器124可确定是在浏览器处本地地执行命令,还是在服务器 处远程地执行命令。该判定可基于性能考虑事项来作出;通常,可将资源密集的操作卸载到 服务器。然而,供考虑的其他因素可包括服务器在给定时刻负载很重。客户机侧修订存储406可存储由于命令或用户通过浏览器124采取的其他动作而 产生的一组修订。以浏览器中所显示的单元格的初始状态的表示408开始,修订存储406可创建并存储一系列修订增量704。这些修订增量表示在给定浏览器124处本地地发生在 图上的顺序的、增量的变更。除其他功能之外,这些修订增量可提供浏览器可用于向用户提 供“撤消”功能的机制,用户可回退一组修订以返回到某一先前状态。修订存储406可将修订和修订增量存储在例如最初按照出现次序排列的一个或 多个链接列表中。然而,随着时间的流逝,这一链接列表可变得相当长以至于无法遍历。通 常,用户感兴趣的大多数修订(例如,用于“撤消”操作)可能在该链接列表的末尾。然而, 访问这些感兴趣的修订可涉及遍历整个链接列表,从而承担相当多的性能惩罚。在这种情 况下,修订存储可重新组织修订增量的链接列表,以使得增量看上去“向前”将来状态,而不 是看上去穿过列表“倒退”回早先的初始状态。尽管修订存储406可存储表示出现在本地浏览器处的修订中的大多数或全部的 增量,但修订存储406可通过网络128向服务器报告或可不报告所有这些修订。例如,给定 本地地出现在浏览器 上的一组完整的修订增量704,修订存储406可向复制管理器402报告 这些修订增量的某一子集(在706处表示)。进而,复制管理器可将这些修订转发给服务 器,如在504处带入的。更具体而言,浏览器中的复制管理器可确定何时将这些修订转发给 服务器,以使得不会不恰当地打扰在浏览器中发生的用户交互。最终,给定浏览器处的复制 管理器可将用户在该浏览器处作出的聚集或累积的所得变更传送到服务器。该浏览器处的 复制管理器可组合出现在该浏览器处的修订和修订增量以定义模拟对单元格的聚集或累 积变更的所得修订,由此建立单元格的当前状态。进而,复制管理器可将单元格的当前状态 向上发送到服务器。在图7中描述了用于处理修订的浏览器侧组件和数据流之后,本讨论现在转向对 用于处理这些修订的服务器侧组件和数据流的描述。该描述现在用图8来提供。图8示出了在800处概括地表示的、用于接收并处理来自浏览器的修订的服务器 侧组件和数据流。为了易于引用而非限制,图8可从先前的附图带入某些附图标记以指代 类似项目。在图8所示的示例中,示例用户126a和126η可以与示例浏览器124a和124η交 互以创建对某些单元格802a和802η的修订504a和504η。进而,浏览器124a和124η可通 过网络128向协作客户机服务110报告这些修订。在接收到来自浏览器的这些修订后,协作客户机服务110可将这些修订存储在服 务器侧修订存储(例如,212)中,如在804处概括地表示的。图8只是出于本讨论的目的而 示出两个浏览器传递修订,但本说明书的各种实现可包括向协作客户机服务报告修订的任 何数量的浏览器124。如以上在图2中所描述的,服务器侧修订存储212可包含任何数量的单元格的修 订,这些修订进而可包含一个或多个对象表示204。这些对象表示204可以与初始修订806 相关联,该初始修订指示单元格或对象在对该单元格或对象的任何修订通知到达前的状况 或状态。当关于修订504的通知从各个浏览器到达时,这些通知可指示哪些单元格正在被 修订,如分别在802a和802η处表示的。当协作客户机服务110接收到这些通知时,这些服 务可创建修订增量808并将其存储在服务器侧。在功能上,这些服务器侧的修订增量808 可以与在浏览器侧描述的修订增量类似地操作。然而,应当理解,服务器侧修订增量可以与或不与浏览器侧修订增量完全相同。在图8中描述了用于接收和处理来自浏览器的修订的服务器侧组件和数据流之 后,本讨论现在继续至对服务器侧组件的更详细的描述。该描述现在用图9来提供。图9示出了在900处概括地表示的、与协作客户机服务相关联的服务器侧组件。为 了易于引用而非限制,图9可从先前的附图带入某些附图标记以指代类似项目。例如,图9 带 入协作客户机服务110的示例以及网络128的示例。web服务902作为接口来提供,该接口从浏览器接收通信并将这些通信定向到协 作客户机服务中的适当的组件。这些通信可包括例如,如从就给定内容实例进行协作的各 个不同的浏览器接收到的修订或修订增量的通知。这些通知可来自/去往各个浏览器。该 web服务可提供适配器904,该适配器904将这些通信从适于通过网络128来传输的协议转 换成更适于在协作客户机服务中处理的内部二进制协议。该web服务可支持用于向浏览器发送修订,从浏览器接收修订等的方法或应用程 序编程接口(API)。另外,这些API可包括向服务器指示给定浏览器已经浏览离开给定页 面,并由此已完成编辑该页面上的任何单元格的方法。存储层906可通过web服务适配器904来进行通信,并且可抽象去往和/或来自 服务器侧修订存储212的通信。存储层906还可提供存储适配器908,该存储适配器提供到 服务器侧修订存储的接口。当修订从各个浏览器到达时,存储层906可将这些修订高速缓 存在修订存储中。服务器侧修订存储可包括具有不同特性的不同存储区域或高速缓存。例如,第一 存储区域910可适用于或被配置成存储较新近且较频繁访问和修订的较小的数据组块。为 了易于引用而不是为了限制可能的实现,图9将该第一存储区域表示为“热”存储区域或高 速缓存。修订存储还可包括第二存储区域或高速缓存912,该第二存储区域或高速缓存适用 于或被配置成存储较不新近且较不频繁访问和修订的较大的数据组块。为了易于引用而不 是为了限制可能的实现,图9将该第二存储区域表示为“冷”存储区域或高速缓存。归并层914及相关归并引擎916产生允许存储层调用归并能力的那些接口及相关 方法。例如,当不同的浏览器向协作客户机服务发送对给定内容的修订时,存储层可将对 应的修订和/或修订增量存储在高速缓存910和912中。在适当时,存储层906可调用归 并层914来归并或协调这些各个修订以更新浏览器正就其进行协作的内容。另外,归并层 914可基于诸如提供协作客户机服务的服务器在任何给定时刻负载有多重或有多忙等因素 来确定何时调用和运行归并引擎916。在上述处理中,保存操作变为与归并操作异步。通常,在浏览器侧,修订数据可以 是高度串行化的,而在服务器侧,可以重新组织并优化修订数据以使其不那样串行化。由 此,如由服务器维护的修订历史可以是或不是指示在浏览器上发生变更的次序的线性表 示。相反,修订历史可包括分支或其他非线性特性。通常,向用户和浏览器屏蔽归并过程的细节,以使得归并延迟不会过渡影响总体 用户体验。换言之,用户可继续浏览器处的修订,而不等待归并完成或甚至知道归并在服务 器端进行。协作客户机服务110可使用图9所示的体系结构来执行若干功能。这些功能可包 括但不限于优化传送至和传送自各个浏览器的数据净荷、确定运行发自浏览器的命令的最佳环境、优化内容和单元格在服务器上的存储、启用对协作内容的多用户编辑等。本讨论现在提供关于这些功能中的每一个的附加细节。优化数据净荷当打开文档或文件以便借助协作客户机服务来进行协作时,存储层906可检索该 文件或文档中的一个或多个适当页面的内容。该存储层可从服务器侧修订存储中只读取该 一个或多个页面的数据。可优化该读取以便首先在热存储(例如,910)中查找这些页面。 如果所请求的这些页面不在热存储中,则该读取可增量式地搜索冷存储(例如,912)。适当的数据从修订存储中被读取,存储在服务器上的前端高速缓存中,并向下发 送到适当的浏览器(例如,124)。接收浏览器可将该数据存储在浏览器侧修订存储中(例 如,306),并在图结构中重新创建或重新组合(rehydrate)该数据(例如,310)。当给定用 户在给定浏览器中修订内容时,或者如果另一用户在另一浏览器中变更该内容,则协作客 户机服务可生成指示这些变更的修订和修订增量,并且可将这些修订发送到就该内容进行 协作的其他浏览器。在浏览器侧,浏览器可以在浏览器侧修订存储中处理修订和修订增量,且浏览器 在修订存储之外创建对图结构的适当更新。在服务器侧,协作客户机服务可将这些修订和 修订增量存储在热存储(例如,910)中。之后,协作客户机服务可归并从不同的用户接收到 的修订和修订增量。例如,客户机服务可与其他操作异步地运行归并操作,以使得不会不恰 当地打扰这些其他操作(即,“安静地”)。其他用户或浏览器可向服务器询问对协作内容作出的任何变更。在这些情况下, 服务器可从前端服务器所维护的高速缓存中检索这些变更,或者前端服务器可从后端服务 器中检索这些变更。一般而言,协作客户机服务可通过允许前端服务器本地地存储这些前 端服务器先前已经读取的数据,并将这些数据返回给作出请求的浏览器而不去往后端服务 器,来提供机会主义热存储高速缓存。协作客户机服务还可提供到高速缓存的重定向,其中 在另一前端服务器包含浏览器正在请求的被高速缓存的数据的情况下,一个前端服务器可 将来自该浏览器的请求重定向到该另一前端服务器。在适当的环境中运行命令协作客户机服务可以在不与服务器交互或没有服务器干预的情况下在浏览器中 执行多个命令。该浏览器可通过操纵D0M(例如,316)以及对图结构(例如,310)执行操作 的组合来执行这些命令。然而,某些命令可以在服务器上运行,因为服务器可提供运行这些 命令的执行能力,并且因为在服务器上运行命令不涉及将代码(以及机密和/或敏感信息) 下载到远程浏览器。另外,在服务器上运行的那些命令可以在不会另外打扰服务器的“普通”操作的情 况下这样做。例如,当存储层906接收到新变更时,该存储层可将该变更传递给服务器侧修 订存储212以便存储。该存储层还可将该新变更通知给归并层914。然而,归并层可试图在 适当时与该通知异步地归并该新内容。该异步操作可以将使服务器过载以使其太忙以至于 无法处理其他请求的风险降到最低。就此,归并层可以只在前端服务器具有足够的空闲周 期来投入到该归并的情况下操作。诸如粘贴等命令可以在浏览器和服务器的组合中运行。浏览器可包括执行以下动 作的逻辑检测到在执行充分的粘贴操作时所涉及的处理太复杂以至于无法在该浏览器处本地地执行,并且可改为要求服务器来执行该操作。同样,在服务器上运行的代码可调度并 执行该粘贴操作以使得不会不恰当地打扰在该服务器上执行的其他操作。服务器存储当要存储协作内容(例如,单元格)时,该内容可从浏览器移至前端服务器,并最 终移至存储层。该存储层可以与服务器侧修订存储通信,并且可将单元格存储在两个不同 的位置,较新近发生的相对较小的变更可被存储在较快、较昂贵的热存储(例如,910)中。 这优化了检索该小数据集以将其传递给其他用户,而不是必须从较慢的、较昂贵的冷存储 (例如,912)中检索数据。一旦修订或变更被合并或归并到主文件中,就可将该主文件存储 在冷存储中。这通过将通常相对较大的主文件存储在比热存储便宜的存储中来优化成本。在浏览器请求文件中的特定单元格时,存储层和文件提供者可从这些存储(即, 热存储和冷存储)中的一个或两者中检索所请求的修订,并且可将修订作为统一数据呈现 给浏览器和其余服务器侧组件。存储层还可将存储在服务器上的用户内容转换成可供浏览 器消费的内容,同时扩展内容中的特定节点,并且不下载浏览器不使用的内容。多用户编辑如上所述,协作客户机服务所采用的数据模型可包括修订。客户机服务还可以在 不表达用户交互的情况下(即,“在幕后”)加载/保存这些修订。该方法可以自动传播来 自用户的变更,以便优化如何共享用户内容和修订(即,通过对线路(wire)造成最小负担) 以及何时共享这些内容和修订。以此方式,一旦协作客户机服务检测到多个用户正在就给 定内容进行协作,协作客户机服务就可以更快地将来自给定用户的变更同步到所有其他浏
IrWSB 见益。协作客户机服务可变换数据模型以允许浏览器和服务器高效地处理数据。浏览器 然后可显示并处理适当的内容。另外,协作客户机服务可以与电子笔记本应用程序(例如, 包括但不限于可从华盛顿州雷蒙德市的微软公司购得的OneNoteTM产品)集成。例如,存 储层可改变修订格式以使得能够以与电子笔记本应用程序兼容的格式存储这些修订。以此 方式,协作客户机服务可以与富客户端无缝集成,并且可利用可广泛购得的浏览器,同时依 靠电子笔记本应用程序(或其他软件产品或应用程序)来提供更丰富的用户体验。虽然以计算机结构特征、方法动作、以及计算机可读介质专用的语言描述了本文 呈现的主题,但是应该理解,在所附权利要求书中所限定的本发明不必限于本文描述的具 体特征、动作、或介质。相反,这些具体特征、动作和介质是作为实现权利要求的示例形式来 公开的。上述主题仅作为说明提供,并且不应被解释为限制。可对此处所述的主题作出各 种修改和改变,而不必遵循所示和所述的示例实施方式和应用,且不背离所附权利要求书 中所述的本发明的真正精神和范围。
权利要求
至少一种其上存储有计算机可执行指令(110)的计算机可读存储介质(108),所述指令在由计算机执行时使得所述计算机执行一种方法,所述方法包括使多个用户(126)能够使用各自的浏览器(124)来就至少一个文档(114)进行远程协作;将所述文档的一部分的表示(206)发送(306)到与所述用户中的至少一个用户相关联的浏览器;以及将所述文档的所述一部分与所述至少一个用户相关联(308)。
2.如权利要求1所述的存储介质,其特征在于,还包括用于从所述浏览器接收对所述 文档的所述一部分的至少一个修订的表示的指令。
3.如权利要求2所述的存储介质,其特征在于,还包括用于确定所述用户中的至少另 一个用户正在就所述文档的所述一部分进行协作的指令,并且还包括用于将所述修订的表 示发送到所述用户中的所述至少另一个用户的指令。
4.如权利要求2所述的存储介质,其特征在于,还包括用于确定所述用户中的至少另 一个用户正在就所述文档的所述一部分进行协作的指令,并且还包括用于只向所述用户中 的所述至少另一个用户发送所述修订的表示的指令。
5.如权利要求2所述的存储介质,其特征在于,还包括用于从所述浏览器接收对所述 文档的所述一部分的至少另一个修订的表示的指令。
6.如权利要求5所述的存储介质,其特征在于,还包括用于归并对所述文档的所述一 部分的所述修订和所述至少另一个修订的指令。
7.如权利要求1所述的存储介质,其特征在于,还包括用于将所述文档建模为多个单 元格的指令,并且其中所述用于发送所述文档的一部分的表示的指令包括用于将所述修订 中的至少一个发送到所述浏览器的指令。
8.如权利要求1所述的存储介质,其特征在于,还包括用于高速缓存至少所述文档的 所述一部分的指令。
9.如权利要求8所述的存储介质,其特征在于,还包括用于从所述高速缓存中检索至 少所述文档的所述一部分,并且用于将所述文档的所述一部分的表示发送到与所述用户中 的至少另一个用户相关联的至少另一个浏览器的指令。
10.如权利要求8所述的存储介质,其特征在于,还包括用于接收对至少所述文档的所 述一部分的请求,并且用于将该请求重定向到所述高速缓存的指令。
11.至少一种其上存储有计算机可执行指令(110)的计算机可读存储介质(122或 108),所述指令在由计算机执行时使得所述计算机执行一种方法,所述方法包括使多个用户(126)能够使用各自的浏览器(124)来就至少一个文档(114)进行远程协作;在所述浏览器中的一个处接收由所述用户中的至少一个用户提供的至少一个命令 (702)的表示;以及确定(314)是否在所述浏览器处执行所述命令。
12.如权利要求11所述的存储介质,其特征在于,还包括用于在所述浏览器处执行所 述命令的指令。
13.如权利要求12所述的存储介质,其特征在于,还包括用于对由所述浏览器维护的文档对象模型执行所述命令的指令。
14.如权利要求12所述的存储介质,其特征在于,还包括用于对由所述浏览器维护的 图结构执行所述命令的指令。
15.如权利要求11所述的存储介质,其特征在于,还包括用于将所述命令转发给服务 器以便执行的指令。
16.如权利要求11所述的存储介质,其特征在于,还包括用于接收在所述服务器上执 行所述命令的结果的指令。
17.至少一种其上存储有计算机可执行指令(110)的计算机可读存储介质(108),所述 指令在由计算机执行时使得所述计算机执行一种方法,所述方法包括使多个用户(126)能够使用各自的浏览器(124)来就至少一个文档(114)进行协作;将所述文档的一部分的表示(206)发送到与所述用户中的至少一个相关联的浏览器;从所述浏览器接收(602)对所述文档的所述一部分的至少一个修订(504);以及将所述文档的所述一部分存储在被配置成存储相对较新近地变更的文档的各部分的 第一存储区域(910)中。
18.如权利要求17所述的存储介质,其特征在于,还包括用于将所述文档的其余部分 存储在被配置成存储未相对较新近地变更的文档的各部分的第二存储区域中。
19.如权利要求18所述的存储介质,其特征在于,还包括所述用于存储的指令包括用 于将所述文档的所述一部分存储在热存储区域中的指令,并且其中所述用于存储所述文档 的其余部分的指令包括用于将所述文档的其余部分存储在冷存储区域中的指令。
20.如权利要求17所述的存储介质,其特征在于,还包括用于将所述文档的所述一部 分转换成与客户机应用程序相关联的至少一个格式或者将所述文档的所述一部分从所述 至少一个格式转换的指令。
全文摘要
描述了用于基于web的多用户协作的工具和技术。这些工具可提供使用户能够使用各自的浏览器来就文档进行远程协作的方法。这些方法可将给定文档的各部分的表示发送到浏览器,并将文档的各部分与特定用户相关联。浏览器可接收如由用户提供的命令的表示,并且可确定是否在浏览器处执行命令。这些方法还可包括从浏览器接收对文档的各部分的修订,以及将文档的这些部分存储在被配置成存储相对新近变更的内容的存储区域中。
文档编号G06F15/16GK101971163SQ200980109416
公开日2011年2月9日 申请日期2009年1月30日 优先权日2008年3月14日
发明者H·萨利巴, P·恩格拉弗 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1