具体实施方式
现在参考图1,示出了描述概括地标示为29的本发明的用于与适于经由网络29与系统连接的多个客户机25同步文档的系统的示意图。该系统21的细节将在此处详细讨论,并在以下讨论中的各处被引述。系统21一般包括服务器33和数据库37。所示实施例中的服务器33适于与网络29连接,用于在4 1处经由网络向客户机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接着在111处将原始文档51的子节65的数值与经修改的子节的数值作比较,以确定原始文档的该子节是否已被修改(见图3D)。一旦监测到也可以是简单的添加或删除数据等的修改,系统21就在113处将与经修改的子节65相关联的操作提供给订阅该子节的客户机25以供每个客户机修改该子节之用。在这样的修改之后,每个客户机25具有经修改子节的相同副本,由此允许即可查看和访问文档61中的最新改变。在一个示例中,当操作向子节65增加内容时,服务器33在115处将子节ID的更新列表发送给所有客户机(见图3C)。如果增加的内容是特别感兴趣的,则这个动作向订户提供了与他们显示有特别兴趣的子节65有关的信息,并向非订户提供了订阅该子节的机会。
在操作仅修改或删除子节65的内容的另一示例中,服务器33在117处将来自订阅客户机25之一的操作发送给所有的订阅客户机(见图3C)。在该示例中,订户显示了期望在他们的设备上维护子节65的更新版本的愿望。然而,服务器不会将这些修改或删除操作发送给非订阅客户机25,因为非订户不大可能对子节65内信息的移除或修改感兴趣。
在另一示例中,系统21可在散列原始文档61的子节中的一个或多个之前,以及在散列原始文档的经修改的子节之前,在119处移除这一个或多个子节65的格式化属性(见图3D)。这确保了在比较原始子节和可能经修改的子节的散列时,可能在客户机设备上发生在子节65上的格式化改变不会造成经改变的文档子节的假阳性。
除了将修改发送给订阅客户机25之外,系统还将经修改的子节65的通知发送给没有订阅该经修改的子节的客户机。在一个示例中,将经修改的子节65的通知发送给没有订阅该经修改的子节的客户机25包括在115处更新子节ID的列表以指示该经修改的子节(见图3C)。这样,非订阅客户机25可以仅查看子节ID的经更新的列表,以确定是否有任何子节已被改变,同样也无需下载每个子节。
在又一示例中,两个或多个客户机25会试图修改同一文档子节65,这要求系统21采用冲突解决方法。在这种情形中,服务器33可在121处从订阅客户机25中的两个或多个(例如客户机1和客户机2)接收至少一个修改同一订阅子节的操作(见图3B)。服务器33在123处通过采用冲突解决方法来解决从订阅客户机25中的一个接收到的与从订阅客户机中的另一个接收到的修改相同的订阅子节65之间的任何冲突的操作。在一个示例中,服务器33应用修改授权等级,以便基于每个订阅客户机25在等级中的位置来确定是应用来自客户机1还是客户机2的该至少一个操作。例如,当客户机2在修改授权等级中列在客户机1之上时,将使用客户机2的修改而非客户机1的修改。在另一示例中,服务器33通过基于订阅客户机25发起每个操作的时间来利用满足时间要求的接收到的操作,由此解决任何冲突。服务器33可以使用两个修改操作中较早的一个,两个修改操作中较晚的一个,或者最接近特定时间的修改操作等等。系统21也可以补充地或替换地通知客户机25其修改由于冲突解决而变得无效,这样客户机可以知悉这些改变不会被使用。
在另一示例中,服务器33从客户机1和客户机2接收到至少一个操作,并将一个客户机(例如客户机1)的操作发送给另一客户机(例如客户机2)。客户机2手头上有其自己的操作以及发送自服务器的客户机1的操作,于是可以并排地查看每个提议的改变以确定应该采取两组操作中的哪些操作(如果有的话)。这样,客户机25之一执行冲突解决的任务。如本领域的技术人员容易理解的,可以使用任意多种不同的冲突解决方案,而不会背离要求保护的本发明的范围。用于与多个客户机同步文档的计算机可读介质
图4是本发明的计算机可读介质(CRM)的示意图,概括地标示为125。该计算机可读介质具有用于与多个客户机同步文档的计算机可执行指令。用于执行步骤的计算机可执行指令包括用于从一个或多个客户机接收有关这一个或多个客户机中的每一个希望接收数据的格式的指令的接收指令。这些计算机可执行指令还包括用于定义原始文档的子节的定义指令,该原始文档是这些客户机中的一个或多个可能感兴趣的,这些子节对应于原始文档内的语义中断。这些计算机可执行指令还包括用于生成标识这些子节中的每一个的子节ID的生成指令,以及用于将子节ID的列表发送给这一个或多个客户机的发送指令。这些计算机可执行指令还包括用于从这一个或多个客户机中的至少一个接收订阅这些子节中的一个或多个的请求的接收指令。这些计算机可执行指令还包括用于响应请求将原始文档中一个或多个客户机希望订阅的这一个或多个子节转码成相应的一个或多个客户机希望接收数据的格式的转码指令。这些计算机可执行指令还包括用于依照这一个或多个客户机的相应的订阅请求,将经转码的订阅子节发送给它们的发送指令。
在也于图4中描述的另一示例中,这些计算机可执行指令还包括用于接收来自这些订阅客户机之一的修改原始文档的订阅子节的至少一个操作的接收指令。这些计算机可执行指令还包括用于将原始文档的子节中一个或多个客户机订阅的一个或多个子节散列成指示原始文档的内容的数值的散列指令,以及用于将原始文档的经修改的子节散列成指示至少一个经修改的子节的内容的数值的列散指令。这些计算机可执行指令还包括用于将原始文档的子节的数值与经修改的子节的数值作比较以确定原始文档的该子节是否被修改过的比较指令。这些计算机可执行指令还包括用于向订阅该子节的客户机提供与该子节相关联至少一个操作以供客户机修改该子节之用的提供指令。
以下示例示出了本发明的一种示例性同步算法。如上文一般讨论的,客户机25由向服务器33指定它希望接收的数据的格式开始(例如服务器文件61可能以Microsoft Word文档格式存储,而设备仅理解基本HTML)。以下是示例性客户机请求:
<Sync>
<ContentType>BasicHtml</ContentType>
</Sync>
在定义了本示例中原始文档61的五个子节65并生成标识每个子节的唯一性子节ID(例如Part1、Part2等)之后,服务器33通过在41处将子节ID的列表发送给客户机25来响应,之后客户机可以“订阅”该文档的特定子节。示例性服务器响应如下:
<Sync>
<SubSection>
<Id>Part1</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>Part1</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>Part1</Id>
<Data>
这是文档的部分一中的数据。注意子节ID没有被发送。由于客户机订阅了文档的部分1,因此服务器发送该数据。
<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)通常储存在ROM138中。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或用于通过诸如因特网等的WAN 198建立通信的其它装置。可以是内置或外置的调制解调器178通过用户输入接口184或其他适当的机制连接至系统总线136。在连网环境中,相关于计算机130所描述的程序模块或其部分可储存在远程存储器存储设备中(未示出)。作为示例而非限定,图5将远程应用程序192示为驻留在存储器设备上。应该理解,所示出的网络连接是示例性的,也可以使用在计算机之间建立通信链路的其它手段。
一般而言,计算机130的数据处理器是借助于在不同时间存储在计算机的各种计算机可读存储介质中的指令进行编程的。在一个示例中,程序和操作系统典型地分布在例如软盘或CD-ROM上。从那里它们被安装或加载到计算机的辅助存储器中。在执行时,它们被至少部分地加载到计算机的主电子存储器中。当这种介质包含用于实现以下结合微处理器或其他数据处理器描述的操作的指令或程序时,本文中所描述的本发明包括这些和其他各种类型的计算机可读存储介质。
为了说明起见,本文将诸如操作系统等程序和其他可执行程序组件示为分立的块。然而应该认识到,这些程序和组件在不同时间驻留在计算机的不同存储组件中,并且由计算机的数据处理器执行。
尽管结合了包括计算机130的示例性计算系统环境进行描述,但是本发明可用许多其他通用或专用计算系统环境或配置操作。计算系统环境并非旨在对本发明的使用范围或功能提出任何限定。此外,计算系统环境不应被解释为具有与示例性操作环境中所示组件中的任一个或其组合有关的任何依赖或要求。适合与本发明一起使用的公知的计算系统、环境和/或配置的示例包括但不限于个人计算机、服务器计算机、手持式或膝上型设备、多处理器系统、基于微处理器的系统、机顶盒、可编程消费电子产品、移动电话、网络PC、微型计算机、大型计算机、以及包括任何以上系统或类似设备的分布式计算环境等等。
在操作中,用作服务器33的计算机130执行如上所述的与多个客户机同步文档的方法。计算机130或其组件从一个或多个客户机接收有关这一个或多个客户机中的每一个希望接收数据的格式的指令。计算机130或其组件定义这些客户机中的一个和多个可能感兴趣的原始文档的子节,,这些子节对应于原始文档内的语义中断。计算机130或其组件生成标识这些子节中的每一个的子节ID。计算机130或其组件将子节ID的列表发送给一个或多个客户机。计算机130及其组件从这一个或多个客户机中的至少一个接收订阅这些子节中的一个或多个的请求。计算机130或其组件响应于该请求,将原始文档的这些子节中一个或多个客户机希望订阅的一个或多个子节转码成相应的一个或多个客户机希望接收数据的格式。计算机130或其组件依照一个或多个客户机相应的订阅请求,将经转码的订阅子节发送给这一个或多个客户机。
本领域的技术人员会注意到,这里所示出和描述的方法的执行或履行次序并非决定性的,除非另有指定。即,发明者构想了方法的要素可按任意次序执行,除非另有指定,并且方法可以包括比这里所公开的要素更多或更少的要素。
当引入本发明或其实施例的要素时,冠词“一”、“一个”、“该”和“所述”旨在表示有一个或多个所述要素。术语“包括”、“包含”和“具有”旨在意为包括的,并表示除了所列示的要素外可有其他外加要素。
根据以上内容,可以看出实现了本发明的这若干个目的,并获得了其他有利结果。
由于可对上述产品和方法作出各种改变而不会背离本发明的范围,因此以上描述中包含的和附图中所示的所有事物应被解释为是示例性的而非限定性的。