CN102541831A - 串行化文档编辑命令 - Google Patents
串行化文档编辑命令 Download PDFInfo
- Publication number
- CN102541831A CN102541831A CN2011103642247A CN201110364224A CN102541831A CN 102541831 A CN102541831 A CN 102541831A CN 2011103642247 A CN2011103642247 A CN 2011103642247A CN 201110364224 A CN201110364224 A CN 201110364224A CN 102541831 A CN102541831 A CN 102541831A
- Authority
- CN
- China
- Prior art keywords
- document
- order
- command stream
- computer
- session
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/10—Text processing
- G06F40/166—Editing, e.g. inserting or deleting
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
- G06F16/273—Asynchronous replication or reconciliation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/10—Text processing
- G06F40/197—Version control
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- Databases & Information Systems (AREA)
- Artificial Intelligence (AREA)
- Audiology, Speech & Language Pathology (AREA)
- Computational Linguistics (AREA)
- General Health & Medical Sciences (AREA)
- Data Mining & Analysis (AREA)
- Computing Systems (AREA)
- Stored Programmes (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Document Processing Apparatus (AREA)
- Information Transfer Between Computers (AREA)
- Digital Computer Display Output (AREA)
Abstract
本发明揭示了串行化文档编辑命令。生成包括经串行化的用于编辑文档的命令的命令流。可将命令流应用到经修改的文档,以生成包含使用Web应用和客户机应用两者作出的对文档的修改的单个文档。命令流还可用来在从用于编辑文档的Web应用断开连接之后重新创建文档的经编辑的状态,对主控Web应用的服务器计算机进行负载平衡(即使当编辑会话正在进行中),在编辑会话正在进行中时执行对主控Web应用的服务器的升级,以及用于其他目的。
Description
技术领域
本发明涉及文档编辑,尤其涉及串行化文档编辑命令。
背景技术
万维网(“Web”)应用已被发展为允许富文档的创建和编辑。例如,Web应用可用于创建和编辑文字处理文档、电子表格、演示,和其他类型的文档。这些文档也可能在兼容客户端应用中被创建和编辑。例如,可在台式或膝上计算机上执行文字处理客户端应用,并将其用来创建文字处理文档。可接着利用合适的Web应用来编辑文字处理文档。
在Web应用的用户与使用客户端应用编辑文档的另一用户同时地编辑文档时,当前Web应用发生问题。在该情形中,生成了文档的两个版本。文档的一个版本包含使用Web应用作出的编辑,而文档的第二个版本包含使用客户端应用作出的编辑。协调文档的两个版本之间的改变可能是困难的。
在诸如Web浏览器应用等客户端应用,变得从主控该Web应用的服务器断开连接时,当前Web应用发生另一个问题。在该情形中,当连接重新建立时,将经编辑的文档回复到文档的先前状态可能是困难的。因此,在断开连接发生时对文档的编辑可能丢失。
当前Web应用的其他问题可能发生,因为在服务器计算机之间迁移进行中的编辑会话可能是困难的。例如,如果实现Web应用并主控编辑会话的Web服务器变得过载,则将进行中的编辑会话迁移到另一服务器以平衡负载可能是困难的。类似地,在具有进行中的编辑会话的服务器计算机上升级Web应用可能是困难的。
此处所做出的本公开正是对于这些和其他考虑事项而提出的。
发明内容
此处描述的技术用于串行化文档编辑命令。通过此处所提出的概念和技术的实现,可生成包含通过使用Web应用和客户端应用两者对文档作出的改变的单个文档。通过此处所提出的概念和技术的实现,文档的经编辑状态在从Web应用断开连接之后也可被重新创建。此外,在编辑会话在进行中时,主控Web应用的服务器可被负载平衡并升级。
根据此处呈现的一方面,提供了用于创建和编辑文档的Web应用。例如,在一个实现中,Web应用提供使用传统Web浏览器应用程序创建和编辑演示文档的功能。Web应用存储文档或能访问存储文档的网络位置。
用于修改文档的命令通过Web浏览器应用程序生成,并被发送到在服务器计算机上执行的Web应用。Web应用接收该命令并串行化该命令。这可以包括,例如,向命令添加指示该命令被接收的时间的数据,并按照时间顺序安排命令。经串行化的命令随后被存储在命令流中。命令流与文档分开存储。可以理解,命令流表示原始文档及其当前状态之间的差异,在这里称为“增量”。对存储在去往文档的命令流中的命令的应用将造成文档的当前状态。
根据另一方面,在通过Web应用接收到保存文档的请求时,命令流可被应用到文档。例如,在接收到保存文档的请求时,命令流中的命令可以按串行次序(即,命令最初被作出时的次序)被应用到文档。一旦命令已经被应用到文档,文档可被保存。
根据又一方面,上述命令流可被用来允许共同创作。例如,在一实施例中,客户端应用可能修改文档以创建经修改文档。Web应用可被用于编辑同一文档,从而造成命令流的创建。为了协调文档的两个版本之间的改变,命令流中的命令可被应用到经修改的文档。以此方式,所得的文档包括通过客户端应用来应用到文档的编辑以及通过Web应用来应用到文档的编辑。
根据又一方面,上述命令流可被用来改善Web应用的性能。例如,Web应用可被配置成在易失性存储器(诸如随机存取存储器RAM)中为上述文档维持命令流。为了释放存储器,文档和命令流可被存储在海量存储设备中,诸如硬盘驱动器,并从易失性存储器中卸载。在接收到对该文档的另外的命令时,通过将所存储的命令流应用到该文档来使该文档返回到其当前状态。该另外的命令可接着被以上述方式串行化为命令流。
根据又一方面,命令流可被用来在提供Web应用的服务器计算机上执行动态负载平衡。在此实现中,标识一个或多个高负载的服务器计算机。接着,标识高负载服务器计算机上的进行中文档编辑会话。对于每个所标识的编辑会话,文档的命令流被应用到文档。接着将文档移到非高负载的服务器计算机。在另一实施例中,在不将命令流应用到文档的情况下来把命令流和文档移到非高负载服务器计算机。文档所移到的服务器计算机随后接管处理编辑会话的责任。
根据又一方面,命令流可被用来在主控Web应用的服务器计算机上执行不间断升级。具体地,在执行Web应用的下级版本的服务器计算机上标识进行中编辑会话。与所标识的进行中编辑会话相关联的文档和命令流,接着被移到执行Web应用的上级版本的服务器计算机。接着在文档和命令流所移到的服务器计算机处恢复编辑会话。一旦下级服务器上所有的进行中编辑会话已经以此方式被移动,该服务器上的Web应用可升级。在一个实现中,命令流中的命令在将文档移动到执行上级Web应用的服务器计算机之前被应用到文档。
可以理解,此处描述的命令流也可被用于其他目的,例如撤消/重做、文档恢复,等。可以理解,提供本发明内容以便用简化形式介绍下面在详细描述中进一步描述的一些概念。本发明内容并不旨在标识所要求保护的主题的关键特征或必要特征,也不旨在将本概述用来限制所要求保护的主题的范围。此外,所要求保护的主题不限于解决在本公开的任何部分中提及的任何或所有缺点的实现。
附图说明
图1是示出用于此处公开的各个实施例的一个说明性操作环境的软件和网络体系结构图;
图2是示出用于此处公开的一个实施例中的用于串行化文档编辑命令的各种组件的各方面的软件体系结构图;
图3是示出此处公开的各个实施例中生成和使用的命令流的各方面的数据结构图;
图4是示出根据此处公开的一个实施例的用于串行化命令流的一个示例性过程的流程图;
图5是示出此处公开的一个实施例中用于生成包括在Web应用和客户端应用两者处作出的编辑的经修改文档的一个过程的各方面的数据结构图;
图6是示出在此处公开的一个实施例中用于使用命令流来优化Web应用的性能的一个示例性过程的流程图;
图7是示出在此处公开的一个实施例中用于使用命令流对主控Web应用的服务器计算机进行动态负载平衡的一个示例性过程的流程图;
图8是示出在此处公开的一个实施例中用于使用命令流来升级Web应用的一个示例性过程的流程图;以及
图9是示出用于能够实现本文所提出的各种实施例的计算系统的说明性计算机硬件和软件体系结构的计算机体系结构图。
具体实施方式
以下具体实施方式涉及用于串行化文档编辑命令的技术。如上所简述,可使用此处描述的包括用于编辑文档的经串行化的命令的技术来生成命令流。可将命令流用于到经修改的文档,以生成包含使用Web应用和客户端应用两者作出的对文档的修改的单个文档。命令流还可用来在用于编辑文档的Web应用断开连接之后重新创建文档的经编辑的状态,对主控Web应用的服务器计算机进行负载平衡(即使当编辑会话正在进行中),在编辑会话正在进行中时执行对主控Web应用的服务器的升级,以及用于其他目的。
尽管在结合计算机系统上的操作系统和应用程序的执行而执行的程序模块的一般上下文中呈现了此处描述的主题,但是本领域技术人员将认识到,其他实现可以结合其他类型的程序模块来执行。一般而言,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、组件、数据结构和其它类型的结构。此外,本领域技术人员将明白,可以利用其他计算机系统配置来实施此处描述的主题,这些计算机系统配置包括手持式设备、多处理器系统、基于微处理器的或可编程消费电子产品、小型计算机、大型计算机等等。
在下面的详细描述中,将参考构成本发明的一部分的附图,并且在附图中作为说明示出了各具体实施例或示例。现在参考附图,其中全部若干附图中相同的标号表示相同的元素,将描述用于将文档编辑命令串行化为命令流并且利用该命令流的计算系统和方法的各方面。
图1是示出用于此处揭示的各个实施例的一个说明性操作环境的软件和网络体系结构图。图1所示的操作环境100被配置来向执行Web浏览器应用程序102的客户端计算机104提供Web应用114。可以理解,在此处使用术语“Web应用”意在包含通过标准协议和技术(诸如HTTP、SOAP、异步JavaScript等)可被访问和使用的应用。术语“Web应用”不应该被仅限制为通过万维网可用的应用。相反,Web应用114可通过实际上任何类型的网络108来访问,包括但不限于,广域网、局域网、无线网络,以及其他类型的网络。
在图1所示的操作环境100中,提供了一些前端服务器106A-106C来执行前端组件110。从Web浏览器应用程序102接收到的对Web应用114的请求被负载平衡到前端服务器106A-106C。以此方式,可为特定文档编辑会话分配前端服务器106A-106C。由浏览器应用程序102为特定编辑会话生成的命令,被在分配给该编辑会话的前端服务器106A-106C上的前端服务器组件110所接收。这些命令接着被转发到在后端服务器计算机112A-112C之一上执行的Web应用114的实例。后端服务器计算机112A-112C也可被负载平衡,以确保Web应用114以高效的方式操作。
同样在图1中示出,后端服务器112A-112C维护,用于存储诸如操作系统和Web应用114等可执行程序代码的一个或多个盘116A-116C。盘116A-116C也可被用来存储文档118A-118C。文档118A-118C也可被存储在经由网络108或另一网络可访问的另一位置。
根据一个实现,Web应用114提供用于创建和编辑一个或多个文档类型的功能。例如,Web应用114可被配置来创建和编辑文字处理文档、电子表格文档、演示文档,或另一类型的文档。如以下将更详细描述的,在客户端计算机104上执行的客户端应用也可被配置来创建和编辑与由Web应用114生成的文档118-118C兼容的文档类型。例如,文档可在客户端计算机104处利用客户端应用来创建,并接着由Web应用114编辑。类似地,可在Web应用114创建文档,并接着利用在客户端计算机104上执行的客户端应用来编辑。
可以理解,图1所示的操作环境仅仅是示例性的,也可使用其他类型的操作环境。例如,在其他实施例中,可不使用前端服务器106A-106C。此外,在其他实施例中,也可使用更多或更少的后端服务器112A-112C。此外,尽管在图1示出了单个客户端计算机104,可以理解,图1中所示的操作环境100能够同时支持多得多的客户端计算机104。对本领域技术人员显而易见的是,能够支持此处描述的概念和技术的操作环境的其他类型。
图2是示出用于此处揭示的一个实施例中的用于串行化文档编辑命令的各种组件的各方面的软件体系结构图。如图2所示,和前面的简述,客户端计算机104的用户可使用Web浏览器应用程序102来与Web应用114进行交互。具体地,用于修改文档118的命令202可在客户端计算机104由用户来生成。例如,如果文档118是演示文档,则命令202可以是用于向演示添加新幻灯片、向演示添加图形元素、在演示中添加或修改文本,或执行任何其它类型的编辑任务。在文档118是文字处理文档时,命令202可以是用来向文档添加文本、格式化文本、添加图形,或执行对文档的其它编辑。可以理解,因此,此处所使用的术语命令指用于修改文档的任何类型的命令。
在客户端计算机104处生成的每个命令202包括标识应当如何对文档118作出编辑的数据。该数据可利用可扩展标记语言(“XML”)、二进制编码,或以其它格式来指定。例如,如果命令202是用于编辑文档118中的文本的,则存储在命令202中的数据可描述文档中应当发生编辑的位置,以及编辑应当如何实现。如果命令202是用于向演示添加幻灯片的,则命令202可包括指示新幻灯片要加入的位置的数据、新幻灯片的标题,以及其它信息。也可类似地表示其它类型的命令。
如前简述,命令202在客户端计算机104生成并传送到前端服务器,诸如前端服务器106A。进而,前端服务器106A将命令202传送到合适的后端服务器112,诸如后端服务器112A。如前简述,每个后端服务器112执行Web应用114的示例。同样如前简述,每个后端服务器112维持,或可访问,存储要对其应用命令202的文档118的盘存储设备116。然而,Web应用114维持命令流206,而不是直接将命令202应用到文档118。
如下面将更详细地讨论的那样,命令流206包括命令202A-202N的经串行化的序列。为了串行化命令202,Web应用114可向命令202A-202N添加指示该命令生成的绝对或相对时间的数据。其它类型的数据,诸如序列号,也可被用来串行化命令202A-202N。命令202A-202N接着按顺序的次序被存储在命令流206中。如图2所示的示例中,命令流206存储在后端服务器112的易失性存储器204中。可以理解,在其它实施例中,命令流206可被存储在盘116上。
图3是示出此处揭示的各个实施例中生成和使用的命令流206各方面的数据结构图。具体地,图3示出了已经串行化并且按(根据命令202A-202N被生成的次序的)顺序次序放置的命令202A-202N。可以理解,因此,存储命令202A-202N的命令流206代表文档118在修改之前和其当前状态之间的增量。如以下将更详细描述的,Web应用114可将命令202A-202N以串行次序应用到命令流206,以生成文档118的当前状态。如将以下参考图4-8描述关于此过程和此过程的几个应用的详情。
图4是示出根据此处公开的一个实施例的用于串行化命令流的一个示例性例程400的流程图。应该了解,这里参考图4和其他图形所描述的逻辑操作是(1)作为计算机实现的操作或在计算系统上运行的程序模块的序列和/或(2)计算系统内的互连机逻辑电路或电路模块来实现的。取决于计算系统的性能及其他要求,可以选择不同的实现。因此,此处所描述的逻辑操作被不同地称为操作、结构设备、动作或模块。这些操作、结构设备、动作和模块可用软件、固件、专用数字逻辑以及它们的任何组合来实现。还应该明白,可以执行比附图中示出并在此处描述的操作更多或更少的操作。这些操作还可以按与此处所描述的不同的次序来执行。
例程400在操作402开始,在那里Web应用114接收命令202。响应于接收到命令,例程400前进到操作404,在那里Web应用114串行化该命令202。这可以包括,例如,向命令202添加指示该命令被接收的绝对或相对时间的数据。也可以利用其它类型的用于串行化命令202的机制。一旦命令202已经被串行化,例程400从操作404前进到操作406。
在操作406,经串行化的命令202被存储在命令流206中。例程400接着前进到操作408,在那里Web应用114确定是否接收到保存对应于命令流的文档118的请求。如果没有,例程400前进到上述操作402,在那里接收另外的命令202并以上述方式串行化。如果在操作408接收到保存文档118的请求,例程400前进到操作410。
在操作410,命令流206中用于当前文档118的命令202A-202N以串行次序应用到文档118。以此方式,存储在命令流206中的命令202A-202N以它们被生成的次序来被应用到文档118。应用了命令流206之后的文档118代表文档118的当前状态。一旦命令流206已被应用到文档118,例程400前进到操作412,在那里文档118被持久存储到盘。例程400接着前进到操作402,在那里接收另外的命令202,将其串行化,并存储在命令流206中。
图5是示出此处公开的一个实施例中用于生成包括在Web应用和客户机应用两者处作出的编辑的经修改文档的一个过程的各方面的数据结构图。如前简述,可在客户端计算机104上使用桌面客户端应用502,该桌面客户端应用502能够编辑由Web应用114生成的文档。例如,如上简述,文字处理桌面客户端应用502可被用来编辑由Web应用114生成的文档118A。类似地,Web应用114可被用来编辑由桌面客户端应用502创建的文档118A。在图5所示的示例中,桌面客户端应用502已被用来对原始文档118A作出修改504。所得的文档是经修改的文档118D。
在一个情形中,Web浏览器应用程序102可利用Web应用114也来对原始文档118A作出修改。如上所述,然而,通过Web应用114对原始文档118A的修改被表示在命令流206中。例如,在图5所示的示例中,已经生成了包含两个命令202A-202B的命令流206。
为了协调由Web应用114生成的文档的版本和由桌面客户端应用502生成的文档的版本之间的改变,Web应用114可被配置来将命令流206中的命令202A-202B应用到经修改的文档118D。以此方式,生成经更新的文档118E,文档118E包括由桌面客户端应用502对文档118A作出的修改504,并且也包括由Web应用114对文档作出的修改。通过以此方式生成经更新的文档118E,此处描述的概念和技术允许利用桌面客户端应用502和Web应用114并发编辑(“共同编辑”)。
可以理解,在经更新的文档118E中可能存在冲突。例如,桌面客户端应用502可被用来删除文档118A中的文本的一部分。并发地,Web应用114可被用来编辑由桌面客户端应用502删除的文本。在此示例中,当命令流206应用到经修改的文档118D时将存在冲突。可以理解,各种机制可被用来解决冲突。例如,用户可被询问以在冲突编辑之间进行选择。也可以使用其它机制来解决在客户端应用502和Web应用114对文档作出的修改之间的冲突。
图6是示出在此处公开的一个实施例中用于使用命令流206来优化Web应用114的性能的一个示例性例程600的流程图。例程600在操作602开始,在那里在Web应用114接收到的命令202被串行化为命令流206。例程接着从操作602前进到操作604,在那里文档118及其相关联的命令流206被保存到盘116。一旦文档118和命令流206已被保存,例程600前进到操作606,在那里从存储器204卸载命令流206。如图2所示,命令流206可能被存储在后端服务器112的易失性存储器204中。通过从易失性存储器204卸载命令流206,存储器204可被释放用于其它用途。
从操作606,例程600前进到操作608,在那里Web应用114确定接收到用于已保存的文档118的另外的命令202。如果否,例程600前进至操作608,在那里进行另一个这样的确定。如果接收到命令,例程600前进到操作610,在那里从盘加载文档118。存储在盘上的命令流也可被加载到后端服务器112的易失性存储器204中。
例程600接着前进到操作612,在那里,所存储的命令流206以上述方式被应用到文档118。如上所述,这产生表示在应用命令流106的所有命令之后文档的当前状态的文档118。例程600接着前进到操作614,在那里,新接收的命令以上述方式被串行化在命令流206中。例程600从操作614行进至操作616,在那里结束。
图7是示出在此处公开的一个实施例中用于使用命令流对主控Web应用的服务器计算机112进行动态负载平衡的一个示例性例程700的流程图。例程700在操作702开始,在那里标识高负载的后端服务器112A-112C。高负载服务器计算机是正经历相对高的对其资源的利用(诸如CPU周期、存储器利用、海量存储利用,和/或对其它类型的资源的高利用)的服务器计算机。一旦高负载后端服务器112A-112C被标识,例程700前进到操作704。
在操作704,所标识的高负载后端服务器112A-112C上的要被移到另一个后端服务器的一个或多个编辑会话被标识。基于编辑会话利用的资源,随机地,或以另一种方式,来标识要被移到另一服务器112的进行中的编辑会话。一旦要被移到另一服务器112的一个或多个进行中编辑会话已被标识,例程700前进到操作706。
在操作706,命令流206中用于所标识的编辑会话的命令中的一些或全部可被用于到相关联文档。以此方式,每个文档可在将其移到另一后端服务器112之前被推至其当前状态。可以理解,该过程是可选的,并且在将编辑会话移到另一后端服务器112之前,命令流206可能不被应用到与进行中编辑会话相关联的文档。
从操作706,例程700前进到操作708,在那里所标识的进行中编辑会话的命令流206和文档118被移到非高负载后端服务器112A-112C。进行中编辑会话所移到的后端服务器112A-112C可基于目的地后端服务器对资源的利用(CPU利用、存储器利用、盘利用,和/或对资源的其它类型的利用)来被标识。进行中编辑会话所移到的后端服务器112A-112C接着接管处理进行中编辑会话的责任。以此方式,所接收的用于进行中编辑会话的任何新命令将由目的地后端服务器112A-112C处理。可以理解,因此,后端服务器112A-112C可被动态地负载平衡而无需中断进行中编辑会话。例程700从操作708行进至操作710,在那里结束。
图8是示出在此处公开的一个实施例中用于使用命令流来升级Web应用的一个示例性例程800的流程图。例程800在操作802开始,在那里,Web应用114的上级版本被部署在当前未支持任何编辑会话的后端服务器112上。例程800接着前进到操作804,在那里,经升级的服务器112被启用以开始主控编辑会话。一旦上级服务器112已经被启用来主控编辑会话,例程800前进到操作806。
在操作806,执行下级Web应用114的后端服务器112上的进行中编辑会话被标识。对于每个所标识的进行中编辑会话,命令流206中的命令202被应用到相关联的文档。例程800接着前进到操作808,在那里,进行中编辑会话的文档被移到执行Web应用114的上级版本的经升级的服务器112。文档所移到的服务器计算机随后接管主控进行中编辑会话的责任。
一旦所有的进行中编辑会话已被移离下级后端服务器112,例程800前进到操作810,在那里,可使用Web应用114的上级版本来升级下级服务器计算机。例程800然后从操作810继续至操作812,在那里结束。鉴于上述内容,可以理解,Web应用114可在无需打扰进行中编辑会话的情况下被升级。
图9是示出用于能够实现本文所提出的各种实施例的计算系统的说明性计算机硬件和软件体系结构的计算机体系结构图。图9的计算机体系结构示出了传统台式计算机、膝上计算机,或服务器计算机,并可被用来执行此处描述的各种软件组件。
图9所示的计算机体系结构包括中央处理单元902(“CPU”)、包括随机存取存储器914(“RAM”)和只读存储器(“ROM”)916的系统存储器908、以及将存储器耦合至CPU 902的系统总线904。包含诸如在启动时有助于在计算机900内的元件之间传输信息的基本例程的基本输入/输出系统(“BIOS”)被存储在ROM 916中。计算机900还包括用于存储操作系统918、应用程序和其它程序模块等的海量存储设备910,这将在以下更为详尽地描述。
海量存储设备910通过连接至总线904的海量存储控制器(未示出)连接到CPU 902。海量存储设备910及其相关联的计算机可读存储介质为计算机900提供非易失性的存储。虽然对此处包含的计算机可读介质的描述引用了诸如硬盘或CD-ROM驱动器等海量存储设备,但本领域的技术人员应当理解,计算机可读介质可以是可由计算机900访问的任何可用计算机存储介质。
作为示例而非限制,计算机可读存储介质可包括以用于存储诸如计算机可读指令、数据结构、程序模块或其它数据的信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。例如,计算机可读存储介质包括,但并不限于,RAM、ROM、EPROM、EEPROM、闪存或其他固态存储器技术,CD-ROM、数字多功能盘(“DVD”)、HD-DVD、蓝光或其他光学存储,磁带盒、磁带、磁盘存储器或其他磁存储设备,或可以用来存储所需信息并可由计算机900访问的任何其他非易失性介质。
可以理解,此处的计算机可读介质也包括通信介质。通信介质通常以诸如载波或其他传输机制等已调制数据信号来体现计算机可读指令、数据结构、程序模块或其他数据,并包括任意信息传送介质。术语“已调制数据信号”是指其一个或多个特征以在信号中对信息进行编码的方式来设置或改变的信号。作为示例而非限制,通信介质包括诸如有线网络或直接线连接之类的有线介质,以及诸如声学、RF、红外及其他无线介质之类的无线介质。上述中任一组合也应包括在计算机可读介质的范围之内。计算机可读存储介质不包括通信介质。
根据各实施例,计算机900可以使用通过诸如网络920之类的网络到远程计算机的逻辑连接来在联网环境中操作。计算机900可以通过连接至总线904的网络接口单元906来连接到网络920。应当理解,网络接口单元906还可以被用来连接到其他类型的网络和远程计算机系统。计算机900还可以包括用于接收和处理来自多个其他设备的输入的输入/输出控制器912,这些设备包括键盘、鼠标或者电子指示笔(图9中未示出)。类似地,输入/输出控制器可以提供至显示屏、打印机或其他类型的输出设备(也未在图9中示出)的输出。
如前简述的那样,多个程序模块和数据文件可以存储在计算机900的海量存储设备910和RAM 914内,包括适于控制联网的台式计算机、膝上型计算机或服务器计算机的操作的操作系统918。海量存储设备910和RAM 914还可以存储一个或多个程序模块。具体地,海量存储设备910和RAM 914可存储Web浏览器应用程序102和/或Web应用114,以及以上所示的其它软件组件。海量存储设备910和RAM 914还可存储其他程序模块和数据,诸如命令流206。
一般而言,软件应用或模块在加载到CPU 902中并执行时,可将CPU 902和整个计算机900从通用计算系统变换成被定制成执行此处所呈现功能的专用计算系统。CPU 902可以用任意数量的晶体管或其他分立的电路元件(它们可以分别地或共同地呈现任意数量的状态)构建。更具体地说,CPU 902可以响应软件或模块内包含的可执行的指令,作为一个或多个有限状态机来操作。这些计算机可执行的指令可以通过指定CPU 902如何在多个状态之间转换来转换CPU 902,从而在物理上转换构成CPU 902的晶体管或其他分立的硬件元件。
通过将软件或模块编码到海量存储设备上,还可变换海量存储设备或相关联的计算机可读存储介质的物理结构。在本说明书的不同的实现中,物理结构的具体变换可取决于各种因素。这些因素的示例包括但不限于:用来实现计算机可读存储介质、计算机可读存储介质是否被表征为主存储还是次级存储等技术。例如,如果计算机可读取的存储介质是作为基于半导体的存储器实现的,则当软件被编码到其中时,软件或模块可以转换半导体存储器的物理状态。例如,软件可以转换构成半导体存储器的晶体管、电容器或其他分立的电路元件的状态。
作为另一个示例,计算机可读取的存储介质可以使用磁性或光学技术来实现。在这样的实现方式中,当软件被编码到其中时,软件或模块可以转换磁性或光学介质的物理状态。这些变换可以包括改变给定磁性介质内的特定位置的磁性。这些变换还可以包括改变给定光学介质内的特定位置的物理特征或特性,以改变这些位置的光学特性。在没有偏离本说明书的范围和精神的情况下,物理介质的其他转换也是可以的,前面提供的示例只是为了便于此讨论。
基于上述内容,可以理解,此处已经呈现了用于将文档编辑命令串行化为命令流以及使用该命令流的技术。虽然以计算机结构特征、方法动作、以及计算机可读介质专用的语言描述了本文呈现的主题,但是应该理解,在所附权利要求书中所限定的本发明不一定仅限于本文描述的具体特征、动作、或介质。相反,这些具体特征、动作和介质是作为实现权利要求的示例形式来公开的。
上述主题仅作为说明提供,并且不应被解释为限制。可对此处所述的主题作出各种修改和改变,而不必遵循所示和所述的示例实施例和应用,且不背离所附权利要求书中所述的本发明的真正精神和范围。
Claims (10)
1.一种包括执行计算机实现的操作的计算机实现的方法,所述计算机实现的操作用于:
存储文档(118);
在第一应用(114)处接收修改所述文档(118)的命令(202);
通过所述第一应用(114)串行化所接收的命令(202);
将经串行化的命令(202)存储在与所述文档(118)分开的命令流(206)中;
通过第二应用(502)修改所述文档以创建经修改的文档(118D);以及
由所述第一应用(114)将所述命令流(206)中的经串行化的命令(202)应用到所述经修改的文档(118D)。
2.如权利要求1所述的计算机实现的方法,其特征在于,还包括:
在所述第一应用处接收保存所述文档的请求;以及
响应于接收到所述请求,将所述命令流中的所述命令以串行次序应用到所述文档并保存所述文档。
3.如权利要求2所述的计算机实现的方法,其特征在于,还包括:
将所述文档和所述命令流保存到海量存储设备;
从易失性存储器卸载所述命令流;
接收第二命令;
响应于接收到所述第二命令,从所述海量存储设备加载所述文档,将所述命令流应用到所述文档,串行化所述第二命令,并将经串行化的第二命令存储在与所述文档分开的所述命令流中。
4.如权利要求2所述的计算机实现的方法,其特征在于,还包括:
标识一个或多个高负载服务器计算机;
标识所述高负载服务器计算机中的每一个上的一个或多个文档编辑会话;以及
对于所标识的文档编辑会话中的每一个,将命令流应用到与所述文档编辑会话相关联的文档,并将所述文档移到非高负载服务器计算机。
5.如权利要求4所述的计算机实现的方法,其特征在于,还包括:
标识执行用于编辑所述文档的下级应用程序的服务器计算机上的会话;
将所述命令流中的命令应用到与所述编辑会话相关联的文档;
将与所述编辑会话相关联的文档移到执行用于编辑所述文档的上级应用程序的服务器计算机;以及
在执行用于编辑所述文档的上级应用程序的服务器计算机上恢复所述编辑会话。
6.一种其上存储有计算机可执行指令的计算机可读存储介质,其特征在于,所述计算机可执行指令在由计算机执行时使得所述计算机:
存储文档(118);
接收修改所述文档(118)的命令(202);
串行化所接收的命令(202);
将经串行化的命令(202)存储在与所述文档(118)分开的命令流(206)中;
接收保存所述文档(118)的请求;以及
响应于接收到所述请求,将所述命令流(206)中的所述命令(202)以串行次序应用到所述文档(118)并保存所述文档(118)。
7.如权利要求6所述的计算机可读存储介质,其特征在于,第一应用修改所述文档以生成经修改的文档,且其中第二应用将经串行化的命令流中的所述命令应用到所述经修改的文档。
8.如权利要求7计算机可读存储介质,其特征在于,所述第一应用包括桌面客户端应用,并且其中所述第二应用包括Web应用。
9.如权利要求8所述的计算机可读存储介质,其特征在于,其上还存储有在由所述计算机执行时使所述计算机执行以下动作的计算机可执行指令:
将所述文档和所述命令流保存到海量存储设备;
从所述计算机的易失性存储器卸载所述命令流;
接收第二命令;
响应于接收到所述第二命令,从所述海量存储设备加载所述文档,将所述命令流应用到所述文档,串行化所述第二命令,并将经串行化的第二命令存储在与所述文档分开的所述命令流中。
10.如权利要求7所述的计算机可读存储介质,其特征在于,其上还存储有在由所述计算机执行时使所述计算机执行以下动作的计算机可执行指令:
标识一个或多个高负载服务器计算机;
标识所述高负载服务器计算机中的每一个上的一个或多个文档编辑会话;
对于所标识的文档编辑会话中的每一个,将命令流应用到与所述文档编辑会话相关联的文档,并将所述文档移到非高负载服务器计算机。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/939,171 US8527609B2 (en) | 2010-11-04 | 2010-11-04 | Serializing document editing commands |
US12/939,171 | 2010-11-04 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102541831A true CN102541831A (zh) | 2012-07-04 |
CN102541831B CN102541831B (zh) | 2015-04-22 |
Family
ID=46020675
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201110364224.7A Active CN102541831B (zh) | 2010-11-04 | 2011-11-03 | 串行化文档编辑命令的方法和设备 |
Country Status (11)
Country | Link |
---|---|
US (1) | US8527609B2 (zh) |
EP (1) | EP2635978A4 (zh) |
JP (1) | JP5898685B2 (zh) |
KR (1) | KR101805959B1 (zh) |
CN (1) | CN102541831B (zh) |
AU (1) | AU2011323848B2 (zh) |
CA (1) | CA2816019C (zh) |
RU (1) | RU2598325C2 (zh) |
SG (1) | SG189479A1 (zh) |
WO (1) | WO2012061102A2 (zh) |
ZA (1) | ZA201302899B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108431797A (zh) * | 2015-12-28 | 2018-08-21 | 微软技术许可有限责任公司 | 电子文档的存储器节约的版本控制 |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120192064A1 (en) * | 2011-01-21 | 2012-07-26 | Oudi Antebi | Distributed document processing and management |
US11611595B2 (en) | 2011-05-06 | 2023-03-21 | David H. Sitrick | Systems and methodologies providing collaboration among a plurality of computing appliances, utilizing a plurality of areas of memory to store user input as associated with an associated computing appliance providing the input |
US10402485B2 (en) | 2011-05-06 | 2019-09-03 | David H. Sitrick | Systems and methodologies providing controlled collaboration among a plurality of users |
US9110807B2 (en) | 2012-05-23 | 2015-08-18 | Sybase, Inc. | Cache conflict detection |
US8874682B2 (en) * | 2012-05-23 | 2014-10-28 | Sybase, Inc. | Composite graph cache management |
US20140082472A1 (en) * | 2012-09-14 | 2014-03-20 | David H. Sitrick | Systems And Methodologies For Event Processing Of Events For Edits Made Relative To A Presentation, Selecting A Selected Set Of Events; And Generating A Modified Presentation Of The Events In The Selected Set |
US20140082473A1 (en) * | 2012-09-14 | 2014-03-20 | David H. Sitrick | Systems And Methodologies Of Event Content Based Document Editing, Generating Of Respective Events Comprising Event Content, Then Defining A Selected Set Of Events, And Generating Of A Display Presentation Responsive To Processing Said Selected Set Of Events, For One To Multiple Users |
CN105630757B (zh) * | 2014-11-07 | 2019-11-26 | 珠海金山办公软件有限公司 | 一种数据编辑方法及装置 |
US20160306782A1 (en) * | 2015-04-20 | 2016-10-20 | Infraware Inc. | Method and apparatus for sharing common documents using dualized server |
US10909080B2 (en) * | 2015-05-04 | 2021-02-02 | Microsoft Technology Licensing, Llc | System and method for implementing shared document edits in real-time |
KR102187543B1 (ko) * | 2019-02-07 | 2020-12-07 | 주식회사 한글과컴퓨터 | 문서 편집 서버와 연동하여 웹 기반의 문서 작성을 처리하는 전자 단말 장치 및 그 동작 방법 |
BR112021018802A2 (pt) * | 2019-03-21 | 2021-11-23 | Divx Llc | Sistemas e métodos para enxames de multimídia |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050172300A1 (en) * | 2004-01-16 | 2005-08-04 | Microsoft Corporation | System and method for transferring computer-readable objects across a remote boundary |
US20080077848A1 (en) * | 2006-09-21 | 2008-03-27 | International Business Machines Corporation | Capturing and Processing Change Information in a Web-Type Environment |
CN101241505A (zh) * | 2008-02-01 | 2008-08-13 | 张建中 | 一种生成、部署和运行标记语言的方法和装置以及系统 |
US7769810B1 (en) * | 2007-04-26 | 2010-08-03 | Adobe Systems Incorporated | Method and system for collaborative editing |
Family Cites Families (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5339389A (en) * | 1991-12-31 | 1994-08-16 | International Business Machines Corporation | User selectable lock regions |
US6901425B1 (en) | 1996-12-23 | 2005-05-31 | International Business Machines Corporation | Computer apparatus and method including a disconnect mechanism for communicating between software applications and computers on the world-wide web |
JP4541465B2 (ja) * | 1998-09-10 | 2010-09-08 | ミルストーン トランスファー エージー、エル.エル.シー. | 電子タグ、電子タグ識別システム |
JP2002091813A (ja) * | 2000-09-18 | 2002-03-29 | Ricoh Co Ltd | 統合文書管理システム、方法、及びプログラムを記録したコンピュータ読み取り可能な記録媒体 |
US6993528B1 (en) | 2000-10-04 | 2006-01-31 | Microsoft Corporation | Methods and systems for allowing third party client applications to influence implementation of high-level document commands |
JP2003122732A (ja) * | 2001-10-16 | 2003-04-25 | Nec Corp | 情報通信システム |
US20030163570A1 (en) | 2002-02-26 | 2003-08-28 | Sun Microsystems, Inc. | Command line interface session tool |
JP2003288285A (ja) * | 2002-03-28 | 2003-10-10 | Fujitsu Ltd | サービス要求代行方法、サービス要求代行サーバ、及び、サービス要求代行システム |
US7395203B2 (en) * | 2003-07-30 | 2008-07-01 | Tegic Communications, Inc. | System and method for disambiguating phonetic input |
US7409693B2 (en) | 2003-10-30 | 2008-08-05 | International Business Machines Corporation | Method and system for providing version control of parameters in a command-based API using Java serialization |
US20050218739A1 (en) * | 2004-04-01 | 2005-10-06 | Microsoft Corporation | System and method for sharing objects between computers over a network |
US20060129634A1 (en) * | 2004-11-18 | 2006-06-15 | Microsoft Corporation | Multiplexing and de-multiplexing graphics streams |
US7607129B2 (en) * | 2005-04-07 | 2009-10-20 | International Business Machines Corporation | Method and apparatus for using virtual machine technology for managing parallel communicating applications |
US7814210B1 (en) * | 2005-04-29 | 2010-10-12 | Network Appliance, Inc. | Non-disruptive server replacement for server-based clients |
US20070220417A1 (en) * | 2006-03-17 | 2007-09-20 | Sonolink Communications Systems, Llc | System and method for editing online documents |
US8131860B1 (en) * | 2006-03-30 | 2012-03-06 | Emc Corporation | Serialization and deserialization |
US7810076B2 (en) * | 2006-09-22 | 2010-10-05 | International Business Machines Corporation | Method and system for scaling standalone applications to be executed as internet applications |
US7707191B2 (en) | 2007-01-18 | 2010-04-27 | Microsoft Corporation | Synchronizing undo/redo operations between different document views |
US8115773B2 (en) | 2007-06-07 | 2012-02-14 | Apple Inc. | Serializing command streams for graphics processors |
US8269780B2 (en) | 2007-06-07 | 2012-09-18 | Apple Inc. | Batching graphics operations with time stamp tracking |
US8368705B2 (en) | 2008-07-16 | 2013-02-05 | Google Inc. | Web-based graphics rendering system |
JP2010092141A (ja) * | 2008-10-06 | 2010-04-22 | Konica Minolta Business Technologies Inc | 画像処理システム、画像読取装置、画像処理装置および画像処理プログラム |
-
2010
- 2010-11-04 US US12/939,171 patent/US8527609B2/en active Active
-
2011
- 2011-10-25 SG SG2013029970A patent/SG189479A1/en unknown
- 2011-10-25 JP JP2013537696A patent/JP5898685B2/ja not_active Expired - Fee Related
- 2011-10-25 EP EP11838506.1A patent/EP2635978A4/en not_active Ceased
- 2011-10-25 AU AU2011323848A patent/AU2011323848B2/en not_active Ceased
- 2011-10-25 RU RU2013119974/08A patent/RU2598325C2/ru not_active IP Right Cessation
- 2011-10-25 CA CA2816019A patent/CA2816019C/en not_active Expired - Fee Related
- 2011-10-25 KR KR1020137011392A patent/KR101805959B1/ko active Search and Examination
- 2011-10-25 WO PCT/US2011/057611 patent/WO2012061102A2/en active Application Filing
- 2011-11-03 CN CN201110364224.7A patent/CN102541831B/zh active Active
-
2013
- 2013-04-22 ZA ZA2013/02899A patent/ZA201302899B/en unknown
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050172300A1 (en) * | 2004-01-16 | 2005-08-04 | Microsoft Corporation | System and method for transferring computer-readable objects across a remote boundary |
US20080077848A1 (en) * | 2006-09-21 | 2008-03-27 | International Business Machines Corporation | Capturing and Processing Change Information in a Web-Type Environment |
US7769810B1 (en) * | 2007-04-26 | 2010-08-03 | Adobe Systems Incorporated | Method and system for collaborative editing |
CN101241505A (zh) * | 2008-02-01 | 2008-08-13 | 张建中 | 一种生成、部署和运行标记语言的方法和装置以及系统 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108431797A (zh) * | 2015-12-28 | 2018-08-21 | 微软技术许可有限责任公司 | 电子文档的存储器节约的版本控制 |
Also Published As
Publication number | Publication date |
---|---|
EP2635978A4 (en) | 2018-01-03 |
ZA201302899B (en) | 2014-07-25 |
KR20140003419A (ko) | 2014-01-09 |
JP2013543190A (ja) | 2013-11-28 |
CA2816019C (en) | 2017-11-07 |
US20120117194A1 (en) | 2012-05-10 |
AU2011323848B2 (en) | 2016-05-05 |
CN102541831B (zh) | 2015-04-22 |
WO2012061102A2 (en) | 2012-05-10 |
EP2635978A2 (en) | 2013-09-11 |
JP5898685B2 (ja) | 2016-04-06 |
RU2013119974A (ru) | 2014-11-10 |
RU2598325C2 (ru) | 2016-09-20 |
SG189479A1 (en) | 2013-05-31 |
KR101805959B1 (ko) | 2017-12-07 |
WO2012061102A3 (en) | 2012-07-19 |
US8527609B2 (en) | 2013-09-03 |
CA2816019A1 (en) | 2012-05-10 |
AU2011323848A1 (en) | 2013-05-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102541831B (zh) | 串行化文档编辑命令的方法和设备 | |
US10977438B2 (en) | Latency reduction in collaborative presentation sharing environment | |
US8799477B2 (en) | Hypervisor selection for hosting a virtual machine image | |
KR102309210B1 (ko) | 디지털 콘텐츠를 위한 업데이트 개선 기법 | |
CN102341823A (zh) | 计算机上的内容再现 | |
US9229739B2 (en) | Creation and management of electronic files for a localization project | |
CN105229615A (zh) | 虚拟盘恢复和重新分布 | |
CN105573734B (zh) | 一种用于提供sdk文件的方法与设备 | |
CN107908401B (zh) | 基于Unity引擎的多媒体文件制作方法 | |
CN102736948A (zh) | 用于设置检查点并恢复程序状态的方法 | |
CN105094924A (zh) | 镜像文件的导入方法及装置 | |
WO2022199054A1 (zh) | 视频编辑方法和视频编辑装置 | |
CN105474177A (zh) | 分布式处理系统、分布式处理设备、分布式处理方法和分布式处理程序 | |
CN109634912A (zh) | 数据迁移方法及系统 | |
TW201426309A (zh) | 薄化書本 | |
CN103078805B (zh) | 使Zookeeper的读性能支持水平扩展的系统和方法 | |
US10540151B1 (en) | Graphical customization of a firmware-provided user interface (UI) | |
JP5255566B2 (ja) | データを処理するシステムおよび方法 | |
CN101059758B (zh) | 屏幕转换程序生成方法及设备 | |
CN104583965A (zh) | 将编码数据文件存储在多个文件服务器上 | |
CN111290701B (zh) | 数据读写控制方法、装置、介质和电子设备 | |
US20160164941A1 (en) | Method for transcoding mutimedia, and cloud mulimedia transcoding system operating the same | |
MXPA03007574A (es) | Interfase de programacion de aplicacion de desmultiplexor. | |
CN111596973B (zh) | 芯片内执行模式下的数据存储方法、装置及终端 | |
US20210124513A1 (en) | Power reduction in distributed storage systems |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
ASS | Succession or assignment of patent right |
Owner name: MICROSOFT TECHNOLOGY LICENSING LLC Free format text: FORMER OWNER: MICROSOFT CORP. Effective date: 20150720 |
|
C41 | Transfer of patent application or patent right or utility model | ||
TR01 | Transfer of patent right |
Effective date of registration: 20150720 Address after: Washington State Patentee after: Micro soft technique license Co., Ltd Address before: Washington State Patentee before: Microsoft Corp. |