消息的最小划分的制作方法

文档序号:7554602阅读:120来源:国知局
专利名称:消息的最小划分的制作方法
背景技术
发明领域本发明涉及网络通讯技术,更特别地,涉及划分同步消息为多个最小可处理的组件的机制。
背景技术
和相关技术计算技术使人们工作和娱乐的方式发生了巨大变化并对人类的进步作出了巨大贡献。目前计算机在字处理、计算机模拟、高级游戏、语音识别等等无以计数的应用中对人们提供帮助。目前计算系统以更广泛的形式出现,例如,桌面计算机、膝上型计算机、个人数字助理(PDA),甚至移动电话及移动设备。
某些移动无线设备如个人数字助理和无线电话有复杂的存储器和允许移动设备执行很多原先只能由更大的桌面计算机执行的任务的通用处理能力。这些任务甚至包括需要在数据网络上通讯的任务。然而,不管这样复杂的手持计算系统,和更大的桌面甚至膝上计算系统相比在更小的设备上存储器受到更多限制。
由于系统存储器的数量相对受限,分配给接收缓冲器的存储器的数量也是很小的。如果通讯量更大,如当同步层次数据结构时,通讯量可能比接收缓冲器要大。这导致部分通讯丢失,在一些情况下导致完全失去处理通讯的能力。
相应地,所需的是一种同步层次数据结构来适应可能太小而不能在单个消息中容纳所有同步信息的接收缓冲器的机制。
发明概要现有技术的上述问题由本发明的原理来克服,本发明的原理指同步存储在客户机计算系统上的层次数据结构版本和存储在服务器上的层次数据结构版本的机制。即使客户机计算系统的接收缓冲不能容纳包含所有改变需要同步进行的单个消息,同步也可以发生。层次数据结构有多个可以独立寻址的最小可编辑的组件,并且甚至可以有它们自己的更改追踪信息。
在确定将发生同步时,为了同步层次文档的客户机版本和层次文档的服务器版本,服务器标识所有需要对客户机版本进行的更改。每个更改包括编辑(例如,插入,更改或删除)数据结构的一个或多个最小可编辑的组件。如果服务器估计包含所有多个更改的单个消息不能被客户机计算系统的接收缓冲器容纳,那么服务器划分同步信息为多个消息。
不像已有的划分技术,每个单独的消息在接收时可以被最小地处理来完成部分同步。换句话说,如果同步信息被划分为两个最小可处理的消息,并且如果只有其中一个消息被接收并处理,层次数据结构仍然能符合该方案并且处理该结构的应用程序仍然能够对该数据结构进行操作。
服务器组装包含第一组少于所有的同步更改的第一个消息,并也组装一个或多个每个包含其他同步更改的其他消息。这些消息,当被视为一个整体时,包含所有的同步更改,虽然它们中的任何一个都不单独地包含所有的同步更改。相应地,每个单独的消息会更小从而更适合纳入客户机计算系统的接收缓冲器。
然后每个消息被独立地发送到客户机计算机系统。接着客户机计算系统可以最小地处理每个消息。对每个在单个消息中标识的要进行的更改,客户机计算系统标识由该更改包括的最小可编辑的组件,并且以该更改指定的方式编辑(即,插入、更改或删除)最小可编辑的组件。由于更改包括层次数据结构的最小可编辑的组件,可以实现该更改而无需所有的同步更改。相应地,不需要高速缓存任何消息(假设它们以正确的次序到达)。每个消息被接收、处理然后丢弃,即使没有消息表示所有将要进行的更改。
然而,如果比还没有接收到的一个消息有更晚更改的消息被接收到,会发生一些高速缓存。在那种情况下,包含更晚更改的消息可以被高速缓存直到包含更早更改的消息被接收并处理。这相对来说很少发生,由于服务器很可能在发送有更晚更改的消息之前先发送有更早更改的消息。毕竟,消息通常以被发送的顺序到达。
以这种方式,通讯不会因为接收缓冲大小不足而被丢弃。进一步来说,更改可以在接收到时被处理,即使完全同步还未完成。如果没有接收到一些消息,只有那些没有接收到的消息需要被发送从而节省了网络带宽。替换地,从实现的角度只发送开始于第一个丢失的消息的那些消息(即使在第一个已丢失的消息之后的一些消息已经被接收到而并未全丢失)会更加简单。无论采取哪种方式,只需要发送更少的消息。
本发明附加的特性和优点将在下面的说明中阐明,并且部分将从说明中变得显而易见,或通过本发明的实践得知。本发明的特性和优点可以通过在后附的权利要求中特别指明的工具和组合的方法实现和获得。本发明的这些和其他特性将从下面的说明和后附的权利要求中,或通过随后阐明的本发明的应用变得更加显而易见。


为了说明获得本发明的上述和其他有点及特性的方式,将引用在附图中展示的具体实例进行本发明上面简短说明的更特别的说明。应理解这些附图仅说明本发明的典型实例并不应被看作是本发明范围的限制,将使用附图更加具体和详细地说明和解释本发明。
图1展示适合本发明的原理的操作环境;图2展示有最小可编辑的组件的层次数据结构;图3展示在其中客户机和服务器都能够访问层次数据结构的一个版本的网络环境,其中进一步的更改已对层次数据结构的服务器版本进行;及图4展示根据本发明的原理同步层次数据结构的客户机和服务器版本的方法。
图5展示包含所有几个更改的单个消息的例子。
首选实例详细说明本发明的原理涉及同步存储在客户机计算系统上的层次数据结构的版本和存储在服务器计算系统上的该层次数据结构的版本的机制。层次数据结构有几个可以独立寻址的最小可编辑的组件。在确定经发生同步后,为了同步层次文档的客户机版本和层次文档的服务器版本,服务器标识所有需要对客户机版本进行的更改。每个更改包括编辑(例如,插入、更改或删除)数据结构的一个或多个最小可编辑的组件。如果服务器确定包含所有多个更改的单个消息不能被包含在客户机计算系统的接收缓冲器内,那么服务器划分同步信息为多个消息,然后单独地发送消息到客户机计算系统。
然后客户机计算系统可以最小地处理每个消息。对每个在单个消息中标识的要进行的更改,客户机计算系统标识由该更改包括的最小可编辑的组件,并且以该更改指定的方式编辑(即,插入、更改或删除)最小可编辑的组件。由于更改包括层次数据结构的最小可编辑的组件,可以实现该更改而无需所有的同步更改。
在本发明范围内的实例包括承载或包含计算机可执行指令或存储于其上的数据结构的计算机可读媒体。这样的计算机可读媒体可以为任何可以由通用或专用计算机访问的可用媒体。作为例子,并非限制,这样的计算机可读媒体可以包括物理的计算机可读媒体如RAM、ROM、EEPROM、CD-ROM或其他光盘存储、磁盘存储或其他磁存储设备,或可以用来承载或存储形式为计算机可执行指令或数据结构并可以由通用或专用计算机访问的所需的程序代码方法的任何其他媒体。
当通过网络或其他通讯连接(有线、无线或有线无线的组合)传输或提供信息到计算机,计算机适当地将该连接视为计算机可读媒体。因此,任何这样的连接被适当地称为一种计算机可读媒体。上述的组合也应包括在计算机可读媒体的范围之中。计算机可执行指令包括,例如,任何使通用计算机、专用计算机或特殊目的处理设备执行特定功能或功能组的指令和数据。例如,计算机可执行指令可以为二进制格式、中间格式指令如汇编语言,甚至源代码。
图1和下面的说明用于提供在其中实现本发明的适合的计算环境的简短的一般性说明。虽然不是必须的,本发明将在计算机可执行指令,如由计算机系统执行的程序模块的一般性上下文中进行说明。通常,程序模块包括例行程序、程序、对象、组件、数据结构,及其类似,它们执行特定任务或实现特定的抽象数据类型。计算机可执行指令、相关联的数据结构及程序模块代表执行这里所揭示的方法的动作的程序代码方法的例子。
参考图1,适合本发明的原理的操作环境包括形式为计算机系统100的通用计算机系统。例如,计算机系统100可以为适合执行这里揭示的操作的个人计算机。
计算机系统100包括从输入设备,如键盘、麦克风、鼠标,或更小的移动设备的情况,触摸垫接收信息的用户输入接口170。输入设备可以连接到用户输入接口170以使得能够输入信息。输入设备可以通过这样的耦合传输信息以响应预先编程的数据或用户对输入设备的处理。
计算机系统100包括提供视频输出信号到外部视频输出设备的视频输出接口150。计算机系统100可以集成或独立于视频显示设备,如,彩色或单色计算机监视器。视频显示设备可以连接到视频输出接口150以接收所提供的视频输出信号。在较小的移动设备情况下,视频输出接口可以和更小的显示设备连接。
类似地,计算机系统100包括提供音频输出信号到外部音频输出设备的音频输出接口130。计算机系统100可以集成或独立于音频系统,音频系统可以包括扬声器或其他能够发出声音的设备。音频系统可以连接到音频输出接口130以接收所提供的音频输出信号。
计算机系统100包括处理单元120,它提供复杂和灵活的通用处理能力。处理单元120执行设计用于实现计算机系统100特性,包括本发明的特性的计算机可执行指令。处理单元120耦合到系统总线110,系统总线110也连接各种其他系统组件,包括系统存储器140。
系统存储器140通常表示很多不同的易失和/或非易失存储器并可以包括先前说明的各种类型的存储器。然而,用在计算机系统100中的存储器的特定类型对本发明并不重要。包括一个或多个程序模块的程序代码方法可以被存储在系统存储器140中。一个或多个程序模块可以包括操作系统141、一个或多个应用程序142、其他程序模块143,及程序数据144。
计算机系统100可以包括大容量存储接口160,它对大容量存储设备,例如,磁盘或光盘,读取数据和/或写入数据。大容量存储设备可以连接到大容量存储接口160以使得能够读取和写入数据。当大容量存储设备连接到大容量存储接口160时,包括操作系统141、一个或多个应用程序142、其他程序模块143,及程序数据144的一个或多个程序模块可以被存储在大容量存储设备中。然而,更小的移动设备不一定由任何这样的大容量存储器。
计算机系统100可以连接到网络,例如,办公室范围或企业范围的计算机网络、企业内部互联网、因特网和/或通信载体网。计算机系统100包括网络接口180,通过网络接口180计算机系统100从外部源接收数据并/或发送数据到外部源。计算机系统100可以通过这样的网络和外部源,例如,远程处理器系统和/或数据库交换数据。
虽然图1展示了可以实现本发明原理的计算系统的例子,任何计算系统都可以实现本发明的特性。在说明和权利要求中,“计算系统”广泛地定义为任何硬件组件或能够使用软件来执行一种或多种功能的组件。计算系统的例子包括桌面计算机、膝上型计算机、个人数字助理(PDA)、电话或其他任何由处理能力的系统或设备。
图2展示在其中本发明的原理可以工作的网络环境200。网络环境200包括通过网络220通讯的客户机计算系统210和服务器计算系统230。客户机计算系统210可以为只有相对小的接收缓冲212的相对有限的存储器设备。这样的设备的一个例子可以为移动电话或移动个人数字助理(PDA)。客户机计算系统210和服务器计算系统230可以每个都有如上关于计算机系统100那样的结构。如果客户机计算系统210为计算机系统100,接收缓冲器212可以从系统存储器140中分配。
服务器计算系统230和客户机计算系统210能够进行双向通讯。然而,当服务器计算系统230和客户机计算系统210通讯时,服务器计算系统230发送消息到客户机接收缓冲器,如箭头221所示。例如,当同步层次数据结构的客户机版本211和层次数据结构的服务器版本231时执行这个通讯。
在说明和权利要求中,“层次数据结构”可以为任何包含以父子层次结构安排的数据字段的数据结构。允许这种层次组织的格式的一个例子是可扩展标记语言(XML)。
虽然层次文档可以采取各种层次形式,图3展示层次数据结构300的具体的原理表示,在其中层次数据结构中的每个节点由圆圈或十字表示。
由圆圈表示的节点(即,节点301到305)表示那些可以被最小编辑的节点。换句话说,每个最小可编辑的节点可以被编辑(例如,插入、更改或删除)而不影响层次树中的其他节点。可任选地,每个最小可编辑的节点也可以有允许改变按照对具体的最小可编辑的节点的编辑来表达的更改追踪信息。
由十字表示的节点(即,节点306到317)表示不可以最小编辑的节点。为了编辑节点306-317,应编辑在层次数据结构的祖先线上对应的最小可编辑节点。例如,为了编辑节点308,应编辑整个节点302。在一些情况下,希望限制哪些节点是最小可编辑的以限制维护层次数据结构所需的处理和存储器资源的量。使用这样的层次数据结构的数据模型的一个例子在共同拥有的待批准美国专利申请序列号[律师档案记录号NO.13768.198.3]中说明,该申请通过引用被完整包含于此。虽然数据结构300由一些最小可编辑的节点和一些非最小可编辑的节点,本发明的原理也可以应用于数据结构中的所有节点都是最小可编辑的数据结构。
图4展示根据本发明的原理同步层次数据结构的服务器版本和客户机版本的方法400的流程图。由服务器执行的一个步骤和几个动作在方法400的右边一栏“服务器”的标题下展示。另一方面,由客户机执行的几个动作在方法400的左边一栏“客户机”的标题下展示。
服务器确定将在层次数据结构的服务器版本和客户机版本之间进行同步(动作401)。这个确定可以被作出以响应客户机发送同步请求到服务器。替换地,服务器可以基于它自身的状态信息确定进行同步而无需先收到来自客户机的同步请求。例如,服务器可以定期同步,或在服务器版本被更改达到预定次数时同步,或及其类似。
服务器也标识将应用于层次数据结构的客户机版本的同步更改(动作402)。动作401和402并行展示以强调这两个动作之间没有时间相关性。例如,服务器可以在同步更改发生时连续地标识它们,而不管是否将要进行同步。
例如,可以通过比较表示层次数据结构的客户机版本的状态的更改标识符和表示层次数据结构的服务器版本的状态的更改标识符来标识同步更改。表示客户机版本的状态的更改标识符可以从客户机自身接收,或在上次同步发生时已由服务器更新并被高速缓存。
然后方法400包括功能性的、面向结果的步骤以适应接收缓冲器大小的方式发送更改到客户机计算系统(步骤410)。这个步骤可以包括任何对应的实现该步骤的动作。然而,在所示的实例中,步骤410包括具体的对应动作404到409。
更具体地,服务器估计包含所有多个更改的单个消息不能被包含在客户机计算系统的接收缓冲内(动作403)。为了实现这点,服务器可以估计包含所有更改的单个消息的近似大小,估计客户机计算系统接收缓冲器的近似大小,然后确定接收缓冲器的大小大于(或至少危险地接近)单个消息的大小。客户机可以事先对服务器注册信息,或者明确地列出接收缓冲器的大小,或者给出足够的信息使得能够推断出接收缓冲器大小的合理估计。例如,如果客户机为在同一品牌的设备中一致地有同样的接收缓冲器大小的特定品牌的无线设备,那么可以基于无线设备的品牌推断出接收缓冲器的大小。替换地,接收缓冲器的大小可以表示在任何接收自客户机的同步请求中。
然后服务器组装每个包含少于所有同步更改数目的几个消息。例如,服务器组装包含第一组少于所有的同步更改的第一个消息(步骤404),组装包含第二组不是第一组的部分的余下更改的至少部分的第二个消息(步骤405),并且如果第二个消息不包含所有余下的更改,那么组装更多的消息,如水平的省略号406所示。
图5展示包含所有几个更改511、512、513和514的单个消息的例子。图5也展示了在其中有一系列每个包含少于所有更改的较小的消息的其他选择。例如,消息521仅包含一个同步更改511,消息522也仅包含一个同步更改512,并且消息523包含两个同步更改513和514。任何给定消息521到523的大小都小于单个消息510的大小并且因此更可能在接收缓冲中接收,即使接收缓冲小于单个消息510。
在一个例子中,每个消息为一个简单对象访问协议(SOAP)封包。当发送两个消息时,第一个SOAP封包的头部分将包含关联第一个消息和第二个消息的头部分,并且包含有第一组更改的主体部分。第二个SOAP封包将包含关联第二个消息和第一个消息的头部分,并且包含有第二组更改的体部分。
然后服务器发送第一个和第二个消息并潜在地把任何进一步的还包含同步更改的消息发送到客户机计算系统(各自为动作407、408和409),于是客户机接收到第一个、第二个和潜在地进一步的消息(各自为动作411、412和413)。然后客户机处理在第一个请求中接收到的第一组更改中的所有同步更改(动作414)并接着处理在第二组更改中的所有同步更改(动作415),也处理在后面的消息中接收的任何其他更改。
在一个实例中,在第一个消息中接收到的同步更改要在后面的消息中的更改之前应用。相应地,如果后面的消息在第一个消息之前接收到,那么可以高速缓存后面的消息直到接收和处理完第一个消息。在更一般的情况下,在其中以被发送的顺序接收消息,可以在接收到它们时处理消息,因为所应用的更改对数据结构是最小可编辑的而不会使数据结构违反原则或破坏数据结构。相应地,可以在接收到消息时接收、处理,并丢弃它们,而非一旦接收到它们时尝试执行更加处理器和存储器密集的重组装所有更改的任务,然后在一个事务处理中应用更改。
虽然本发明的原理决不仅限于为SOAP封包的消息,下面的SOAP下方展示当包含三个不同的同步更改时消息的样子的一个例子。一个同步更改是删除有为7的标识符的节点,另一个是编辑有为5的标识符的节点,而另一个是删除另一个有为12的标识符的节点。如果这些所有的更改被提供在单个例子消息中,该例子消息将与下面类似<pre listing-type="program-listing"><![CDATA[<sEnvelope> <sHeader><srppath><srpfrom>“http//mywidgets.mobile.msn.com”</srpfrom> <srpid>23</srpid> <srprelatesTo>202</srprelatesTo> </srppath> <sslicense>“lf2e3d4c5b6a”</mslicense> <msresponse service=“myWidgets”previousChangeNumber=“8” changeNumber=“11”/></sHeader><sBody><msqueryResponse> <mschangeQueryResponse baseChangeNumber=“11” status=“success”> <msdeletedBlue id=“7”changeNumber=“9”/> <mwidget id=“5”changeNumber=“10”><mname xmllang=“en”>Widget 5<mname><munitPrice currency=“USD”>128.00 </munitPrice> </mwidget> <msdeletedBlue id=“12”changeNumber=11”/> </mschangeQueryResponse> </msqueryResponse></sBody></sEnvelope>]]></pre>在这个请求中,行1到23为整个SOAP封包。行2到10表示SOAP封包的头部分,而行11到22表示SOAP封包的主体。对于头部分,行3-7定义了该消息采取的具体路径,而行8表示许可证信息。行9表示原先的更改号和一旦完全实现更改后将应用到层次数据结构的更改号。相应地,在应用更改之前数据结构的更改号为8,而在应用更改之后的更改号为11。该消息因此包含由9、10、11标识的所有三个更改。第一个更改在SOAP封包的主体中的行14表示。第二个更改在行15-18表示。第三个更改在行19表示。
如果所有三个更改9、10和11都包括在同一SOAP封包中,单个例子SOAP封包可能对接收缓冲器太大。相应地,下面展示三个具体的SOAP封包,每个仅包含一个更改。下面展示包含第一个更改的第一个SOAP封包<pre listing-type="program-listing"><![CDATA[<sEnvelope><sHeader> <srppath> <srpfrom>“http//mywidgets.mobile.msn.com”</srpfrom> <srpid>23</srpid> <srprelatesTo>202</srprelatesTo> </srppath> <sslicense>“1f2e3d4c5b6a”</mslicense><msresponse service=“myWidgets”previousChangeNumber=“8”changeNumber=“9”/></sHeader><sBody><msqueryResponse> <mschangeQueryResponse baseChangeNumber=“11” status=“success”> <msdeletedBlue id=“7”changeNumber=“9”/> </mschangeQueryResponse></msqueryResponse> </sBody></sEnvelope>]]></pre>第一个片段的SOAP封包类似于单个例子SOAP封包,除了行9标识了如果应用所有的更改则当前更改号应为9。进一步来说,主体仅包含更改9,即删除有为7的标识符的节点。
第二个片段如下<pre listing-type="program-listing"><![CDATA[<sEnvelope> <sHeader> <srppath><srpfrom>“http//mywidgets.mobile.msneom”</srpfrom><srpid>24</srpid><srprelatesTo>202</srprelatesTo></srppath><sslicense>“1f2e3d4c5b6a”</mslicense><msresponse service=“myWidgets”previousChangeNumber=“9”changeNumber=“10”/></sHeader><sBody><msqueryResponse> <mschangeQueryResponse baseChangeNumber=“11” status=“success”> <mwidget id=“5”changeNumber=“10”><mname xmllang=“en”>Widget 5</mname><munitPrice currency=“USD”>128.00</munitPrice></mschangeQueryResponse> </msqueryResponse></sBody></sEnvelope>]]></pre>第二个片段的SOAP封包类似于单个例子SOAP封包,除了行9标识了如果应用所有的更改则当前更改号应为10。相应地,这第二个片段应该在应用第一个片段之后应用到客户机版本。进一步来说,主体仅包含更改10,即编辑有为5的标识符的节点。
第三个片段如下
<pre listing-type="program-listing"><![CDATA[<sEnvelope><sHeader> <srppath> <srpfrom>“http//mywidgets.mobile.msn.com”</srpfrom> <srpid>25</srpid> <srprelatesTo>202</srprelatesTo> </srppath> <sslicense>“1f2e3d4c5b6a”</mslicense> <msresponse service=“myWidgets”previousChangeNumber=“10” cbangeNumber=“11”/></sHeader><sBody> <msqueryResponse><mschangeQueryResponse baseChangeNumber=“11” status=“success”> <msdeletedBlue id=“12”changeNumber=“11”/> </mschangeQueryResponse> </msqueryResponse></sBody></sEnvelope>]]></pre>第三个片段的SOAP封包类似于单个例子SOAP封包,除了行9标识了如果应用所有的更改则当前更改号应为11。相应地,这第三个片段应该在应用第二个片段之后应用到客户机版本。进一步来说,体仅包含更改11,即删除有为12的标识符的节点。
为了提供本发明的原理的实际例子而提供这个SOAP封包例子。然而,本发明的原理并不仅限于这样的例子。进一步来说,虽然例子片段SOAP消息仅比例子单个SOAP消息小一点点(例如,18、21和18行XML代码和23行XML代码相比),如果更改的数量更大,那么大小的减少将更加有意义。
相应地,本发明的原理提供通过其可以从服务器发送到客户机的同步更改是适应接收缓冲器的更小的片段而显著地不带来更多通常需要用来重组装更改并随后作为事务应用这些更改的处理和存储器能力的机制。
本发明可以通过其他具体的形式实现而不偏离本发明的精神或本质特征。所述实例在任何方面仅为示意性而非限制性。本发明的范围,因此,是由后附的权利要求而不是上述说明指出。所有在权利要求等价的意义和范围内的更改,都应被认为在它们的范围之内。
权利要求
1.在包括服务器计算系统和客户机计算系统的计算机网络中,服务器计算系统和客户机计算系统每个包含有多个最小可编辑的组件的层次数据结构的一个版本,一种服务器计算系统同步层次数据结构的服务器版本和客户机版本,即使客户机计算系统的接收缓冲器的存储器不足以同时包含具有用来同步服务器版本和客户机版本的所有同步数据的单个消息的方法,其特征在于,该方法包括确定将在层次数据结构的服务器版本和客户机版本之间进行同步的动作;如果需要进行同步,标识需要进行的多个更改的动作,所述多个更改的每一个包括对一个或多个最小可编辑的组件的更改;估计包含所有多个更改的单个消息不能由客户机计算系统的接收缓冲器容纳的动作;组装包含第一组少于所有多个更改的第一个消息的动作;组装包含第二组并非第一组的部分的多个更改的至少部分的第二个消息的动作;发送第一个消息到客户机计算系统的动作;及发送第二个消息到客户机计算系统的动作。
2.如权利要求1所述的方法,其特征在于,所述第二组不包含所有并非第一组的部分的多个更改,所述方法进一步包括组装包含不在第一组或第二组中的多个更改的一个或多个其他消息。
3.如权利要求1所述的方法,其特征在于,所述确定将在层次数据结构的服务器版本和客户机版本之间进行同步的动作包括接收来自客户机计算系统的请求同步的动作。
4.如权利要求1所述的方法,其特征在于,所述确定将在层次数据结构的服务器版本和客户机版本之间进行同步的动作包括服务器计算系统基于它自身的状态信息确定进行同步而无需先收到来自客户机计算系统的同步的请求同步的动作。
5.如权利要求1所述的方法,其特征在于,所述如果需要进行同步,标识需要进行的多个更改的动作包括比较表示层次数据结构的客户机版本的状态的更改标识符和表示层次数据结构的服务器版本的状态的更改标识符的动作。
6.如权利要求5所述的方法,其特征在于,进一步包括接收来自客户机计算系统的表示层次数据结构的客户机版本的状态的更改标识符的动作。
7.如权利要求5所述的方法,其特征在于,进一步包括从本地数据库获取表示层次数据结构的客户机版本的状态的更改标识符的动作。
8.如权利要求1所述的方法,其特征在于,所述估计包含所有多个更改的单个消息不能由客户机计算系统的接收缓冲器容纳的动作包括估计单个消息大小的动作;估计客户机计算系统的接收缓冲器大小的动作;及估计单个消息大小大于接收缓冲器大小的动作。
9.如权利要求8所述的方法,其特征在于,所述估计客户机计算系统的接收缓冲器大小的动作包括从客户机计算系统接收缓冲器大小的指示的动作;及估计接收缓冲器大小是如客户机计算系统所指定的那样大小的动作。
10.如权利要求1所述的方法,其特征在于,所述组装包含第一组少于所有多个更改的第一个消息的动作包括构建包含关联第一个消息和第二个消息的头部分,并且包含有第一组更改的主体部分的第一个简单对象访问协议(SOAP)封包的动作。
11.如权利要求10所述的方法,其特征在于,所述组装包含第二组的并非第一组的部分的多个更改的至少部分的第二个消息的动作包括构建包含关联第二个消息和第一个消息的头部分,并且包含有第二组更改的主体部分的第二个简单对象访问协议(SOAP)封包的动作。
12.一种在包括服务器计算系统和客户机计算系统的计算机网络中使用的计算机程序产品,服务器计算系统和客户机计算系统每个包含有多个最小可编辑的组件的层次数据结构的一个版本,该计算机程序产品用于实现一种服务器计算系统同步层次数据结构的服务器版本和客户机版本,即使客户机计算系统的接收缓冲器的存储器不足以同时包含有用来同步服务器版本和客户机版本的所有同步数据的单个消息的方法,其特征在于,所述计算机程序产品包括一个或多个计算机可读媒体有下列内容存储于其上确定将在层次数据结构的服务器版本和客户机版本之间进行同步的计算机可执行指令;如果需要进行同步,标识需要进行的多个更改的计算机可执行指令,所述多个更改的每一个包括对一个或多个最小可编辑的组件的更改;估计包含所有多个更改的单个消息不能由客户机计算系统的接收缓冲器容纳的计算机可执行指令;组装包含第一组的少于所有多个更改的第一个消息的计算机可执行指令;组装包含第二组的并非第一组的部分的多个更改的至少部分的第二个消息的计算机可执行指令;使第一个消息被发送到客户机计算系统的计算机可执行指令;及使第二个消息被发送到客户机计算系统的计算机可执行指令。
13.如权利要求12所述的计算机程序产品,其特征在于,所述用于确定将在层次数据结构的服务器版本和客户机版本之间进行同步的计算机可执行指令包括检测来自客户机计算系统的同步请求的接收的计算机可执行指令。
14.如权利要求12所述的计算机程序产品,其特征在于,所述确定将在层次数据结构的服务器版本和客户机版本之间进行同步的计算机可执行指令包括服务器计算系统基于它自身的状态信息确定进行同步而无需先收到来自客户机的对于同步的同步请求的计算机可执行指令。
15.如权利要求12所述的计算机程序产品,其特征在于,所述计算机可执行指令用于如果需要进行同步,标识需要进行的多个更改,所述多个更改的每一个包括对一个或多个最小可编辑的组件的更改包括用于比较表示层次数据结构的客户机版本的状态的更改标识符和表示层次数据结构的服务器版本的状态的更改标识符的计算机可执行指令。
16.如权利要求15所述的计算机程序产品,其特征在于,所述一个或多个计算机可读媒体进一步包括在其上存储检测来自客户机计算系统的表示层次数据结构的客户机版本的状态的更改标识符的接收的计算机可执行指令。
17.如权利要求15所述的计算机程序产品,其特征在于,所述一个或多个计算机可读媒体进一步包括在其上存储用于从本地数据库获取表示层次数据结构的客户机版本的状态的更改标识符的计算机可执行指令。
18.如权利要求12所述的计算机程序产品,其特征在于,所述估计包含所有多个更改的单个消息不能由客户机计算系统的接收缓冲容纳器的计算机可执行指令包括估计单个消息大小的计算机可执行指令;估计客户机计算系统的接收缓冲器大小的计算机可执行指令;及估计单个消息大小大于接收缓冲器大小的计算机可执行指令。
19.如权利要求18所述的计算机程序产品,其特征在于,所述估计客户机计算系统的接收缓冲器大小的计算机可执行指令包括用于检测从客户机计算系统来的缓冲器大小的指示的接收的计算机可执行指令;及估计缓冲大小是如客户机计算系统所指定的那样大小的计算机可执行指令。
20.如权利要求12所述的计算机程序产品,其特征在于,所述组装包含第一组少于所有多个更改的第一个消息的计算机可执行指令包括用于构建包含关联第一个消息和第二个消息的头部分,并且包含有第一组更改的主体部分的第一个简单对象访问协议(SOAP)封包的计算机可执行指令。
21.如权利要求20所述的计算机程序产品,其特征在于,所述组装包含第二组并非第一组的部分的多个更改的至少部分的第二个消息的计算机可执行指令包括用于构建包含关联第二个消息和第一个消息的头部分,并且包含有第二组更改的主体部分的第二个简单对象访问协议(SOAP)封包的计算机可执行指令。
22.如权利要求12所述的计算机程序产品,其特征在于,所述一个或多个计算机可读媒体为物理存储媒体。
23.在包括服务器计算系统和客户机计算系统的计算机网络中,服务器计算系统和客户机计算系统每个包含有多个最小可编辑的组件的层次数据结构的一个版本,一种服务器计算系统同步层次数据结构的服务器版本和客户机版本,即使客户机计算系统的接收缓冲器的存储器不足以同时包含有用来同步服务器版本和客户机版本的所有同步数据的单个消息的方法,其特征在于,该方法包括确定将在层次数据结构的服务器版本和客户机版本之间进行同步的动作;如果需要进行同步,标识需要进行的多个更改的动作,所述多个更改的每一个包括对一个或多个最小可编辑的组件的更改;及以适应接收缓冲器大小的方式发送多个更改到客户机计算系统的步骤。
24.如权利要求23所述的方法,其特征在于,所述以适应接收缓冲器大小的方式发送多个更改到客户机计算系统的步骤包括估计包含所有多个更改的单个消息不能由客户机计算系统的接收缓冲器容纳的动作;组装包含第一组的少于所有多个更改的第一个消息的动作;组装包含第二组的并非第一组的部分的多个更改的至少部分的第二个消息的动作;发送第一个消息到客户机计算系统的动作;及发送第二个消息到客户机计算系统的动作。
25.在包括服务器计算系统和客户机计算系统的计算机网络中,服务器计算系统和客户机计算系统每个包含有多个最小可编辑的组件的层次数据结构的一个版本,一种服务器计算系统同步层次数据结构的服务器版本和客户机版本,即使客户机计算系统的接收缓冲器的存储器不足以同时包含有用来同步服务器版本和客户机版本的所有同步数据的单个消息的方法,其特征在于,该方法包括接收同步层次数据结构的客户机版本和层次数据结构的服务器版本所需的包含第一组的少于所有多个更改的第一个消息的动作,所述多个更改的每一个包括对一个或多个最小可编辑的组件的更改;处理第一组更改中的所有更改的动作;接收包含第二组的并非第一组的部分的多个更改的至少部分的第二个消息的动作,所述多个更改的每一个包括对一个或多个最小可编辑的组件的更改;及处理第二组更改中的所有更改的动作,所述处理第一组和第二组更改中的所有更改的动作对每个更改包括标识由更改包括的最小可编辑的组件的动作;及以更改指定的方式编辑最小可编辑的组件的动作。
26.如权利要求25所述的方法,其特征在于,进一步包括发送同步请求到服务器计算系统的动作。
27.如权利要求25所述的方法,其特征在于,所述接收同步层次数据结构的客户机版本和层次数据结构的服务器版本所需的包含第一组的少于所有多个更改的第一个消息的动作包括接收包含关联第一个SOAP封包和第二个SOAP封包的头部分的第一个SOAP封包的动作,所述第一个SOAP封包有包含第一组更改的主体部分。
28.如权利要求27所述的方法,其特征在于,所述接收包含第二组的并非第一组的部分的多个更改的至少部分的第二个消息的动作,所述多个更改的每一个包括对一个或多个最小可编辑的组件的更改包括接收包含关联第二个SOAP封包和第一个SOAP封包的头部分并且有包含第二组更改的主体部分的第二个SOAP封包的动作。
29.如权利要求25所述的方法,其特征在于,所述接收包含第二组的并非第一组的部分的多个更改的至少部分的第二个消息的动作,所述多个更改的每一个涉及对一个或多个最小可编辑的组件的更改包括接收包含关联第二个SOAP封包和第一个SOAP封包并且包含第二组更改的主体部分的第二个SOAP封包的动作。
30.如权利要求25所述的方法,其特征在于,进一步包括确定第一组更改表示了在第二组更改之前进行的更改的动作。
31.如权利要求30所述的方法,其特征在于,所述确定第一组更改表示了在第二组更改之前进行的更改的动作包括比较来自第一个消息的更改标识符和来自第二个消息的更改标识符的动作。
32.如权利要求31所述的方法,其特征在于,所述确定第一组更改表示了在第二组更改之前进行的更改的动作包括确定第一个消息和第二个消息关联的动作。
33.如权利要求30所述的方法,其特征在于,所述处理第一组更改中的所有更改的动作在处理第二组更改中的所有更改的动作之前进行。
34.如权利要求33所述的方法,其特征在于,所述接收第一个消息的动作在接收第二个消息的动作之后进行,该方法进一步包括直到接收第一个消息的动作和处理第一组更改中的所有更改的动作完成才进行处理第二组更改中的所有更改的动作的动作。
35.一种在包括服务器计算系统和客户机计算系统的计算机网络中使用的计算机程序产品,服务器计算系统和客户机计算系统每个包含有多个最小可编辑的组件的层次数据结构的一个版本,该计算机程序产品用于实现一种客户机计算系统同步层次数据结构的服务器版本和客户机版本,即使客户机计算系统的接收缓冲器的存储器不足以同时包含有用来同步服务器版本和客户机版本的所有同步数据的单个消息的方法,其特征在于,所述计算机程序产品包括一个或多个计算机可读媒体有下列内容存储于其上用于检测同步层次数据结构的客户机版本和层次数据结构的服务器版本所需的包含第一组的少于所有多个更改的第一个消息的接收的计算机可执行指令,所述多个更改的每一个包括对一个或多个最小可编辑的组件的更改;处理第一组更改中的所有更改的计算机可执行指令;用于检测包含第二组的并非第一组的部分的多个更改的至少部分的第二个消息的接收的计算机可执行指令,所述多个更改的每一个包括对一个或多个最小可编辑的组件的更改;及处理第二组更改中的所有更改的计算机可执行指令,所述处理第一组和第二组更改中的所有更改的计算机可执行指令对每个更改包括标识由更改包括的原子可编辑的组件的计算机可执行指令;及以更改指定的方式编辑原子可编辑的组件的计算机可执行指令。
36.如权利要求35所述的计算机程序产品,其特征在于,所述一个或多个计算机可读媒体进一步包括在其上存储使同步请求被发送到服务器计算系统的计算机可执行指令。
37.如权利要求35所述的计算机程序产品,其特征在于,所述检测同步层次数据结构的客户机版本和层次数据结构的服务器版本所需的包含第一组的少于所有多个更改的第一个消息的接收的计算机可执行指令包括检测包含关联第一个SOAP封包和第二个SOAP封包的头部分的第一个SOAP封包的接收的计算机可执行指令,所述第一个SOAP封包有包含第一组更改的主体部分。
38.如权利要求37所述的计算机程序产品,其特征在于,所述检测包含第二组的并非第一组的部分的多个更改的至少部分的第二个消息的接收的计算机可执行指令,所述多个更改的每一个包括对一个或多个原子可编辑的组件的更改包括检测第二个SOAP封包的接收的计算机可执行指令所述第二SOAP封包包含关联第二个SOAP封包和第一个SOAP封包的头部分并且有包含第二组更改的主体部分。
39.如权利要求35所述的计算机程序产品,其特征在于,所述检测包含第二组的并非第一组的部分的多个更改的至少部分的第二个消息的接收的计算机可执行指令,包括检测包含关联第二个SOAP封包和第一个SOAP封包的头部部分并且包含第二组更改的全体部分的第二个SOAP封包的接收的计算机可执行指令。
40.如权利要求35所述的计算机程序产品,其特征在于,所述一个或多个计算机可读媒体进一步包括在其上存储确定第一组更改表示了在第二组更改之前进行的更改的计算机可执行指令。
41.如权利要求40所述的计算机程序产品,其特征在于,所述确定第一组更改表示了在第二组更改之前进行的更改的计算机可执行指令包括比较来自第一个消息的更改标识符和来自第二个消息的更改标识符的计算机可执行指令。
42.如权利要求41所述的计算机程序产品,其特征在于,所述确定第一组更改表示了在第二组更改之前进行的更改的计算机可执行指令包括确定第一个消息和第二个消息关联的计算机可执行指令。
43.如权利要求40所述的计算机程序产品,其特征在于,所述处理第一组更改中的所有更改的计算机可执行指令在处理第二组更改中的所有更改的计算机可执行指令之前执行。
44.如权利要求35所述的计算机程序产品,其特征在于,所述一个或多个计算机可读媒体为物理存储媒体。
全文摘要
同步有几个最小可编辑的组件的层次数据结构在客户机和服务器上的版本。在同步时,服务器标识所有需要对客户机版本进行的更改以正确地将服务器版本与层次文档的客户机版本同步。每个更改包括编辑数据结构的一个或多个最小可编辑的组件。服务器划分同步信息为多个消息,并单独地发送消息到客户机计算系统。客户机原子地处理每个消息。对每个在单个消息内标识为将进行的更改,客户机计算系统标识包括在更改中的最小可编辑的组件,并以特定的方式编辑(即,插入、更改或删除)最小可编辑的组件。
文档编号H04L29/08GK1505304SQ20031011649
公开日2004年6月16日 申请日期2003年11月19日 优先权日2002年11月19日
发明者Q·S·米勒, Q S 米勒, D·J·麦克那马拉, 麦克那马拉, A·桑德 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1