用于与多个客户机同步可修改文档的方法、系统和计算机可读介质的制作方法

文档序号:6567314阅读:117来源:国知局
专利名称:用于与多个客户机同步可修改文档的方法、系统和计算机可读介质的制作方法
技术领域
本发明的实施例涉及同步和更新可由各种设备上的多个客户机经由网络访问 和更改的文档的领域。本发明的实施例尤其涉及能够在逐件的、应要求的基础上在 多个客户机之间同步相对较大的文档的方法、计算机可读介质和数据结构,籍此仅 向每个特定客户机提供其所感兴趣的文档部分以便加快通信速度并使得文件存储 需要最小化。
背景技术
许多组织利用以诸如HTML (超文本标记语言)、Microsoft Word、 PDF (可
移植文档格式)以及文本等各种格式存储的相对较大的共享文档。例如,这种大的 文档可以包括由律所持有的共享法律文档或是由工程公司或企业持有的共享工程
文档。这种文档的三个重要性质阻碍了它们在常规设备上的使用(1)文档可以
变得相当大,(2)文档被频繁地修改,以及(3)文档可能不是每个客户机使用的
特定设备(包括移动设备)可以读取和显示的格式。尤其,当今的许多移动设备在 至少三个领域滞后于台式设备连接性、存储和功能性。例如,GPRS (通用分组
无线业务)通信表现出低带宽和长等待时间的连接性。此外, 一般的低端、常规移 动设备可能具有大约32 MB的存储器,这严重地限制了可以存储的文档大小。同 样地,在许多设备上不存在用于访问和查看的文档的代码或程序。此外,由于用户 界面缩放比例的问题,某些格式可能比其他的绘制效果更好。此外,某些文档格式 可能比其他文档使用更少的存储器来展开。所有这些问题结合阻碍了协作地在不同 的设备、尤其是移动设备上对相对较大的文档的普遍使用。
在设备上下载、查看、编辑和上载相对较大的文档的另一个问题是,下载这 样的文档所需的时间。举例而言,如果已经在设备上下载了相对较大的文档,且仅
需要对文档作很小的修改,那么下载整个文档会浪费带宽、存储器、时间和金钱(例 如其中网络根据传输的数据量来收费)等稀有的资源。
常规的系统试图用文件同步系统和方法来解决这些问题。常规的文件同步解
决方案要求整个文档被复制到设备上。虽然某些基于PC的应用程序再深入一步将 文档转码成设备可以读取的格式,但是这两种常规解决方案仍有许多问题。例如, 整个文档的批量同步要求所有的设备能够如上所述地将文档的整个内容存储在有 限量的存储器中。此外,修改文档的很小部分将使得整个文档要被下载到设备上。 由于无线网络(例如GPRS)的常规的低带宽和高等待时间特征以及常规的根据传 输的数据字节数来付费的成本结构,将整个文档下载到设备上变得昂贵(在金钱和 时间上都是)。在另一个常规示例中,可以一个接一个地下载冗长文档的单个页面 以减少每次传输的数据量。然而,这个解决方案仅适用于可流式传送的文件(例如
html文件),并且通常由于客户机设备和程序之间的不同而不能使其很好地适应
于由接收页面的客户机编辑。此外,该过程只允许信息的下载,而不提供对客户机 修改的编辑和上载。另一常规的系统离线地同步数据,以避免与不可靠连接相关联 的问题。然而,该解决方案不能解决存储和传输时间不充分的问题,由于文件很大, 存储和传输时间对离线同步仍然会是一个问题。
不幸的是,任何常规系统都没有解决这些问题。因此, 一种改进大文档在多 个客户机间的同步的解决方案是合乎需要的。
发明概要
因此,需要一种在逐件的、应要求的基础上在多个客户机间同步相对较大的 文档的方法(或计算机可读介质或数据结构),籍此仅向每个特定客户机提供其所 感兴趣的文档部分,来解决这些和其他缺点中的一个或多个。有利地,本发明的至 少一个实施例将文档的每个部分单独地转码成特定移动设备能够理解的格式。此 外,本发明的至少一个实施例下载仅修改文档中客户机订阅的那些修改部分的指 令,而非在每次作出改变时下载整个修改的子节。通常,本发明的各方面通过从一 个多个客户机接收有关优选数据格式的指令、定义原始文档的子节、生成标识这些
子节中的每一个的子节ID、将子节ID的列表发送给一个或多个客户机、接收来自 这一个或多个客户机中的至少一个的订阅这些子节中的一个或多个的请求、响应于 该请求将子节中的一个或多个转码成每个客户机的优选格式,并且依照相应客户机 的订阅请求发送经转码的订阅子节,来允许与多个客户机进行文档的同步。例如, 本发明的实施例能够很好地适用于一组各自使用单独设备的客户机在一个很大的 共享文件上协作。
在本发明的一个方面,公开了一种与多个客户机间同步文档的方法。该方法
包括从一个或多个客户机接收有关格式的指令,其中这一个或多个客户机中的每一 个都希望接收数据。该方法还定义原始文档中一个或多个客户机可能感兴趣的子 节。这些子节对应于原始文档内的语义中断。该方法还包括生成标识这些子节中的 每一个的子节ID,以及将子节ID的列表发送给这一个或多个客户机。该方法还包 括从这一个或多个客户机中的至少一个接收订阅这些子节中的一个或多个的请求, 以及响应于该请求将原始文档的这些子节中的、一个或多个客户机希望订阅的一个
或多个转码成相应的一个或多个客户机希望接收数据的格式。该方法还依照这一个 或多个客户机相应的订阅请求,将经转码的订阅子节发送给它们。
在本发明的另一方面, 一种用于与适于经由网络与系统连接的多个客户机同 步文档的系统包括服务器和数据库。该系统还适用于与网络连接,并适用于从这些 客户机中的一个或多个接收与这一个或多个客户机中的每一个希望经由网络从服 务器接收数据的格式有关的指令。该系统还包括适用于与服务器连接以存储一个或 多个客户机可能感兴趣的原始文档的数据库。服务器还被配置成定义存储在数据库 上的原始文档的子节。所定义的子节对应于原始文档内的语义中断。该系统还生成 标识这些子节中的每一个的子节ID,并经由网络将子节ID的列表发送给这一个或 多个客户机中的每一个。该系统还经由网络从这一个或多个客户机中的至少一个接 收订阅这些子节中的一个或多个的请求。该系统还响应于接收到的请求,将原始文 件的子节中的一个或多个转码成一个或多个客户机希望订阅的格式,并依照这一个 或多个客户机相应的订阅请求,将经转码的订阅子节发送给它们。
在本发明的又一方面,公开了带有一般如上有关本发明的方法和系统所述的 用于接收、定义、生成、发送、接收、转码以及发送的计算机可执行指令的计算机 可读介质。
替换地,本发明可以包括各种其他方法、计算机可读介质、系统和数据结构。 其他特征部分将是显而易见的,部分将在以下被指出。


图1是本发明的系统的示意图2是依照本发明具有多个子节的文档的示意图; 图3-3D是本发明的方法的流程图4是本发明的计算机可读介质(CRM)的示意图;以及
图5是示出其中可实现本发明的合适的计算系统环境的一个示例的框图。
在所有的附图中,相应的附图标记标示相应的部分。
具体实施例方式
现在参考图1,示出了描述概括地标示为29的本发明的用于与适于经由网络
29与系统连接的多个客户机25同步文档的系统的示意图。该系统21的细节将在 此处详细讨论,并在以下讨论中的各处被引述。系统21—般包括服务器33和数据 库37。所示实施例中的服务器33适于与网络29连接,用于在41处经由网络向客 户机25发送指令,并且在45处经由网络从客户机中的一个或多个接收指令。数据 库37适于与服务器33连接,用于存储客户机25中的一个或多个可能感兴趣的原 始文档。此外,服务器33还可在49处将指令发送给数据库37,并且在51处从数 据库接收指令。这些客户机25中的每一个皆被配置成在55处直接与网络29通信, 包括将通信发送给网络以及从网络接收通信。系统21的服务器33和数据库37还 被配置成提供以下与本发明的多种方法相关联地讨论的功能。
与多个客户机同步文档的方法
参考图1和3-3D,公开了一种与多个客户机25同步文档的方法,并且会参 考上述系统21和图3-3D的流程图来描述。如这里所使用的,经由设备通信的客 户机或用户21可以是表示个体、个体组织、或是在一个或多个个体控制下运作的 自动化设备等的任意数目的实体。这里所使用的术语设备、计算机或计算设备可包 括多种不同的设备,包括但不限于个人计算机、膝上型计算机、或手持式计算机、 以及蜂窝电话、个人数字助理及其他便携式媒体设备等。这里没有明确提到的用于 访问文档的其他设备或装置也被构想落在本发明的范围之内。
依照本方法,服务器33可以在45处从一个或多个客户机25接收有关这一个 或多个客户机中的每一个希望接收数据的格式的指令(见图3)。在一个示例中, 该格式化选择会在过程中的较早时间发生,以确保与设备的所有通信是可理解的格 式,虽然构想了这一选择可在过程中的较晚时间发生。每个客户机可以请求任意数 目的不同格式,包括html格式、格式化的文本文档(例如Microsoft Word文档、 富文本格式文档、可移植文档格式(PDF)等)、ASCII文本格式化等。系统21 和本发明的方法在转码供在41处向每个客户机25发送的数据时会使用这些格式化 指令,以确保所发送的数据可由这些客户机中的每一个访问。
现在参考图2,在61处一般地示出了一个或多个客户机25可能感兴趣的文档
的示意图。共享和就共用文档进行协作的多个客户机25会受益于本发明的系统和
方法。具体地,共享特别大的文档的客户机25通过使用本发明的系统和方法将肯 定能获得实质性的功能。假设图2中的文档61是这样一个相对较大的文档,本发 明的方法还在75处定义原始文档的子节A-F,其每一个皆被标示为65 (见图3)。 这些子节65对应于原始文档61内的语义或逻辑中断。在一个示例中,可以依照与 原始文档61相关联的目录来建立子节65。通过使用文档61的目录或其他逻辑组 织方案来建立子节,本发明可以将文档分成对客户机25有意义的逻辑子节。此外, 子节65将更可能在文档内的逻辑位置处开始或结束。这个特别的方案比基于文本 页面的结束、每个子节中文字的数目、每个子节的存储器分配或其他任意方法来分 割文档的常规方法直观和有用得多。
在一个实施例中,在75处定义原始文档61的子节65包括基于与文档相关联 的标识文档内的逻辑中断的目录同样也在75处将文档分成子节(见图3)。由于 目录是依照文档的内容由文档61的起草者逻辑地创建的,因此使用这样的目录有 助于确保定义合适的子节65。在一个实施例中,这样的目录可以是客户机定义的。 在没有目录的场合,原始文档61的子节65可以通过基于文档自身的内在结构生成 目录来定义。例如可以用许多方式自动生成目录,包括利用Microsoft Word文档的 大纲视图、使用文档中包括的标题和子标题、以及使用文档中的空白识别。其他用 于自动建立目录的方法也被构想为落在要求保护的本发明的范围内。
本方法还构想在79处生成标识子节65中的每一个的子节ID (见图3)。这 些子节ID可以用任何逻辑方式构成,以便于客户机査看和考虑。在一个示例中, 生成子节ID可以包括也在79处将子节65的名称和中子节在文档中的位置链接在 一起。这样,通过査看子节ID即可了解子节65的概要内容以及与其他子节的其 相对位置。例如,对于图2的子节65而言,子节ID可以如1A、 2B、 3C、 4D、 5E和6F那样简单,其中子节ID的数字部分指示该子节在文档61中的位置,而字 母A-F指示在该子节中讨论的主题。在图2的示例性实施例中,字母A-F可以 被容易地替换成指示子节内容的主题标题(例如1Apples、 2Bananas等)。如本领 域的技术人员可以容易地构想的,也可以使用标识这类子节ID的其他方法,而不 会背离要求保护的本发明的范围。
一旦确定了子节ID,服务器33就在41处经由网络29将子节ID的列表发送 给一个或多个客户机25,这样这些客户机就可以查看子节ID,并确定它们希望订 阅哪些子节(见图1和3)。这样,客户机25可以快速地细读文档61的子节ID,
由此快速地细读其内容的概要,以确定它们是否想要订阅子节65中的任何一个, 而无需在查看子节ID之前下载整个文档或者甚至是文档的一部分。
每个客户机25具有在55处经由网络29发送订阅子节65中的一个或多个的 请求的选择权。服务器33在83处从这一个或多个客户机25中的至少一个接收这 样的请求,来订阅子节65中的一个或多个(见图3)。服务器33可从每个客户机 25接收不同的订阅请求,以允许每个客户机在其设备上定制其文档61的视图。例 如,如图1和2所示,服务器33可以在45处从客户机1接收要求接收子节A的 请求,而客户机2选择接收子节A、 C和F,而客户机3选择只接收子节F。在该 示例中,系统21可以简单地将一个或多个子节65发送给作出请求的相应客户机, 而非必须将整个文档发送给每个客户机25。
在将数据在41处发送给客户机中的一个或多个之前,服务器33在87处还响 应一个或多个客户机请求,将原始文档61的子节65中一个或多个客户机25希望 订阅的一个或多个子节转码成相应的一个或多个客户机希望接收数据的格式(见图 3)。在上面讨论的示例中,可以依照客户机25中的每一个的特定格式化要求来转 码所订阅的子节65中的每一个以供访问和修改。如这里所使用的,经转码的项目 是被格式化或配置成可在不同的平台上被访问、查看、修改和/或使用而不管所使 用的应用程序、所使用的语言、所采用的査看设备或所需的通信协议是什么的项目。 通过使用经转码的文档或提供经转码的视图,若干个不同的客户机25能够在不同 的设备上使用不同的程序、屏幕、协议等查看相同的文档61或文件。这使得一组 各自使用独立设备的客户机25能在一个很大的共享文档61上进行协作。在此应该 注意到,转码也可替换地在客户机25处进行。
一旦经过转码,服务器33就可在91处依照一个或多个客户机25的相应的订 阅请求,将经转码的订阅子节65发送给它们(见图3)。客户机25于是可以查看 它们已订阅的子节65的内容。在一个示例中,客户机33仅发送特定客户机25订 阅的子节。在该示例中,客户机25不会向客户机发送该客户机没有订阅的子节。 每个客户机可在任何时间独立地变更其订阅,增加子节、删除子节或修改子节,如 下文中将更详细讨论的。
子节取样
在另一示例中,体现本发明的各方面的一种方法还可在95处向非订阅客户机 25提供子节65的样本部分71,以供査看该子节内容的样本部分(见图3A)。在
一些实例中,仅是子节ID不能够为每个考虑订阅文档61的子节65的非订阅客户 机25提供足够的信息。系统21可外加地提供一个或多个子节65的样本部分71, 以供客户机査看。在一个示例中,系统21在97处向请求子节65中的一个或多个 的样本部分71的非订阅用户25外加地提供一选择组件(见图3A)。在另一示例中, 系统21自动地提供具有一个、 一些或所有子节65的样本部分71。当样本部分71 包括子节ID时,系统21还可在99处向非订阅客户机提供一选择组件,以供选择 是否订阅取样的子节65。其他特征通过使向或从任何特定客户机25下载或上载的 数据量最小化来帮助保持本发明相对方便的使用。具体地,提供子节65的样本部 分71还可包括也在95处基于网络和设备中至少一个的性能,提供大小合理适于下 载并将其存储到非订阅客户机25的设备中的样本部分。本领于的技术人员会容易 理解如何选择恰当大小的样本部分71,以便不会对本发明的全部优点产生负面的 影响,即明智地将客户机设备和网络的带宽及存储器利用到接近满足特定客户机 25要求所需的最小量。
依照本发明的方法,这里通常提供选择组件以允许客户机25与系统21的服 务器33交互。在一个示例中,服务器33通过在103处提供包含在客户机设备上的 用于与客户机25交互的用户界面来提供这种功能(见图3)。这种用户界面可以 例如包括至少一个选择组件,以允许客户机订阅或不订阅文档61的子节65。如这 里所讨论的,也可以经由用户界面向每个客户机65提供其他选择组件。
客户机对子节的修改
在查看一个特定子节65后,客户机25可以使用其设备上的应用程序对子节 作一次或多次的修改。这些修改可以完成任意数目的事情,包括添加文本、删除文 本、修改文本、重排文本等等。具体地,服务器33在105处从订阅客户机25之一 接收45处的至少一个操作,包括修改感兴趣的子节65的内容、向感兴趣的子节添 加内容、或从感兴趣的子节移除内容的指令(见图3)。依照本方法,这些操作中 的一个或多个的组合也可以由服务器33接收。这种修改可以自动地或如客户机25 特别指示地被发送给服务器33。重要的是这里应该注意到,无需将整个经修改的 子节65发送给服务器33,而仅是发送订阅客户25之一发起的对该子节的操作。 例如,如果客户机25要移除所有对第一文本串(例如"World Wide Web")的引 用,并且要用第二文本串(例如"WWW")来替代它们,则仅需要将第一串替换 为第二串的相对简单的操作转发给服务器33,以便被应用户这些订户中的每一个
的子节65。通过仅发送和接收操作而非整个经修改的子节,传送的数据就少得多, 由此降低了对存储器的需求,并提高了服务器33接收更新并将其发回给订阅客户 机25的速度。
现在参考图3D,本发明的各方面还允许检査同步。定期地或响应于服务器33 接收到的指示特定子节65可能已被客户机25修改的信息,本系统21的服务器可 将存储在数据库37中的子节与存储在客户机设备上的子节中的一个、 一些或全部 作比较。在一个示例中,系统21在107处将原始文档61中一个或多个客户机25 订阅的感兴趣的子节65散列成指示原始文档的该子节的内容的数值(见图3D)。 系统21接着在109处将原始文档61的经修改子节65散列成指示该至少一个经修 改的子节的内容的数值。有了这两个散列值,系统21接着在Ul处将原始文档51 的子节65的数值与经修改的子节的数值作比较,以确定原始文档的该子节是否已 被修改(见图3D)。 一旦监测到也可以是简单的添加或删除数据等的修改,系统 21就在113处将与经修改的子节65相关联的操作提供给订阅该子节的客户机25 以供每个客户机修改该子节之用。在这样的修改之后,每个客户机25具有经修改 子节的相同副本,由此允许即可査看和访问文档61中的最新改变。在一个示例中, 当操作向子节65增加内容时,服务器33在115处将子节ID的更新列表发送给所 有客户机(见图3C)。如果增加的内容是特别感兴趣的,则这个动作向订户提供 了与他们显示有特别兴趣的子节65有关的信息,并向非订户提供了订阅该子节的 机会。
在操作仅修改或删除子节65的内容的另一示例中,服务器33在117处将来 自订阅客户机25之一的操作发送给所有的订阅客户机(见图3C)。在该示例中, 订户显示了期望在他们的设备上维护子节65的更新版本的愿望。然而,服务器不 会将这些修改或删除操作发送给非订阅客户机25,因为非订户不大可能对子节65 内信息的移除或修改感兴趣D
在另一示例中,系统21可在散列原始文档61的子节中的一个或多个之前, 以及在散列原始文档的经修改的子节之前,在119处移除这一个或多个子节65的 格式化属性(见图3D)。这确保了在比较原始子节和可能经修改的子节的散列时, 可能在客户机设备上发生在子节65上的格式化改变不会造成经改变的文档子节的 假阳性。
除了将修改发送给订阅客户机25之外,系统还将经修改的子节65的通知发 送给没有订阅该经修改的子节的客户机。在一个示例中,将经修改的子节65的通
知发送给没有订阅该经修改的子节的客户机25包括在115处更新子节ID的列表
以指示该经修改的子节(见图3C)。这样,非订阅客户机25可以仅査看子节ID 的经更新的列表,以确定是否有任何子节已被改变,同样也无需下载每个子节。
在又一示例中,两个或多个客户机25会试图修改同一文档子节65,这要求系 统21采用冲突解决方法。在这种情形中,服务器33可在121处从订阅客户机25 中的两个或多个(例如客户机和客户机2)接收至少一个修改同一订阅子节的操 作(见图3B)。服务器33在123处通过采用冲突解决方法来解决从订阅客户机 25中的一个接收到的与从订阅客户机中的另一个接收到的修改相同的订阅子节65 之间的任何冲突的操作。在一个示例中,服务器33应用修改授权等级,以便基于 每个订阅客户机25在等级中的位置来确定是应用来自客户机1还是客户机2的该 至少一个操作。例如,当客户机2在修改授权等级中列在客户机1之上时,将使用 客户机2的修改而非客户机1的修改。在另一示例中,服务器33通过基于订阅客 户机25发起每个操作的时间来利用满足时间要求的接收到的操作,由此解决任何 冲突。服务器33可以使用两个修改操作中较早的一个,两个修改操作中较晚的一 个,或者最接近特定时间的修改操作等等。系统21也可以补充地或替换地通知客 户机25其修改由于冲突解决而变得无效,这样客户机可以知悉这些改变不会被使 用。
在另一示例中,服务器33从客户机1和客户机2接收到至少一个操作,并将 一个客户机(例如客户机l)的操作发送给另一客户机(例如客户机2)。客户机 2手头上有其自己的操作以及发送自服务器的客户机1的操作,于是可以并排地査 看每个提议的改变以确定应该采取两组操作中的哪些操作(如果有的话)。这样, 客户机25之一执行冲突解决的任务。如本领域的技术人员容易理解的,可以使用 任意多种不同的冲突解决方案,而不会背离要求保护的本发明的范围。
用于与多个客户机同步文档的计算机可读介质
图4是本发明的计算机可读介质(CRM)的示意图,概括地标示为125。该 计算机可读介质具有用于与多个客户机同步文档的计算机可执行指令。用于执行步 骤的计算机可执行指令包括用于从一个或多个客户机接收有关这一个或多个客户 机中的每一个希望接收数据的格式的指令的接收指令。这些计算机可执行指令还包 括用于定义原始文档的子节的定义指令,该原始文档是这些客户机中的一个或多个 可能感兴趣的,这些子节对应于原始文档内的语义中断。这些计算机可执行指令还
包括用于生成标识这些子节中的每一个的子节ID的生成指令,以及用于将子节ID 的列表发送给这一个或多个客户机的发送指令。这些计算机可执行指令还包括用于 从这一个或多个客户机中的至少一个接收订阅这些子节中的一个或多个的请求的 接收指令。这些计算机可执行指令还包括用于响应请求将原始文档中一个或多个客 户机希望订阅的这一个或多个子节转码成相应的一个或多个客户机希望接收数据 的格式的转码指令。这些计算机可执行指令还包括用于依照这一个或多个客户机的 相应的订阅请求,将经转码的订阅子节发送给它们的发送指令。
在也于图4中描述的另一示例中,这些计算机可执行指令还包括用于接收来
自这些订阅客户机之一的修改原始文档的订阅子节的至少一个操作的接收指令。这 些计算机可执行指令还包括用于将原始文档的子节中一个或多个客户机订阅的一
个或多个子节散列成指示原始文档的内容的数值的散列指令,以及用于将原始文档 的经修改的子节散列成指示至少一个经修改的子节的内容的数值的列散指令。这些 计算机可执行指令还包括用于将原始文档的子节的数值与经修改的子节的数值作
比较以确定原始文档的该子节是否被修改过的比较指令。这些计算机可执行指令还 包括用于向订阅该子节的客户机提供与该子节相关联至少一个操作以供客户机修 改该子节之用的提供指令。
以下示例示出了本发明的一种示例性同步算法。如上文一般讨论的,客户机
25由向服务器33指定它希望接收的数据的格式开始(例如服务器文件61可能以 Microsoft Word文档格式存储,而设备仅理解基本HTML)。以下是示例性客户机
请求
<Sync>
<ContentType>BasicHtmK/ContentType> </Sync>
在定义了本示例中原始文档61的五个子节65并生成标识每个子节的唯一性 子节ID (例如Partl、 Part2等)之后,服务器33通过在41处将子节ID的列表发 送给客户机25来响应,之后客户机可以"订阅"该文档的特定子节。示例性服务 器响应如下 <Sync>
<SubSection〉 <Id〉Partl</Id〉 <Title>
这是转码成HTML格式的部分1的章节标题
</Title> </SubSection> <SubSection>
<Id>Part2</Id>
<Title>
这是转码成HTML格式的部分2的章节标题 </Title> <SubSection〉 <Id>Part3</Id> <Title>
这是转码成HTML格式的部分3的章节标题
</Title> </SubSection> <SubSection>
<Id>Part4</Id>
<Title>
这是转码成HTML格式的部分4的章节标题 </Title> <SubSection> <Id>Part5</Id> <Title>
这是转码成HTML格式的部分5的章节标题 </Title> </SubSection〉 </Sync〉
在向客户机25显示子节ID之后,客户机接着向服务器33发送指定客户机想 要订阅的子节65的请求。在以下的这样一个请求的示例中,子节65由子节ID标 识
<Subscirbe>
<SubSection>Partl</SubSection>
<SubSection>Part3</SubSection〉 </Subscirbe>
服务器33确定它发送给相应客户机25的子节添加、改变和删除的集合。为 了确定删除,服务器33作出特定一特定子节65己从文档61中消失的通知。为了 确定改变,服务器33作出对应于客户机25已订阅的子节65的内容的散列易被改 变的通知。为了确定添加,服务器33作出或者新的子节65被引入文档61中、或 者客户机25订阅了以前订阅过的子节的通知。在41处,服务器33的响应会包括 对各个客户机子节的添加、改变和删除。如果客户机订阅了子节65,则在41处发 送给客户机25的改变将仅包含该子节的内容。否则,客户机25会得到该改变的通 知,并且在某些示例中还会得到基本子节ID改变的通知。以下是典型的服务器33 响应的示例 <Sync> 〈Change > <Id〉Partl</Id> <Data>
这是文档的部分一中的数据。注意子节ID没有被发送。由于客户机订阅
了文档的部分l,因此服务器发送该数据。
<Data> </Change > 〈Change >
<Id>Part3</Id>
<Data>
注意服务器没有发送部分2,因为没有改变。
<Data> </Change > 〈Change >
<Id>Part4</Id>
<Title>
部分4的标题改变了。注意即便客户机没有订阅部分4,服务器也发送 此标题。这允许客户机智能地决定开始订阅部分4 (如果需要)。 </Title>
</Change 〉 <Delete>
<Id>Part5</Id> </Delete〉 <Add>
<Id>Part6</Id>
<Title>
新的子节(部分6)被引入文档。客户机可以选择在后续的同步中订 阅它。 <Title> </Add> </Sync>
注意每个子节65包含该子节经转码的视图,而非原子节自身。这允许服务器 33针对设备的特定限制(例如设备仅支持査看基本的HTML,以及每次只能存储 单个子节)来改编所提供的子节内容。
通用计算设备
图5示出了计算机130形式的通用计算设备的一个示例。在本发明的一个实 施例中,诸如计算机130等的计算机适合在本文中所示和所述的其他附图中使用。 在一个示例中,上面讨论的客户计算机或设备可由计算机130体现。计算机130 还具有一个或多个处理器或处理单元132以及系统存储器134。在所示实施例中, 系统总线136将包括系统存储器134在内的各种系统组件耦合到处理器132。总线 136代表几种总线结构类型中任何一个或多个,包括存储总线或存储控制器、外围
总线、加速图形端口以及使用各种总线体系结构的任一种的处理器或局部总线。作 为示例而非限制,这类体系结构包括工业标准体系结构(ISA)总线、微通道体系 结构(MCA)总线、增强型ISA (EISA)总线、视频电子技术标准协会(VESA) 局部总线以及也称为Mezzanine总线的外围部件互连(PCI)总线。
计算机130通常至少包括某种形式的计算机可读介质。包括易失性和非易失 性介质、可移动和不可移动介质的计算机可读介质可以是可由计算机130访问的任 何可用介质。作为示例而非限定,计算机可读介质包括计算机存储介质和通信介质。 计算机存储介质包括以用于储存诸如计算机可读指令、数据结构、程序模块或其它
数据等信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。
在一个示例中,计算机存储介质包括RAM、 ROM、 EEPROM、闪存或其它存储器 技术,CD-ROM、数字多功能盘(DVD)或其它光盘存储,磁卡带、磁带、磁盘 存储或其它磁性存储设备,或是可以用来储存所需信息并可由计算机130访问的任 何其它介质。通信介质通常体现为诸如载波或其它传输机制等的已调制数据信号中 的计算机可读指令、数据结构、程序模块或其它数据,并包括任何信息投放介质。 本领域技术人员熟悉已调制数据信号,即以在信号中编码信息的方式设置或改变其 一个或多个特征的信号。诸如有线网络或直接接线连接等的有线介质以及诸如声 波、RF、红外等的无线介质和其它无线介质是通信介质的示例。上述任何介质的 组合也应当包括在计算机可读介质的范围之内。
系统存储器134包括可移动和/或不可移动、易失性和/或非易失性存储器形式 的计算机存储介质。在所示实施例中,系统存储器134包括只读存储器(ROM) 138和随机存取存储器(RAM) 140。包含诸如在启动时帮助在计算机130内的各 元件之间传送信息的基本例程的基本输入/输出系统142 (BIOS)通常储存在ROM 138中。RAM 140通常包含处理单元1320立即可访问和/或者当前正在操作的数据 和/或程序模块。作为示例而非限定,图5示出了操作系统144、应用程序146、其 它程序模块148和程序数据150。
计算机130也可包括其它可移动/不可移动、易失性/非易失性计算机存储介质。 在一个示例中,图5示出了对不可移动、非易失性磁性介质进行读写的硬盘驱动器 154。图5还示出了对可移动、非易失性磁盘158进行读写的磁盘驱动器156、以 及对诸如CD-ROM或其它光学介质等的可移动、非易失性光盘162进行读写的光 盘驱动器160。可在示例性操作环境中使用的其它可移动/不可移动、易失性/非易 失性计算机存储介质包括但不限于,卡式磁带、闪存卡、数字多功能盘、数字录像 带、固态RAM、固态ROM等等。硬盘驱动器154、磁盘驱动器156和光盘驱动 器160通常通过诸如接口 166等的非易失性存储接口连接到系统总线136。
以上讨论的并在图5中示出的驱动器或其他大容量存储设备及其相关联的计 算机存储介质为计算机130提供了计算机可读指令、数据结构、程序模块和其它数 据的存储。例如,在图5中,硬盘驱动器154被示为储存操作系统170、应用程序 172、其它程序模块174和程序数据176。注意,这些组件可以与操作系统144、应 用程序146、其它程序模块148和程序数据150相同,也可以与它们不同。这里对 操作系统170、应用程序172、其它程序模块174和程序数据176给予不同的附图
标记是为了说明至少它们是不同的副本。
用户可通过诸如键盘180和定点设备182 (例如,鼠标、跟踪球、笔或触摸板) 等的输入设备或用户界面选择设备向计算机130输入命令和信息。其它输入设备 (未示出)可包括话筒、操纵杆、游戏垫、相机、扫描仪等等。这些和其它输入设 备通过耦合至系统总线136的用户输入接口 184连接至处理单元132,但是也可以 通过诸如并行端口、游戏端口或通用串行总线(USB)等的其它接口和总线结构连 接。监视器188或其它类型的显示设备也通过接口,诸如视频接口 190等的接口连 接至系统总线136。除监视器188之外,计算机通常还包括诸如打印机和扬声器等 的其它外围输出设备(未示出),它们可通过输出外围接口(未示出)连接。
计算机130可使用到诸如远程计算机194等的一台或多台远程计算机的逻辑 连接在连网环境中操作。远程计算机194可以是个人计算机、服务器、路由器、网 络PC、对等设备或其它公共网络节点,并通常包括相关于计算机130所描述的元 件中的许多或全部。图5中描述的逻辑连接包括局域网(LAN)196和广域网(WAN) 198,但也可包括其它网络。LAN 136和/或WAN 138可以是有线网络、无线网络 及其组合等。这类连网环境常见于办公室、企业范围计算机网络、内联网以及全球 计算机网络(诸如因特网)。
当在局域连网环境中使用时,计算机130通过网络接口或适配器186连接至 LAN 196。当在广域连网环境中使用时,计算机130通常包括调制解调器178或用 于通过诸如因特网等的WAN198建立通信的其它装置。可以是内置或外置的调制 解调器178通过用户输入接口 184或其他适当的机制连接至系统总线136。在连网 环境中,相关于计算机130所描述的程序模块或其部分可储存在远程存储器存储设 备中(未示出)。作为示例而非限定,图5将远程应用程序192示为驻留在存储器 设备上。应该理解,所示出的网络连接是示例性的,也可以使用在计算机之间建立 通信链路的其它手段。
一般而言,计算机130的数据处理器是借助于在不同时间存储在计算机的各 种计算机可读存储介质中的指令进行编程的。在一个示例中,程序和操作系统典型 地分布在例如软盘或CD-ROM上。从那里它们被安装或加载到计算机的辅助存储 器中。在执行时,它们被至少部分地加载到计算机的主电子存储器中。当这种介质 包含用于实现以下结合微处理器或其他数据处理器描述的操作的指令或程序时,本 文中所描述的本发明包括这些和其他各种类型的计算机可读存储介质。
为了说明起见,本文将诸如操作系统等程序和其他可执行程序组件示为分立
的块。然而应该认识到,这些程序和组件在不同时间驻留在计算机的不同存储组件 中,并且由计算机的数据处理器执行。
尽管结合了包括计算机130的示例性计算系统环境进行描述,但是本发明可 用许多其他通用或专用计算系统环境或配置操作。计算系统环境并非旨在对本发明 的使用范围或功能提出任何限定。此外,计算系统环境不应被解释为具有与示例性 操作环境中所示组件中的任一个或其组合有关的任何依赖或要求。适合与本发明一 起使用的公知的计算系统、环境和/或配置的示例包括但不限于个人计算机、服务 器计算机、手持式或膝上型设备、多处理器系统、基于微处理器的系统、机顶盒、 可编程消费电子产品、移动电话、网络PC、微型计算机、大型计算机、以及包括 任何以上系统或类似设备的分布式计算环境等等。
在操作中,用作服务器33的计算机130执行如上所述的与多个客户机同步文 档的方法。计算机130或其组件从一个或多个客户机接收有关这一个或多个客户机 中的每一个希望接收数据的格式的指令。计算机130或其组件定义这些客户机中的 一个和多个可能感兴趣的原始文档的子节,,这些子节对应于原始文档内的语义中 断。计算机130或其组件生成标识这些子节中的每一个的子节ID。计算机130或 其组件将子节ID的列表发送给一个或多个客户机。计算机130及其组件从这一个 或多个客户机中的至少一个接收订阅这些子节中的一个或多个的请求。计算机130 或其组件响应于该请求,将原始文档的这些子节中一个或多个客户机希望订阅的一 个或多个子节转码成相应的一个或多个客户机希望接收数据的格式。计算机130 或其组件依照一个或多个客户机相应的订阅请求,将经转码的订阅子节发送给这一 个或多个客户机。
本领域的技术人员会注意到,这里所示出和描述的方法的执行或履行次序并 非决定性的,除非另有指定。即,发明者构想了方法的要素可按任意次序执行,除 非另有指定,并且方法可以包括比这里所公开的要素更多或更少的要素。
当引入本发明或其实施例的要素时,冠词"一"、"一个"、"该"和"所 述"旨在表示有一个或多个所述要素。术语"包括"、"包含"和"具有"旨在意 为包括的,并表示除了所列示的要素外可有其他外加要素。
根据以上内容,可以看出实现了本发明的这若干个目的,并获得了其他有利 结果。
由于可对上述产品和方法作出各种改变而不会背离本发明的范围,因此以上 描述中包含的和附图中所示的所有事物应被解释为是示例性的而非限定性的。
权利要求
1.一种与多个客户机同步文档的方法,所述方法包括从一个或多个客户机接收有关所述一个或多个客户机中的每一个希望接收数据的格式的指令;定义原始文档的子节,所述原始文档是所述一个或多个客户机可能感兴趣的,所述子节对应于所述原始文档内的语义中断;生成标识所述子节中的每一个字节的子节ID;将子节ID的列表发送给所述一个或多个客户机;从所述一个或多个客户机中的至少一个客户机接收订阅所述子节中的一个或多个字节的请求;响应于所述请求,将所述原始文档的子节中一个或多个客户机希望订阅的所述一个或多个子节转码成相应的一个或多个客户机希望接收数据的格式;以及依照所述一个和多个客户机的相应的订阅请求,将经转码的订阅的子节发送给所述一个或多个客户机。
2. 如权利要求l所述的方法,其特征在于,还包括从进行订阅的客户机中的 一个客户机接收修改所述原始文档的一被订阅的子节的至少一个操作。
3. 如权利要求2所述的方法,其特征在于,还包括将所述原始文档的子节中一个或多个客户机订阅的所述一个或多个子节散列成指示所述原始文档的内容的数值;将所述原始文档的经修改的子节散列成指示所述至少一个经修改的子节的内 容的数值;将所述原始文档的所述子节的所述数值与所述经修改的子节的所述数值作比 较,以确定所述原始文档的所述子节是否被修改过;以及将与所述子节相关联的所述至少一个操作提供给订阅所述子节的客户机,以 供所述客户机用于修改所述子节。
4. 如权利要求3所述的方法,其特征在于,还包括在对所述原始文档的所述 一个或多个子节进行散列以及对所述原始文档的经修改的子节进行散列之前,移除 所述一个或多个子节的格式化属性。
5. 如权利要求2所述的方法,其特征在于,所述从进行订阅的客户机中的一个客户机接收至少一个操作包括以下各项中的至少一个接收修改感兴趣的子节的 内容的至少一个操作、接收向感兴趣的子节添加内容的至少一个操作、以及接收从 感兴趣的子节移除内容的至少一个操作。
6. 如权利要求5所述的方法,其特征在于,还包括当所述至少一个操作向一 子节添加内容时,将所述子节ID的一更新的列表发送给所有客户机;以及当所述至少一个操作修改或删除所述子节的内容时,将来自所述进行订阅的 客户机之一的所述至少一个操作发送给各进行订阅的客户机。
7. 如权利要求2所述的方法,其特征在于,还包括从所述进行订的阅客户机 中的另一个客户机接收修改所述订阅的子节的至少一个操作;以及解决从所述进行订阅的客户机中的所述一个客户机接收到的所述至少一个与 从所述进行订阅的客户机中的所述另一个客户机接收到的修改相同订阅的子节的 至少一个操作之间的任何冲突。
8. 如权利要求7所述的方法,其特征在于,所述解决任何冲突包括应用修 改授权等级,以基于每个进行订阅的客户机在所述等级中的位置来确定是应用来自 所述进行订阅的客户机中的所述一个客户机的至少一个操作还是应用来自所述进 行订阅的客户机中的所述另一个客户机的至少一个操作。
9. 如权利要求7所述的方法,其特征在于,所述解决任何冲突包括基于由 所述进行订阅的客户机发起每一个所述至少一个操作的时间,使用满足时间要求的 至少一个操作。
10. 如权利要求l所述的方法,其特征在于,所述定义原始文档的子节包括 基于与所述文档相关联的标识所述文档内的逻辑中断的目录将所述分档分成子节。
11. 如权利要求10所述的方法,其特征在于,所述定义原始文档的子节还包 括基于所述文档的内在结构生成所述目录。
12. 如权利要求IO所述的方法,其特征在于,所述定义原始文档的子节还包括使用客户机定义的目录。
13. 如权利要求1所述的方法,其特征在于,所述生成标识每一个子节的子节ID还包括将所述子节的名称与所述子节在所述文档内的位置链接在一起以生成每个子节ID。
14. 如权利要求1所述的方法,其特征在于,还包括向非进行订阅的客户机 提供子节的样本部分,以供查看所述子节的内容的所述样本部分;以及向所述非进行订阅的客户机提供用于选择是否订阅所述取样的子节的选择组 件。
15. 如权利要求14所述的方法,其特征在于,还包括向所述非进行订阅的客 户机提供用于请求所述样本部分的选择组件。
16. 如权利要求14所述的方法,其特征在于,所述提供子节的样本部分还包括基于所述网络和所述设备中的至少一个的性能,提供大小合理适于下载并存储 到所述非进行订阅的客户机的设备中的样本部分。
17. 如权利要求1所述的方法,其特征在于,还包括提供具有允许所述客户机订阅或不订阅所述文档的子节的至少一个选择组件的用户界面。
18. —种系统,用于与适于经由网络与所述系统连接的多个客户机同步文档,所述系统包括.-服务器,适用于与所述网络连接,所述服务器适用于从所述客户机中的一个 或多个接收有关所述一个或多个客户机中的每一个希望经由所述网络从所述服务器接收数据的格式的指令;以及数据库,适用于与所述数据库连接以存储所述客户机中的一个或多个可能感兴趣的原始文档,其中所述服务器还被配置成定义存储在所述数据库上的所述原始文档的子节,所述子节对应于所述原始文档内的语义中断;生成标识所述子节中的每一个的子节ID;经由所述网络将所述子节ID的列表发送给所述一个或多个客户机的每 一个.经由所述网络从所述一个或多个客户机中的至少一个接收订阅所述子节中的一个或多个的请求;响应于所述接收到的请求,转码所述原始文档的子节中一个或多个客户 机希望订阅的所述一个或多个子节;以及依照所述一个或多个客户机的相应的订阅请求,将所述经转码的订阅子 节发送给所述一个或多个客户机。
19. 一种具有用于与多个客户机同步文档的计算机可执行指令的计算机可读 介质,所述计算机可执行指令用于执行步骤,包括用于从一个或多个客户机接收有关所述一个或多个客户机中的每一个希望接 收数据的格式的指令的接收指令;用于定义原始文档的子节的定义指令,所述原始文档是所述客户机中一个或 多个可能感兴趣的,所述子节对应于所述原始文档内的语义中断; 用于生成标识所述子节中的每一个的子节ID的生成指令; 用于将所述子节ID的列表发送给所述一个或多个客户机的发送指令; 用于从所述一个或多个客户机中的至少一个接收订阅所述子节中的一个或多个的请求的接收指令;用于响应所述请求将所述原始文档的子节当中一个或多个客户机希望订阅的所述一个或多个子节转码成相应的一个或多个客户机希望接收数据的格式的转码指令;以及用于依照所述一个或多个客户机的相应的订阅请求,将经转码的订阅子节发 送给所述一个或多个客户机的发送指令。
20.如权利要求19所述的计算机可读介质,其特征在于,还包括用于执行步骤的计算机可执行指令,包括用于从所述订阅客户机之一接收至少一个修改所述原始文档的订阅子节的操 作的接收指令;用于将所述原始文档的子节当中一个或多个客户机订阅的所述一个或多个子节散列成指示所述原始文档的内容的数值的散列指令;用于将所述原始文档的所述经修改的子节散列成指示所述至少一个经修改的子节的内容的数值的散列指令;用于将所述原始文档的子节的所述数值与所述经修改的子节的所述数值作比 较,以确定所述原始文档的所述子节是否被修改过的比较指令;用于向订阅所述子节的客户机提供与所述子节相关联所述至少一个操作以供 所述客户机修改所述子节之用的提供指令。
全文摘要
用于与使用各种设备的多个客户机同步和共享相对较大的可修改文档的方法、系统和计算机可读介质。该方法从一个或多个客户机接收有关供相应客户机设备使用的优选格式的指令。该方法还基于原始文档中的语义中断来定义所共享的文档的子节,并为每个子节生成子节ID。这些子节ID被发送给可查看这些ID并请求在它们各自的设备上接收一个或多个子节的客户机。所请求的子节被转码以供在相应的客户机设备上使用,并且依照客户机的请求发送给它。这些客户机接着可以修改这一个或多个子节,且这些修改可应用到其他客户机设备上的相应子节。
文档编号G06F17/20GK101167071SQ200680014671
公开日2008年4月23日 申请日期2006年4月17日 优先权日2005年5月25日
发明者M·拉兹万 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1