首页> 中国专利> 多主同步环境中的web服务端点的同步

多主同步环境中的web服务端点的同步

摘要

提供了一种阐述端点用于在多主联网计算生态系统中漫游、彼此共享和同步公共信息的元数据和消息收发的web服务同步协议。定义了一种用于在两个端点之间同步数据的通用基于SOAP的协议,其中这些端点中的一个或多个支持web服务。使用XML web服务来定义用于基于知识的传输的消息收发,该协议允许设备、服务和应用程序穿过防火墙同步,通过允许跨端点的任何公共信息集或子集来允许灵活性,并且通过不规定在端点处同步的实际数据的模式来允许可扩展性。

著录项

  • 公开/公告号CN101802809A

    专利类型发明专利

  • 公开/公告日2010-08-11

    原文格式PDF

  • 申请/专利权人 微软公司;

    申请/专利号CN200880108223.2

  • 申请日2008-09-23

  • 分类号G06F15/16(20060101);H04W56/00(20060101);H04L7/00(20060101);

  • 代理机构31100 上海专利商标事务所有限公司;

  • 代理人陈斌;钱静芳

  • 地址 美国华盛顿州

  • 入库时间 2023-12-18 00:35:33

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2015-06-10

    专利权的转移 IPC(主分类):G06F15/16 变更前: 变更后: 登记生效日:20150518 申请日:20080923

    专利申请权、专利权的转移

  • 2013-01-02

    授权

    授权

  • 2010-09-29

    实质审查的生效 IPC(主分类):G06F15/16 申请日:20080923

    实质审查的生效

  • 2010-08-11

    公开

    公开

说明书

技术领域

本发明涉及供松耦合设备在多主同步环境中彼此同步的同步协议。

背景

移动计算和通信设备的普及引起对只要用户想要就传递和接收信息的能力的期望。简而言之,无论何地、无论何时以及无论设备能力如何,用户都想要从各种设备对信息和应用程序的无处不在的访问,另外,用户想要能够在进行中访问和更新这些信息,并且他们想要确保数据如所能够的那样正确和最新。

存在试图使设备和对象彼此共享数据副本的各种分布式数据系统。例如,音乐共享系统可在PC、蜂窝电话、游戏控制台和MP3播放器之间同步音乐。电子邮件数据可在工作服务器、客户PC和便携式电子邮件设备之间进行同步。然而,当今就这些设备彼此同步一组公共信息而言,该同步根据设备之间的静态设置来进行。然而,当这些设备变得频繁地或间歇性地断开时,即,当它们是松耦合的以使其可能断开彼此之间的通信时,例如,当蜂窝电话在隧道中时,或者当将要同步的设备数量是动态的时候,期望具有供设备在其彼此重新连接或在其加入网络时确定每一个其他设备需要什么变更的拓扑结构无关方式。

当今,如图1所示,存在其中主节点100以专用方式来与客户机节点110同步的各种示例,诸如在电子邮件服务器与电子邮件客户机同步时等。由于两个设备之间的专用同步,用于在这两个设备之间同步所需的信息102可由主节点100来跟踪。这一信息102也可任选地由客户机节点110来跟踪。然而,当主节点100和客户机节点110之间的连接有时变为断开时以及当同步设备的数量增加时,跟踪跨所有这些设备的每一个设备需要的公共信息的必要信息变为难题。

当前解决方案通常仅将其同步语义基于特定节点(例如,电子邮件服务器)而非任意节点的时钟或逻辑水印。这些系统在单个连接节点或主节点的情况下能够运行良好。然而,在节点连接的拓扑结构或模式不可预见地改变时,这些系统就成问题。

其他系统构建用于特定类型的数据对象的专用同步模型,跨设备跟踪数据格式专用的大量原语元数据以便处理问题。例如,为了同步特定文字处理文档格式的对象,必须加入许多开销和复杂性以表示文档及其基本原语,因为它们是随着时间改变的,并且向希望根据公共文字处理文档集来同步的其他设备高效地表示该信息。除了由于这些系统所基于的自定义数据格式而造成构建昂贵且复杂并且不可扩展之外,由于必须生成、分析和跟踪大量的元数据,因此这些系统在本质上是不可伸缩的。

此外,解决方案仅应用于一个特定领域,例如文字处理文档。当考虑例如图片、视频、电子邮件、文档、数据库存储等所有类型的同步对象时,可以看出基于每种对象类型来实现自定义同步解决方案以便在多主环境中跟踪这些对象在设备之间的演化在当今是不可行的。因此,这种解决方案不能被说成将同步语义与数据语义解耦。

由此,当拓扑中的计算机改变它们彼此连接的方式或随着计算机数量的增长,需要节点无关同步知识。例如,对于媒体播放器,可能期望在多个计算机和多个网站之间同步。在大多数情况下,大多数应用程序只能在一些公知的端点(家庭PC和媒体播放器)之间同步数据。然而,由于对于媒体播放器应用程序的用户而言设备社区是随着时间演化的,因此增加了对设备使用的音乐库的数据同步灵活性的需求,由此引起对更加稳健的系统的需求。

当考虑在接受、生成、处理、存储、更新和发送数据中越来越多地涉及的web服务端点的增长,由此生成去往或来自设备的多种网络话务时,需求变得更加复杂。在这一点上,在设备的同步需求演化的同时,一致的趋势是更多的数据由web服务创建、存储、操纵和发送等,web服务即被设计成支持网络上可互操作的机器到机器交互的软件系统。通常,web服务是客户机设备可通过诸如因特网等网络来访问、并且在主存所请求的服务的远程系统上执行的web API。然而,也无法如同作为松耦合多主同步环境的一部分的通用端点那样与web服务同步。

就此,从多主环境的同步观点来看,可与任何设备同步的端点的web服务实现会是有价值的情况,因为两个设备可能无法直接连接,但能够经由公共web服务端点来连接。在这点上,当没有用于(独立于正在同步的对象)理解所有被连接的设备集的共同知识的机制时,在试图在松耦合设备和web服务之间同步时出现复杂情况,因为这些设备从将它们都连接在一起作为进化和发展的节点的网络拓扑的一部分的一个或多个网络不变地连接或断开。

由此,所需的是用于表示每一个连接的设备知道和不知道什么的高效、简单和通用机制,以使得公共信息能够以个人/设备的共同知识所准许的最大程度拼凑在一起。此外,存在对容纳web服务作为这一多主系统中的同步节点以帮助便于节点的松连接系统描述其所具有的数据和数据版本,描述它们在哪里接收到该数据,并且进一步描述它们需要来自对话中所涉及的另一节点的什么数据。

关于松耦合设备之间的同步的现有技术中的这些和其他缺陷的附加细节在描述以下本发明的各实施例之后将变得显而易见。

概述

提供了一种阐述端点用于在多主联网计算生态系统中漫游、彼此共享和同步的元数据和消息收发的web服务同步协议。在各非限制性实施例中,提供了一种用于在两个端点之间同步数据的通用基于SOAP的协议,其中这些端点中的一个或多个支持web服务。该协议使用XML web服务来定义用于基于知识的传输的消息收发,允许设备、服务和应用程序以准许跨端点的任何公共信息集或子集的灵活方式穿过防火墙同步,并且允许通过不规定在端点处同步的实际数据的模式来允许可扩展性。

此处提供了简化概述以帮助能够对以下更详细的描述和附图中的示例性、非限制性实施例的各方面有基本或大体的理解。然而,本概述并不旨在作为详尽的或穷尽的概观。相反,本概述的唯一目的是以简化的形式来介绍与本发明的某些示例性非限制性实施例相关的一些概念,作为以下本发明的各实施例的更为详细的描述的序言。

附图简述

用于使用协议来同步的web服务同步协议和技术参考附图来进一步描述,附图中:

图1示出了提供系统的两个明确定义的端点之间的同步的专用同步系统;

图2A是示出其中某些节点可以不频繁地或根本不彼此联系的示例性多主同步环境的框图;

图2B示出了其中节点根据依照本发明的非限制性实施例的web服务同步协议来与web服务端点同步的示例性情形;

图2C示出了其中web服务端点根据依照本发明的非限制性实施例的web服务同步协议来与节点同步的示例性情形;

图2D示出了其中多主同步环境中的节点根据本发明的web服务同步协议的非限制性实施例来实现更丰富的知识交换的示例性情形;

图3A示出了松连接节点网络的四个节点之间的示例性、非限制性知识交换;

图3B示出了在某些设备变得彼此断开时的松连接节点网络的四个节点之间的示例性、非限制性知识交换;

图4A、4B和4C示出了在网络节点之间共享多个对象的上下文中的示例性知识交换;

图5A是示出在网络节点之间共享的多个对象的上下文中的知识交换过程的示例性、非限制性流程图;

图5B是示出用于基于知识和部分知识来请求和传达变更的框架的通用体系结构;

图6是根据本发明的web服务同步协议的非限制性实施例的节点和/或web服务提供者的web服务通信的通用体系结构;

图7A、7B、7C和7D示出了可以使用本发明的非限制性实施例的灵活的web服务同步协议通信来实现的不同的知识交换消息收发模式;

图8示出了根据本发明的非限制性实施例的其中知识的两个不同版本根据不同的模式来表示,但是根据部分知识表示所启用的公共知识表示来同步的示例;

图9是示出根据本发明的非限制性实施例的在网络中的节点和/或web服务端点之间共享多个对象的上下文中的知识和/或部分知识交换的过程的示例性、非限制性流程图;

图10是用于执行与另一节点或web服务端点的知识交换的设备的示例性、非限制性实现的框图;

图11是表示其中可实现本发明的示例性、非限制性网络化环境的框图;以及

图12是表示其中可实现本发明的示例性、非限制性计算系统或操作环境的框图。

详细描述

概览

如在背景中所描述的,给定当今断开的和分布式计算方式,需要使用设备上的应用程序和信息并且回头在办公室同步对这些应用程序和信息的任何更新或者与家庭网络中的设备等进行同步的能力。就此,同步情形是无限的。

在多主同步环境中,在设备开始与包括web服务端点的一组松耦合节点中的一个或多个节点联系的任何地点及任何时间,同步能力都是合乎需要的。然而,期望在不跟踪大量数据专用元数据的情况下进行高效的知识交换。不幸的是,联网数据当今不支持与任何移动设备的同步并且移动设备不支持与任何联网数据的同步。相反,用于移动设备的不同的、专用数据同步协议有在增长。这些协议中的每一个只可用于所选传输,在所选设备子集上实现并且能够访问小型联网数据集。单一同步标准的缺失为终端用户、设备制造商、应用程序开发者和服务提供商造成了许多问题。

移动计算由此具有普遍的问题-数据同步。所有流行的移动设备(手持式计算机、移动电话、寻呼机、膝上型计算机)与网络应用程序、音乐应用程序、桌面日历以及存储信息的其他位置同步其数据。然而,这种在间歇性连接的条件下在进行中访问和更新这些信息的能力正在快速变成移动计算的普遍部分。但是,当今,几乎每一设备都使用不同的技术来执行数据同步。

因此,希望跨包括web服务端点的多个松耦合设备共享公共信息的任何分布式数据系统需要表示它们知道什么公共信息变更以及它们不知道什么变更的高效方式。

在考虑这些需求时,在各非限制性实施例中,本发明提供了一种使得web服务端点能够参与公共信息集或子集在多主同步环境中的节点和其他web服务端点之间的同步的数据类型不可知同步协议。提供了一种在设备连接到网络中的另一节点或web服务端点时为数据同步会话定义通信的数据同步协议。该协议支持用于包括对象和常见协议命令的标识和版本化的节点之间的同步的知识框架以便进行高效知识交换以同步本地和网络数据。

如图2A所示,可通过用户存储音乐并且在无论何地且无论何时音乐集合变更都跨该用户的所有设备同步该用户的音乐的需求来表示代表性多主同步环境。例如,在用户的家里,该用户可具有能够彼此同步的MP3播放器220和计算设备230。类似地,在该用户的工作地点,该用户可具有另一计算机设备200和移动电话240。就此,该用户能够将移动电话240在其与设备200联系时与该设备同步,但作为公司策略的一部分,该用户无法携带移动电话240离开办公地点。因此,在该假设情形中,家里的设备能够经由基于知识的交换来同步并且办公地点处的设备能够经由基于知识的交换来同步,然而,不存在将知识从办公设备传送到家庭设备或者相反的桥梁。因此,会期望能够同步到web服务端点。以下更详细地描述的各非限制性实施例中的本发明的协议经由对于web服务端点的XML消息收发来启用这一基于知识的交换以便给予多主同步环境中的附加同步选项和灵活性。

如图2B所示,利用用于交换对多主同步生态系统中的节点之间的公共信息集或子集的理解的高效的基于知识的同步框架,启用与web服务端点的基于知识的交换。如图所示,PC 200包括知识202,该知识包括一组对象及其版本(例如,时间戳)。通过调用web服务端点210的web服务同步请求,PC 200将其知识202发送到web服务210,web服务210进而将其自己的知识212与知识202进行比较。作为回报,web服务210将知识212返回给PC 200。知识交换框架的细节在下文中更详细地描述。就此,提供web服务同步协议205,该协议定义PC 200向web服务210发送XML消息以便进行基于知识202和212的基于知识的同步的方式。结果,web服务端点210获得客户机所理解的、web服务端点210不明白的任何知识202,反之亦然。

作为与web服务端点210的交换的结果,知识212被更新为知识212’,如图2C所示,其中图B的设备200变为断开,但MP3播放器220变为连接到web服务210,以便用web服务同步协议205来作出与web服务端点210同步的请求。就此,对于知识222和212’发生知识交换,在这种情况下,MP3播放器220获悉知识212’中的该MP3播放器220不知道的部分,反之亦然。

以此方式,如图2D所示,遵循用于表示在多主同步环境中连接、断开和同步的节点之间的知识的相同的同步框架的web服务端点210能够与任一节点同步,并由此便于学习跨所有用户节点的知识,即使在某些节点从未直接与多主同步组中的其他节点连接的情况下。

高效知识表示和交换

作为描述根据本发明的各非限制性实施例的、用于在多主同步环境中的节点之间同步数据或数据子集(包括与web服务端点同步)的同步协议的前序部分,在本节中,呈现用于高效地表示数据同步系统中的知识的通用机制的概览。该通用机制包括(1)通过只向第二节点要求发送第一节点所需的最少数据的连接设备之间的高效知识交换;(2)高效地且正确地识别第一节点和第二节点之间的数据状态不符(即,冲突)的能力;(3)同步任意数量的节点的能力;以及(4)经由任何其他节点来同步任何节点的能力,即,在对等、多主同步环境中工作的能力。

有了该通用机制,能够对将要在两个设备之间共享的某些信息作出任何数量的变更。在这两个设备变成连接的任何时候,它们可通过彼此交换它们的知识来变得知道重构彼此知道和不知道的内容所需的至少最少量的信息以便于设备之间的变更。注意,在涉及多于两个设备的情况下,知识可能是将要共享的更大信息库中的不完整的知识,但随着在多个设备之间共享的知识越来越多,共同知识继续由设备在其随着时间连接到其他设备时积累。

有利的是,在各非限制性实施例中,本发明可用于执行对全都对维护对象集的最新版本感兴趣的一组设备或如下所述的设备子集执行同步,但也允许这些设备与该对象集中的其他对象连接或断开连接。只要一设备经由一个或多个网络来与该组设备中的其他设备重新连接,该设备就可重新获得与用其共同知识表示的其他设备一样新的共同知识。以此方式,即使松连接设备也可与一组设备连接或断开连接,并且然后通过开始与拥有一组最新共同知识的任一组设备联系来重新获悉遗漏的所有知识。

图3A示出知识交换可被推广或缩放到任何数量的设备。如图所示,四个设备300、310、320和330被示为具有知识表示302、312、322和332,这些知识表示分别指示每一个设备所知道和不知道的关于将要跨设备共享的一组公共信息的内容。

有利的是,如图3B所示,即使在网络中的连接变成断开的情况下,所有这些设备300、310、320和330仍然能够获得一组完整的知识,只要对于其他设备直接或间接存在至少一个连接。设备330的知识332仍然经由与设备320的知识交换,然后经由设备320和310之间的知识交换,并且最后经由设备310和300之间的知识交换到达设备300。

在更多的设备共享关于将要共享的公共信息的知识时,所有设备都因为根据本发明的各非限制性实施例的知识交换对该共同知识来自哪一个设备不可知的而受益。这些设备各自独立操作以试图从其连接到的其他设备中的任一个获得尽可能多的关于将要在这些设备之间共享的信息的知识。

在示例性、非限制性细节中,更详细地描述供两个节点参与对话并在对话结束时具有关于所关心的数据集的等价知识的方法。该方法可通过为进入对等网络的每一个新设备创建知识交换能力来缩放超过两个节点。

因此,如图4A所示,具有任何数量的节点的对等网络中的节点400想要与节点410交换数据。节点A通过向节点410请求变更来开始并且为此节点400将其知识(表示为KN400)发送到节点410,如图所示。

设备或节点的知识通过用字母标识符来标记将要在设备之间共享的每一个对象,并且然后尾号表示该对象的最新版本来表示。例如,如图4A所示的KN400包括各自将要在节点400和410之间同步的对象A、B、C和D,并且每一个对象后的数字表示在该设备上已知的该对象的最新版本。例如,在时刻t=1时,知识KN400包括A的第5个版本、B的第4个版本、C的第7个版本和D的第1个版本,在图4A中表示为A4、B3、C6、D0。相反,在时刻t=1时,知识KN410可包括A的第4个版本、B的第7个版本、C的第7个版本和D的第3个版本,在图4A中表示为A3、B6、C6、D2。

如图4B中所示,在时刻T=2处,节点410将从节点400接收到的知识KN400与它自己的知识KN410进行比较,并且确定要将什么发送给节点400。在该示例中,结果,节点410将与B和D相关的变更发送给节点400,因为节点400的知识B3、D0在节点410的知识B6和D2之后。当节点410将B6和B3之间的变更以及D2和D0之间的变更发送给节点400时,它也一起发送它所具有的知识KN410的最新版本(反应对节点410的最新变更是何时做出的)。

如图4C所示,表示时刻t=3,将知识KN410发送到节点400允许节点400在它稍后发现节点400和节点410两者都在一对象处于相同版本时对该对象作出变更的情况下检测冲突(例如,存储冲突以便稍后解决)。这允许在节点遇到变更并交换变更时进行自主更新、高效枚举以及正确的冲突检测。例如,在该示例中,如果C6在知识KN400和KN410中不是相同对象,例如,如果两者都是独立地从C5演化为C6,则可留出哪一个C6是正确的C6以便例如根据适合同步情形和所涉及的设备的预设策略解决方案来解决冲突。

使用上述通用机制的分布式多主同步环境中的任何两个节点之间的示例性知识交换过程在图5A的流程图中示出。在500,节点A请求与节点B同步,由此向节点B要求节点A不知道的变更。为了装备(equip)节点B,在510,节点A将其知识发送到节点B。在520,节点B将从节点A接收到的知识与其自己的知识进行比较以确定应发送给节点A的节点B所知道的变更。在530,节点B将这些变更发送到节点A,另外,节点B将其知识发送到节点A以使得节点A能够在540执行类似的知识比较。

在550,在独立版本演化在节点A和节点B上发生的情况下,节点A检测节点B的知识中所反映的最新版本和节点A的知识中所反映的最新版本之间的任何潜在冲突。可任选地,可应用任何冲突解决策略以确定在冲突的情况下哪一个节点胜过另一个节点。在560,将节点B所没有的来自节点A的最新变更发送到节点B。冲突解决策略将另外指示是否有任何改变从节点B发送到节点A或从节点A发送给节点B,以便维护节点之间的公共信息。如果独立版本化是可以的或者是所期望的,则没有冲突解决是另一选择。

图5B示出了用于在经过滤的知识是可能的时候(即,在要将一节点的知识的子集与其他节点中的一个或多个同步的情况下)交换知识的一般化机制。如图所示,每一副本A和B都具有提供者PA和提供者PB。就此,每一副本A和B分别维护知识KA和KB,并且可能还维护经过滤的知识FA和FB。类似于不构造子集(subsetting)的情况,任一副本都能够请求另一副本的变更570并响应于该另一副本传达变更来接收变更580。如果经过滤的知识FA和经过滤的知识FB具有相同的作用域,则如同一般化的知识交换:

KA=KA∪KB

如果如果经过滤的知识FA和经过滤的知识FB不具有相同的作用域,则该知识应变于现有知识加上投影到其各自的经过滤的知识(filter)FA和FB的交集上的另一副本的知识,如下:

KA=KA∪(KB→(FA∩FB))

用于这些类型的经过滤的知识的示例性、非限制性应用以及其他应用用户过滤列、或者同步框架的任何变更单元。这特别适用,因为列变更不太可能遭受系统中的移动操作。对于该情形存在两个值得注意的考虑事项:经过滤的知识表示和知识合并。

对于经过滤的知识表示,对于不移动经过滤的知识的情况的经过滤的知识表示如下。每一经过滤的知识都被表示为该经过滤的知识中所包含的变更单元的列表。该表示提供方便的表示手段以及在必要时组合经过滤的知识的能力。组合经过滤的知识的能力对于合并知识是有用的。

对于知识合并,为了将知识保持在其最简洁的形式,必须维护合并知识的能力。就此,能够合并经过滤的知识的片段以使得能够以其最紧凑的形式维护知识。

考虑组合经过滤的知识的能力,因为经过滤的知识可被表示为变更单元集,所以可通过隔离存在于两个经过滤的知识中的变更单元集来协调经过滤的知识中的重叠。

而且,因为经过滤的知识的向量应用于该经过滤的知识下的各个变更单元中的每一个,所以可通过找出两个经过滤的知识中的每一个变更单元的变更单元组合向量来执行经过滤的知识的组合。然后一旦知道所有向量,就将具有公共向量的变更单元重新组合成新的经过滤的知识。

因此,知识的记法可用于高效地表示用于多主同步网络中的多个节点之间的知识交换的数据,这些节点中的任一节点都可独立地演化公共信息或公共信息的子集以便跨节点同步。如将在下文中更详细地描述的,上述基于知识的框架可扩展至包括web服务端点的多主同步环境。

多主同步环境中web服务端点的同步

如上所述,当今,存在各种不可互操作数据同步产品,其各自将来自少数类型的数据储存库的数据连接到少数设备。每一种协议仅可用于所选传输,并且在少数设备上实现。在这一点上,现有同步产品使用网络上的不同的各种通信协议。不可互操作同步技术的增长使得用户、设备制造商、服务提供商和应用程序开发者的任务变得复杂。公共数据同步协议的缺失正在阻碍对移动设备的使用的增长,限制用户访问数据的能力并且限制移动数据服务的传递。

因此,提供了阐述元数据的结构和端点用于在多主生态系统中漫游、共享和同步的协议的web服务(WS)同步协议。使用XML web服务,该协议允许设备、服务和应用程序穿过防火墙同步,并且还通过不规定要同步的实际数据的模式来允许可扩展性。本发明还启用取决于节点的目标和通信对称性来通过web服务进行灵活的消息收发的各种通信情形,例如,拉取、推送、或者查验拉取(ping to pull)消息收发情形。这还包括涉及先决同步知识的情形。

虽然web服务通常指的是被涉及成支持通过网络的可互操作机器到机器交互的任何软件系统,但web服务通常指使用遵循简单对象访问协议(SOAP)标准的可扩展标记语言(XML)消息来进行通信的客户机和服务器。这在图6中被大致示为在服务请求者600(例如,客户机)和web服务提供者610(例如,服务器)之间以来自服务请求者600的SOAP请求开始,web服务提供者610处理该请求,并且根据web服务通信协议,作为响应地返回任何SOAP消息。

另外,web服务定义通常包括对web服务提供者610所支持的操作的机器可读描述(即,用web服务描述语言(WSDL)的描述),以使得服务请求者600能够理解web服务所提供的服务。服务中介620可包括对各种web服务提供者610的描述,并且可以使用通用描述、发现和集成(UDDI)来发布服务列表以便于服务请求者600通过网络发现。UDDI是提供对描述与其目录中所列出的web服务交互所必需的协议绑定和消息格式的WSDL文档的访问的核心web服务标准之一。

因此,提供用于在两个端点之间同步数据的WS同步协议,其中至少一个端点支持web服务。在各非限制性实施例中,本发明提供用于在两个端点之间同步数据的通用基于SOAP的协议,其中至少一个端点支持web服务。

首先,对于本发明的WS同步协议的各非限制性实施例阐述一些记法、命名空间和术语。就此,此处使用以下句法,根据以下呈现的示例性、非限制性协议规约来为消息定义规范的大纲:

以下,句法被表示为XML实例。将字符附加到元素和属性以指示基数,如下:

“?”(0或1)

“*”(0或以上)

“+”(1或以上)

字符“|”用于指示在两替换间的选择。字符“[”和“]”用于指示所含各项将相对于基数或选择被视作组。

省略号(即,“...”)指示允许其他孩子或属性内容的可扩展点。可以在所指示的扩展点处添加附加孩子(child)和/或属性,但应分别避免与父亲(parent)和/或所有者的语音相矛盾。如果接收者未识别出扩展,则该接收者应避免处理该消息并且可能弄错。

XML命名空间前缀用于指示所定义的元素的命名空间。在一个实施例中,SOAP节点不使用SOAP封装中的XML命名空间标识符,除非它用本发明的各非限制性实施例中所定义的协议来编译。

能够针对不同的同步目标定义不同类型的数据交换,例如,从远程端点拉取变更以及将变更推送到远程端点。虽然可能存在其中同步交换中的两个端点可对称地进行通信的情况,但本发明的协议的各非限制性实施例主要适用于其中只有一个端点展示web服务的情形。

推送变更一般指其中客户机希望从web服务主机获取数据以获取该web服务主机的知识的情形。

推送变更一般指其中客户机希望将其在本地维护的知识发送到web服务的情形。

组合推送和拉取情形导致客户机和web服务端点之间的完整知识共享。这些情形还可包括将先决知识连同基于该先决知识的已作出的一组变更一起发送的概念。

如上所述,知识是变更枚举的‘水印’。不同于常见于许多同步系统的锚,如以上参考节点之间的通用知识交换所描述的,知识被明确地定义并且可由同步中所涉及的任一方解释。此外,因为定义了用于准确地组合知识的技术,所以不必为同步的每一个伙伴保持知识实例。相反,每一端点保持其自己的本地知识并且只要其从远程端点接收到变更就将要变更添加到其本地知识。有利的是,该协议可以在远程端点支持web服务的情况下使用。

如图7A的框图所示,有利的是,web服务同步协议的实施例支持用于利用如上所述的高效知识交换的概念来在多主同步环境中交换知识的各种消息收发模式。在第一种情形中,在维护副本A和副本A的知识KA的节点的通用提供者P和维护副本B和副本B的知识KB的web服务端点的web服务同步提供者WSP之间假定对称的双边通信。当通信未在一个方向或另一个方向上被“阻塞”时,通过提供者P在700处请求变更(包括将其自己的知识发送到提供者WSP)来进行知识交换。

进而,提供者WSP在710处基于请求来将变更传达给提供者P,包括将其知识发送到提供者P。此处的消息收发情形中的任一种都适用于节点侧或web服务端点侧,即,任一侧都可作出请求,但在web服务通信的情况下,注意,客户机必须发起同步请求,无论是拉取还是推送操作。

如图7B所示,另一种情形是“查验拉取”情形。从提供者P对web服务提供者WSP执行查验720或者相反,而不是直接将知识作为初始请求的一部分来发送(这可能在不必要时浪费网络带宽),由此提供者WSP然后确定自从前一同步点以来是否已经发生对其知识的任何更新。如果是,则这样通知提供者P并且知识交换根据图7A的步骤730和740来接着发生。

另一种情形,即推送情形在图7C中描绘。在盲推送中,或许由于可信关系或其他原因,节点简单地根据某一预定准则(例如,只要变更发生、只要一批变更周期性地发生等)来将其变更推送到web服务端点提供者WSP。就此,提供者P在750处将其知识KA提供给提供者WSP,并且web服务端点可将知识KA结合到其知识KB中或者该web服务端点在知识不是新的情况下忽略传达变更的尝试。

在又一消息收发情形中,如图7D所示,提供者P改为传达其知识KA以及提供者WSP必须理解的一组先决知识PKA或者相反而不是盲推送,以便出于有效同步的目的而消费知识KA。因此,同步通信以接收者已经具有特定量的知识为条件,否则丢弃数据。此时,彼此同步可能需要完整知识交换。

在上一节中并且在不同的消息收发情况下呈现了根据用于在多主环境中高效地表示同步数据的同步框架以及用于操纵知识的各种技术的知识操作的概览之后,现在呈现web服务同步协议的示例性、非限制性实现。有了web服务同步协议,知识可根据以下示例性XML伪结构来表示。

<Knowledge>

    <ScopeVector>

        <VectorEntry by=”...”sn=”...”/>

        <VectorEntry by=”...”sn=”...”/>

        <VectorEntry by=”...”sn=”...”/>

    </ScopeVector>

    <RangeExceptio ns>

        <Range lowerBound=”...”upperBound=”...”>

            <VectorEntry by=”...”sn=”...”/>

            <VectorEntry by=”...”sn=”...”/>

            <VectorEntry by=”...”sn=”...”/>

        </Range>

        <Range>

            ...

        </Range>

    </RangeExceptions>

    <ItemExceptions>

        <Item id=”...”>

            <ItemVector>

                <VectorEntry by=”...”sn=”...”/>

                <VectorEntry by=”...”sn=”...”/>

                <VectorEntry by=”...”sn=”...”/>

            </ItemVector>

        </Item>

        <Item id=”...”>

            <ChangeUnits>

                <Unit id=”...”>

                      <VectorEntry by=”...”sn=”...”/>

                      <VectorEntry by=”...”sn=”...”/>

                      <VectorEntry by=”...”sn=”...”/>

                  </Unit>

                  <Unit id=”...”>

                      ...

                  </Unit>

              </ChangeUnits>

         </Item>

    </ItemExceptions>

</Knowledge>

该XML表示中的/Knowledge/ScopeVector(/知识/作用域向量)包含应用于包含特定覆盖的数据集中的所有项目的VectorClock(向量时钟)。

/Knowledge/RangeExceptions(/知识/范围异常)是具有应覆盖ScopeVector(作用域向量)的VectorClock的范围的列表。

/Knowledge/RangeExceptions/Range:lowerBound(/知识/范围异常/范围:下限)进而是范围内所包含的最小项目。

/Knowledge/RangeExceptions/Range:upperBound(/知识/范围异常/范围:上限)表示未包含在范围内的、大于下限的最小项。

/Knowledge/RangeExceptions/Range(/知识/范围异常/范围)是应对范围使用的VectorClock。

/Knowledge/ItemExceptions(/知识/项目异常)表示具有应覆盖ScopeVector的VectorClock或者具有覆盖VectorClock的ChangeUnit(变更单元)集的项目列表。

/Knowledge/ItemExceptions/Item(/知识/项目异常/项目)表示由其标识符指定的、对齐应用异常的项目。

/Knowledge/ItemExceptions/Item/ItemVector(/知识/项目异常/项目/项目向量)是覆盖也将应用于项目的任何作用域或范围向量的VectorClock。

/Knowledge/ItemExceptions/Item/ChangeUnits(/知识/项目异常/项目/变更单元)(如果存在)表示项目中所包含的变更单元以及应用于该变更单元的覆盖VectorClock的列表。变更单元可以是例如项目特性。这些项目特性可以被设置/清除但遵从一模式且无法删除。

/Knowledge/ItemExceptions/Item/ChangeUnits/Unit(/知识/项目异常/项目/变更单元/单元)指定标识符以及也将应用于该变更单元的任何作用域、范围或项目向量的VectorClock。

批量变更是在两个同步方之间传递的变更的聚合,并且采用以下XML伪结构。

<ChangeBatch>

    <PrerequisiteKnowledge>

...

</PrerequisiteKnowledge>

<ChangeSet>

        <MadeWithKnowledge>

           ...

        </MadeWithKnowledge>

        <Changes>

            <Change>

                <ItemId>

                    <wsu:Address>

                        http ://target/uri

                    </wsu:Address>

                </ItemId>

                <IsTombstone>Boolean </IsTombstone>

                <BeginsRange>Boolean </BeginsRange>

                <CreationVersion by=”...”sn=”...”/>

                <UpdateVersion by=”...”sn=”...”/>

                <ChangeUnits>

                    <Unit>

                       <UnitId>

                           <wsu:Address>

                               http://target/uri

                            </wsu:Address>

                        </UnitId>

                        <UpdateVersion .../>

                    </Unit>

                    ...

                </ChangeUnits>

            </Change>

        </Changes>

    </ChangeSet>

    ...

    <MoreDataIsAvailable>Boolean </MoreDataIsAvailable>

</ChangeBatch>

在以上批量变更伪结构中,/ChangeBatch/PrerequisiteKnowledge(/批量变更/先决知识)指定作为当前批量变更的先决条件的知识。该知识被接收变更的端点的知识包括。

/ChangeBatch/ChangeSet(/批量变更/变更集)是批量变更中共享MadeWithKnowledge的变更集。

/ChangeBatch/ChangeSet/MadeWithKnowledge是应用于变更集的知识。它用于冲突检测以及生成可添加到接收ChangeBatch(批量变更)的端点的知识的知识片段。

/ChangeBatch/ChangeSet/Changes(/批量变更/变更集/诸变更)是变更列表。

/ChangeBatch/ChangeSet/Changes/Change(/批量变更/变更集/诸变更/变更)描述/ChangeBatch/ChangeSet/Changes中的单独的变更。

/ChangeBatch/ChangeSet/Changes/Change/ItemId(/批量变更/变更集/诸变更/变更/项目Id)是所发送的项目的同步标识符。提供者还可通过使用地址元素来在该消息中包括实际数据来优化。

/ChangeBatch/ChangeSet/Changes/Change/IsTombstone(/批量变更/变更集/诸变更/变更/是删除)是指示这是否是表示已经删除的项目的元数据的标志。

/ChangeBatch/ChangeSet/Changes/Change/BeginsRange(/批量变更/变更集/诸变更/变更/开始范围)是指示该项目是否是连续项目序列中的第一个项目的标志。

/ChangeBatch/ChangeSet/Changes/Change/CreationVersion(/批量变更/变更集/诸变更/变更/创建版本)是在项目进入作用域时给予该项目的版本。

/ChangeBatch/ChangeSet/Changes/Change/UpdateVersion(/批量变更/变更集/诸变更/变更/更新版本)(如果存在)是在该批量变更中传递的项目的版本。

/ChangeBatch/ChangeSet/Changes/Change/ChangeUnits(/批量变更/变更集/诸变更/变更/变更单元)(如果存在)是项目中所包含的变更单元的列表。

/ChangeBatch/ChangeSet/Changes/Change/ChangeUnits/Unit(/批量变更/变更集/诸变更/变更/变更单元/单元)描述项目中的特定变更单元。

/ChangeBatch/ChangeSet/Changes/Change/ChangeUnits/Unit/UnitId(/批量变更/变更集/诸变更/变更/变更单元/单元/单元Id)是变更单元的标识符。类似于Change/ItemId(变更/项目Id)字段,这可用于使用地址元素来嵌入或链接数据。

/ChangeBatch/ChangeSet/Changes/Change/ChangeUnits/Unit/UpdateVersion(/批量变更/变更集/诸变更/变更/变更单元/单元/更新版本)是在该批量变更中传递的项目中的变更单元的版本。

/ChangeBatch/MoreDataIsAvailable(/批量变更/可获得更多细节)是指示源已知的PrerequisiteKnowledge和MadeWithKnowledge之间所有变更都包含在该批量变更中的标志。

对于同步协议的消息收发,GetKnowledge(获取知识)消息是可由设备节点发送到web服务端点以获取该服务的当前知识的副本的消息,并且具有以下示例性XML伪结构。

<GetKnowledge>

    <ScopeReplica>

        http://scope/replica/uri

    </ScopeReplica>

</GetKnowledge>

/GetKnowledge/ScopeReplica

GetKnowledge定义允许该服务标识要同步的目标数据的与该服务相关的信息。web服务提供者使用URI来完全解析所同步的逻辑项目集,例如,“4星音乐”、“视频”、“公共联系人”等。

GetKnowledgeResponse(获取知识响应)消息是来自web服务的对GetKnowledge消息的响应,包含该服务的知识的快照,并且具有以下示例性XML伪结构。

<GetKnowledgeResponse>

   <ScopeReplica>

       http://scope/replica/uri

   </ScopeReplica>

   <Knowledge>

      ...

   </Knowledge>

</GetKnowledgeResponse>

/GetKnowledgeResponse/ScopeReplica(/获取知识响应/作用域副本)定义允许服务标识要同步的目标数据的与该服务相关的信息。

/GetKnowledgeResponse/Knowledge(/获取知识响应/知识)是对于给定Scope-Replica(作用域副本)的服务的知识。

RequestChanges(请求变更)消息被发送到web服务以请求该服务枚举并返回批量消息,并且具有以下示例性XML伪结构。

    <RequestChanges>

        <ScopeReplica>

            http://scope/replica/uri

        </ScopeReplica>

        <Knowledge>

           ...

        </Knowledge>

        <RequestParams

EnumerateAllItemsOnForgottenKnowledgeFailure=true>

   </RequestChanges>

/RequestChanges/ScopeReplica(/请求变更/作用域副本)定义允许服务标识要同步的目标数据的与该服务相关的信息。

/RequestChanges/Knowledge(/请求变更/知识)是服务应将其作为枚举变更的基础的客户机知识。

/RequestChanges/RequestParams/EnumerateAllItemsOnForgottenKnowledgeFailure(/请求变更/请求参数/基于已忘记知识失败来枚举所有项目)是指示如果客户机知识未能包含已忘记的服务器知识,则该服务器应枚举其存储中的所有项目以允许客户机清理已删除项目的标志。

RequestChangesResponse(请求变更响应)消息是对RequestChanges(请求变更)的响应,包含所有变更都在其中的批量变更。ChangeBatch(批量变更)中的PrerequisiteKnowledge是作为RequestChanges消息的一部分来发送的知识。

<RequestChangesResponse>

    <ScopeReplica>

        http://scope/replica/uri

    </ScopeReplica>

    <ChangeBatch>

        ...

    </ChangeBatch>

    <FullItemSetEnumerated>Boolean</FullItemSetEnumerated>

    <ForgottenKnowledge>

        ...

   </ForgottenKnowledge>

</RequestChangesResponse>

/RequestChangesResponse/ScopeReplica(/请求变更响应/作用域副本)定义允许服务标识要同步的目标数据的与该服务相关的信息。

/RequestChangesResponse/ChangeBatch(/请求变更响应/批量变更)是需要返回给客户机的由服务标识的批量变更。

/RequestChangesResponse/FullItemSetEnumerated是指示批量变更由于已忘记知识检查失败而包含服务的Scope-Replica中的项目的完整枚举的标志。

在完整枚举的情况下,/RequestChangesResponse/ForgottenKnowledge(/请求变更响应/已忘记知识)是客户机应用批量变更来获悉的已忘记的服务知识。

ConveyChanges(传达变更)消息在将一组变更推送到服务时被发送到该服务。在ChangeBatch中发送的知识是用于枚举的知识。该指示可能已经通过对GetKnowledge的调用或者作为通过先前同步消息获取的高速缓存的副本来获取,并且采用以下示例性XML伪结构。

<ConveyChanges>

    <ScopeReplica>

        http://scope/replica/uri

    </ScopeReplica>

    <ChangeBatch>

        ...

    </ChangeBatch>

    <ForgottenKnowledge>

        ...

    </ForgottenKnowledge>

    <FullItemSetEnumerated>Boolean</FullItemSetEnumerated>

</ConveyChanges>

/ConveyChanges/ScopeReplica(/传达变更/作用域副本)定义允许服务标识要同步的目标数据的与该服务相关的信息。

/ConveyChanges/ChangeBatch(/传达变更/批量变更)是需要应用于服务的由客户机标识的批量变更。

/ConveyChanges/FullItemSetEnumerated(/传达变更/枚举完整项目集)是指示批量变更由于已忘记知识检查失败而包含客户机的Scope-Replica中的项目的完整枚举的标志。

在完整枚举的情况下,/ConveyChanges/ForgottenKnowledge(/传达变更/已忘记知识)是服务应用批量变更来获悉的已忘记的客户机知识。

ConveyChangesResponse(传达变更响应)消息是对ConveyChanges(传达变更)消息的响应,作为应用变更的结果而包含web服务上的知识,并且具有以下示例性XML伪结构。

<ConveyChangesResponse>

    <ScopeReplica>

        http://scope/replica/uri

    </ScopeReplica>

    <ResultingKnowledge>

        ...

    </ResultingKnowledge>

</ConveyChangesResponse>

/ConveyChangesResponse/ScopeReplica(/传达变更响应/作用域副本)定义允许服务标识要同步的目标数据的与该服务相关的信息。

/ConveyChangesResponse/ResultingKnowledge(/传达变更响应/所得知识)是在应用所传达的批量变更后的服务知识。

由此提供了一种阐述端点用于在多主联网计算生态系统中漫游、彼此共享和同步公共信息的元数据和消息收发的web服务同步协议。

定义了一种用于在两个端点之间的同步数据的通用基于SOAP的协议,其中这些端点中的一个或多个支持web服务。使用XML web服务来定义用于基于知识的传输的消息收发,该协议允许设备、服务和应用程序穿过防火墙同步,通过允许跨端点的任何公共信息集或子集来允许灵活性,并且通过不规定在端点处同步的实际数据的模式来允许可扩展性。

图8示出用于在多主同步环境中的节点和/或web服务端点之间同步公共信息集或公共信息子集的基于知识的框架使得节点和/或web服务端点能够用不同的模式来存储相同的数据。虽然不同的端点必须协商对于所同步的模式元素的公共表示,即同步协议在其知识表示方面是数据类型不可知的,并由此每一节点都能够根据其自己的希望来存储底层模式元素。

如图所示,例如,PC1可包括用于表示联系对象的第一模式S1,而web服务端点WSE可根据不同的模式S2来存储联系对象。就此,因为高效的知识表示不取决于所同步的数据类型,所以不同的设备可作出关于要消费哪一个知识(例如,知识的哪些子集)的不同决定。

图9是根据本发明的协议的非限制性实施例的用于在节点和web服务之间交换知识的示例性、非限制性方法的流程图。然而,如图7A、7B、7C和7D清楚地描述的,本发明不限于图9所表示的完整知识交换模式,查验拉取、拉取和推送情形以及先决知识情形全都根据灵活的同步协议来构想。

在900,一节点向web服务请求变更。在910,该节点将其知识发送到web服务。在920,web服务将其知识与节点知识进行比较。在930,web服务将节点不知道的最新变更从该web服务发送到该节点。同样,在940,节点接收web服务的知识以便与其自己的知识进行比较。在950,检测节点的知识和web服务的知识中的任何独立演化的变更之间的冲突。最后,在960,将web服务不知道的最新变更从节点发送到该web服务。知识分析由此通过只发送另一端点请求且尚不具有的变更来使得能够进行高效的知识交换。

图10是用于执行完整或部分知识交换的设备1000b的示例性、非限制性实现的框图。如图所示,设备1000b包括同步模块1020,该同步模块1020执行根据本发明的非限制性实施例的用于与另一设备同步对象集1030的完整或部分知识交换技术。同步模块1020可包括同步通信模块1022,该同步通信模块1022用于一般根据本发明的非限制性实施例的知识交换技术来发送和接收数据。

同步通信模块1022还可包括同步发起模块1022a,该同步发起模块1022a可在例如经由授权模块1040而被授权并连接到第二设备的情况下发起与该第二设备的同步。同步模块1020还可包括I/O模块1022b,该I/O模块1022b通过向第二设备(未示出)发送关于对象集1030的完整和/或部分知识1002b来响应同步发起并且用于接收该第二设备的返回的完整和/或部分知识1012b以及源自该第二设备的对该对象集1030作出的变更。进而,同步分析模块1024操作以应用将要对该对象集1030作出的变更并且将来自第二设备的完整和/或部分知识1012b与第一设备的知识1002b进行比较以确定要发送给该第二设备的变更以完成设备之间的同步。

关于web服务的补充上下文

定义web服务的规约是有意模块化的,并且结果不存在包含所有规约的一个文档。另外,既不存在单个规约集,也不存在稳定规约集。一般而言,如技术环境和选择所规定的,存在由其他技术补充的若干“核心”规约,包括:XML、SOAP、WSDL和UDDI。

简单对象访问协议(SOAP)是“绑定”到底层协议的基于XML的、可扩展消息封装格式。SOAP是用于通常使用超文本传输协议(HTTP)/HTTP安全(HTTPS)来通过计算机网络交换基于XML的消息的协议。SOAP形成web服务栈的基础层,提供其上可构建更多抽象层的基本消息收发框架。

SOAP中存在若干不同类型的消息收发模式,但至今最常用的是远程过程调用(RPC)模式,其中一个网络节点(客户机)向另一节点(服务器)发送请求消息,并且服务器立即向客户机发送响应消息。使用HTTP上的SOAP允许在代理和防火墙后进行比先前的远程执行技术更容易的通信。

SOAP功能足够多以允许使用不同的传输协议。标准栈将HTTP用作传输协议,但也可使用其他协议(TCP、SNMP)。

WSDL是允许描述服务接口及其与特定协议的绑定的细节的XML格式并且通常用于生成服务器和客户机代码,并且用于配置。

通用描述、发现和集成(UDDI)是用于发布和发现关于web服务的元数据以使得应用程序能够在设计时或运行时发现web服务的协议。UDDI是使得企业能够发布服务列表和彼此发现并且定义服务或软件应用程序如何通过因特网来交互的开放式行业发端(open industry initiative)。UDDI企业注册包括三个分量:

白页-地址、联系人和已知标识符;

黄页-基于标准分类的行业分类;

绿页-关于企业所展示的服务的技术信息。

UDDI是核心web服务标准之一。它被设计成由SOAP消息来询问并且提供对描述与其目录中所列出的web服务交互所需的协议绑定和消息格式的WSDL文档的访问。

示例性联网和分布式环境

本领域的普通技术人员可以理解,上述对于web服务端点的同步知识表示和交换的各非限制性实施例可以结合任何计算机或可作为计算机网络的一部分来部署的其它客户机或服务器设备来实现,或可在连接至任何种类的数据存储的分布式计算环境中实现。在这一点上,本发明涉及任何计算机系统或环境,其具有任意数目的存储器或存储单元,以及发生在任意数目的存储单元或卷上的任意数目的应用程序和进程,它们可结合根据本发明的同步技术来使用。本发明可应用于具有部署在具有远程或本地存储的网络环境或分布式计算环境中的服务器计算机和客户计算机的环境。本发明也可应用于具有用于结合远程或本地服务和进程来生成、接收和发送信息的编程语言功能、解释和执行能力的独立计算设备。

分布式计算通过计算设备和系统之间的交换提供了计算机资源和服务的共享。这些资源和服务包括信息的交换、对于诸如文件等对象的高速缓存存储和盘存储。分布式计算利用网络连接,从而允许客户机利用它们的集体力量来使整个企业受益。在这一点上,各种设备可具有可包含根据本发明的用于同步的系统和方法的应用程序、对象或资源。

图11提供了示例性的联网或分布式计算环境的示意图。该分布式计算环境包括计算对象1110a、1110b等,以及计算对象或设备1120a、1120b、1120c、1120d、1120e等。这些对象可包括程序、方法、数据存储、可编程逻辑等等。这些对象可包括诸如PDA、音频/视频设备、MP3播放器、个人计算机等相同或不同设备的各部分。每一对象可通过通信网络1140与另一对象通信。该网络本身可以包括向图11的系统提供服务的其它计算对象和计算设备,且其本身可以表示多个互连的网络。根据本发明的一方面,每一对象1110a、1110b等,或1120a、1120b、1120c、1120d、1120e等可包含可利用适用于根据本发明的用于知识同步的系统和方法的API、或其它对象、软件、固件和/或硬件的应用程序。

还可以理解,诸如1120c等对象可以主存在另一计算设备1110a、1110b等或1120a、1120b、1120c、1120d、1120e等上。因此,尽管所示的物理环境可以将所连接的设备示为计算机,但是这样的图示仅是示例性的,并且该物理环境可以被替换地描述或描绘成包括诸如PDA、电视机、MP3播放器等的各种数字设备,它们中的任何一个可采用各种有线和无线服务、诸如接口、COM对象等软件对象,等等。

存在支持分布式计算环境的各种系统、组件和网络配置。例如,计算系统可以通过有线或无线系统、本地网络或广泛分布的网络连接在一起。当前,许多网络被耦合至因特网,后者为广泛分布的计算提供了基础结构并包含许多不同的网络。任何基础架构都可用于便于根据本发明的同步的示例性通信。

在家庭网络环境中,有至少四个全异的网络传输介质,其每一个可支持一种唯一的协议,这些介质诸如电力线、数据(无线和有线)、语音(如,电话)和娱乐媒体。诸如电灯开关和电器设备等大多数家庭控制设备可使用电力线来连接。数据服务可通过宽带(如,DSL或电缆调制解调器)进入家庭,并可在家庭内使用无线(如,家庭RF或802.11B)或有线(如,家庭PNA、Cat 5、以太网、甚至是电力线)连接来访问。语音话务可通过有线(如,Cat 3)或无线(如,蜂窝电话)进入家庭,并可在家庭中使用Cat 3连线来分布。娱乐媒体或其它图形数据可通过卫星或电缆进入家庭,并通常在家庭中使用同轴电缆来分布。IEEE 1394和DVI也是用于媒体设备群集的数字互联。可作为协议标准浮现或已经浮现的所有这些网络环境和其它环境可被互联来形成可通过诸如因特网等广域网连接到外部世界的网络,诸如内联网。简言之,对数据的存储和传输存在各种不同的源,因此本发明的任何计算设备可按照任何现有方式共享和传输数据,且在本文实施例中描述的方式不旨在是限制性的。

因特网通常指使用传输控制协议/网际协议(TCP/IP)协议套件的网络和网关的集合,该协议在计算机联网领域中是公知的。因特网可被描述为由执行允许用户通过网络交互和共享信息的联网协议的计算机互连的地理上分布的远程计算机网络的系统。由于这类广泛分布信息的共享,诸如因特网等远程网络至今发展成一种开放式系统,开发者可用该开放式系统设计用于执行专用操作或服务的软件应用程序而基本上没有限制。

由此,该网络基础结构允许诸如客户机/服务器、对等或混合体系结构等大量网络拓朴结构。“客户机”是使用与它无关的另一类或组的服务的一个类或组中的成员。由此,在计算时,客户机是进程,即,粗略地而言是一组请求由另一程序提供的服务的指令或任务。客户机进程利用所请求的服务,而不必“知道”有关其它程序或服务本身的任何工作细节。在客户机/服务器体系结构中,尤其在网络化系统中,客户机通常是访问由例如服务器等另一计算机提供的共享的网络资源的计算机。在图11的图示中,作为一个示例,计算机1120a、1120b、1120c、1120d、1120e等可以被认为是客户机,而计算机1110a、1110b等可以被认为是服务器,其中服务器1110a、1110b等维护随后被复制到客户计算机1120a、1120b、1120c、1120d、1120e等的数据,然而任何计算机都可被认为是客户机、服务器或两者,这取决于环境。这些计算设备中的任一个都可处理数据或请求可包含根据本发明的知识同步技术的服务或任务。

服务器通常是可通过诸如因特网或无线网络基础架构等远程网络或本地网络访问的远程计算机系统。客户机进程可以在第一计算机系统中活动,而服务器进程可以在第二计算机系统中活动,它们通过通信介质彼此通信,从而提供分布式功能并允许多个客户机利用服务器的信息收集能力。根据本发明的用于基于知识来同步的技术所使用的任何软件对象可分布在多个计算设备或对象上。

客户机和服务器利用由协议层提供的功能来彼此通信。例如,超文本传输协议(HTTP)是结合万维网(WWW),即“web”使用的常见协议。通常,诸如网际协议(IP)地址等计算机网络地址或诸如统一资源定位器(URL)等其它引用可以用于彼此标识服务器或客户计算机。网络地址可以被称为URL地址。可以通过通信介质来提供通信,例如客户机和服务器可以通过TCP/IP连接来彼此耦合以进行大容量通信。

由此,图11示出了其中可采用本发明的、服务器通过网络/总线与客户计算机通信的示例性联网或分布式环境。更详细而言,根据本发明,多个服务器1110a、1110b等经由通信网络/总线1140互连,通信网络/总线1140可以是LAN、WAN、内联网、GSM网络、因特网等,它具有多个客户机或远程计算设备1120a、1120b、1120c、1120d、1120e等,如便携式计算机、手持式计算机、瘦客户机、联网设备或其它设备,如VCR、TV、烤箱、灯、加热器等等。因此,构想了本发明可应用于期望同步任何种类的数据的任何计算设备。

例如,在其中通信网络/总线1140是因特网的网络环境中,服务器1110a、1110b等可以是客户机1120a、1120b、1120c、1120d、1120e等通过诸如HTTP等多种已知协议中的任一种与其通信的web服务器。服务器1110a、1110b等也可担当客户机1120a、1120b、1120c、1120d、1120e等,这是分布式计算环境的特性。

如上所述,通信可以是有线或无线的,或者是两者的适当组合。客户机设备1120a、1120b、1120c、1120d、1120e等可以通过或不通过通信网络/总线1140通信,并可具有与其相关联的独立通信。例如,在TV或VCR的情况下,可能存在或不存在其控制的网络化方面。每一客户计算机1120a、1120b、1120c、1120d、1120e等以及服务器计算机1110a、1110b等可以具备各种应用程序模块或对象1135a、1135b、1135c等,并具有对各种类型的存储元件或对象的连接或访问,在这些存储元件或对象上可储存文件或数据流,或者可向其下载、发送或迁移文件或数据流的各部分。计算机1110a、1110b、1120a、1120b、1120c、1120d、1120e等中的任何一个或多个可负责维护并更新数据库1130或其它存储元件,诸如用于储存根据本发明处理或保存的数据的数据库或存储器1130。由此,本发明可以用于具有可访问计算机网络/总线1140并与其交互的客户计算机1120a、1120b、1120c、1120d、1120e等,以及可与客户机计算机1110a、1120b、1120c、1120d、1120e等交互的服务器计算机1110a、1110b等,以及其它类似的设备和数据库1130的计算机网络环境中。

示例性计算设备

如上所述,本发明适用于其中可能期望跨一组设备同步任何种类的数据的任何设备。因此,应当理解,构想了结合本发明使用的所有种类的手持式、便携式和其它计算设备和计算对象,即,在设备可从跨设备共享数据受益或以其它方式接收、处理或存储数据的任何地方。因此,在下面的图12中描述的以下通用远程计算机仅是一个示例,且本发明可用具有网络/总线互操作性和交互的任何客户机来实现。由此,本发明可在其中蕴含了极少或最小客户机资源的联网的托管服务的环境,例如其中客户机设备仅用作到网络/总线的接口(如置于电器中的对象)的联网环境中实现。

尽管并不是必需的,但本发明可以部分地经由操作系统来实现,以供设备或对象的服务开发者使用,和/或被包括在结合本发明的组件操作的应用软件中。软件可以在由诸如客户机工作站、服务器或其它设备等一个或多个计算机执行的诸如程序模块等计算机可执行指令的通用上下文中描述。本领域的技术人员可以理解,本发明可以用其它计算机系统配置和协议来实施。

图12由此示出其中可实现本发明的合适的计算系统环境1200a的一个示例,但如以上清楚地描述的,计算系统环境1200a仅为用于媒体设备的合适的计算环境的一个示例,并非旨在对本发明的使用范围或功能提出任何限制。也不应将计算系统1200a解释为对示例性操作环境1200a中示出的任一组件或其组合具有任何依赖性或需求。

参见图12,用于实现本发明的示例性远程设备包括计算机1210a形式的通用计算设备。计算机1210a的组件可以包括,但不限于,处理单元1220a、系统存储器1230a、和将包括系统存储器在内的各种系统组件耦合至处理单元1220a的系统总线1221a。系统总线1221a可以是若干种类型的总线结构中的任一种,包括存储器总线或存储控制器、外围总线、以及使用各种总线体系结构中的任一种的局部总线。

计算机1210a通常包括各种计算机可读介质。计算机可读介质可以是可由计算机1210a访问的任何可用介质。作为示例而非限制,计算机可读介质可包括计算机存储介质和通信介质。计算机存储介质包括以用于存储诸如计算机可读指令、数据结构、程序模块或其它数据等信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括但不限于,RAM、ROM、EEPROM、闪存或其它存储器技术、CDROM、数字多功能盘(DVD)或其它光盘存储、磁盒、磁带、磁盘存储或其它磁存储设备、或可以用来储存所需信息并可由计算机1210a访问的任何其它介质。通信介质通常以诸如载波或其它传输机制等已调制数据信号来体现计算机可读指令、数据结构、程序模块或其它数据,并包括任意信息传送介质。

系统存储器1230a可以包括诸如只读存储器(ROM)和/或随机存取存储器(RAM)等易失性和/或非易失性存储器形式的计算机存储介质。基本输入/输出系统(BIOS)可被存储在存储器1230a中,它包含帮助在诸如启动期间在计算机1210a内的元件之间传递信息的基本例程。存储器1230a通常还包含处理单元1220a可以立即访问和/或目前正在操作的数据和/或程序模块。作为示例而非局限,存储器1230a还可以包括操作系统、应用程序、其它程序模块、和程序数据。

计算机1210a也可以包括其它可移动/不可移动、易失性/非易失性计算机存储介质。例如,计算机1210a可以包括对不可移动、非易失性磁介质进行读写的硬盘驱动器,对可移动、非易失性磁盘进行读写的磁盘驱动器,和/或对诸如CD-ROM或其它光学介质等可移动、非易失性光盘进行读写的光盘驱动器。可以在示例性操作环境中使用的其它可移动/不可移动、易失性/非易失性计算机存储介质包括但不限于,磁带盒、闪存卡、数字多功能盘、数字录像带、固态RAM、固态ROM等等。硬盘驱动器通常由诸如接口等不可移动存储器接口连接至系统总线1,221a,而磁盘驱动器或光盘驱动器通常由诸如接口等可移动存储器接口连接至系统总线1221a。

用户可以通过输入设备,如键盘和定点设备(通常指鼠标、跟踪球或触摸板)向计算机1210a输入命令和信息。其它输入设备可以包括话筒、操纵杆、游戏手柄、圆盘式卫星天线、扫描仪等等。这些和其它输入设备通常由耦合至系统总线1221a的用户输入1240a和相关联的接口连接到处理单元1220a,但是也可由诸如并行端口、游戏端口或通用串行总线(USB)之类的其它接口和总线结构连接。图形子系统也可以被连接到系统总线1221a。监视器或其它类型的显示设备也通过接口,如输出接口1250a连接至系统总线1221a,而输出接口1250a又与视频存储器通信。除监视器之外,计算机还可以包括其它外围输出设备,如扬声器和打印机,它们可以通过输出接口1250a连接。

计算机1210a可使用至诸如远程计算机1270a等的一个或多个远程计算机的逻辑连接在网络化或分布式环境中操作,远程计算机1270a又可以具有与设备1210a不同的媒体能力。远程计算机1270a可以是个人计算机、服务器、路由器、网络PC、对等设备或其它常见的网络节点、或任何其它远程媒体消费或传输设备,并且可以包括上面关于计算机1210a所描述的任何或全部元件。图12所示的逻辑连接包括诸如局域网(LAN)或广域网(WAN)等的网络1271a,但也可以包括其它网络/总线。这样的联网环境在家庭、办公室、企业范围计算机网络、内联网和因特网中是常见的。

当在LAN联网环境中使用时,计算机1210a通过网络接口或适配器连接至LAN 1271a。当在WAN联网环境中使用时,计算机1210a通常包括通信组件,诸如调制解调器或用于通过诸如因特网等的WAN建立通信的其它装置。诸如调制解调器等通信组件可以是内置或外置的,它可以通过输入1240a的用户输入接口或其它适当的机制连接至系统总线1221a。在网络化环境中,相对于计算机1210a所描述的程序模块或其部分可被储存在远程存储器存储设备中。可以理解,所示和所述的网络连接是示例性的,且可以使用在计算机之间建立通信链路的其它手段。

有多种实现本发明的方法,例如适当的API、工具箱、驱动程序代码、操作系统、控件、独立或可下载软件对象等,它们使得应用程序和服务能够使用根据本发明的用于表示和交换知识的系统和方法。本发明从API(或其它软件对象)的观点以及从执行根据本发明的知识交换的软件或硬件对象的观点构想了对本发明的使用。由此,此处描述的本发明的各种实现都可以具有完全采用硬件、部分采用硬件并且部分采用软件、以及采用软件的方面。

在本文中使用的词语“示例性”意味着用作示例、范例或说明。为避免疑惑,本文公开的主题不受限于这样的示例。此外,本文描述为“示例性”的任何方面或设计不必解释成优于其它方面或设计或比其它方面或设计有利,它也不旨在排除本领域的普通技术人员所知的等效示例性结构和技术。而且,就术语“包括”、“具有”、“包含”和其它类似的词语在详细描述或权利要求书中的使用而言,为避免疑惑,这样的术语旨在以类似于术语“包括”作为开放的过渡词的方式解释而不排除任何附加或其它元素。

如上所述,尽管结合各种计算设备和网络体系结构描述了本发明的示例性实施例,但底层概念可被应用于其中期望与另一计算设备或系统同步数据的任何计算设备或系统。例如,本发明的同步过程实现可被应用于计算设备的操作系统,可作为设备上的独立对象、作为另一对象的一部分、作为可重复使用的控件、作为可从服务器下载的对象、作为设备或对象和网络之间的“中间人”、作为分布式对象、作为硬件、以存储器、以上任何的组合等来提供。

如上所述,此处所述的各种技术可结合硬件或软件,或在适当时以两者的组合来实现。如在此所使用的,术语“组件”、“系统”等同样指的是计算机相关实体,或者是硬件、硬件和软件的组合、软件或执行中的软件。例如,组件可以是,但不限于是,在处理器上运行的进程、处理器、对象、可执行码、执行的线程、程序和/或计算机。作为说明,运行在计算机上的应用程序和计算机本身都可以是计算机组件。一个或多个组件可以驻留在进程和/或执行的线程中,并且组件可以位于一个计算机内和/或分布在两个或更多的计算机之间。

由此,本发明的方法和装置或其特定方面或部分可采取包含在诸如软盘、CD-ROM、硬盘驱动器或任何其它机器可读存储介质等有形介质中的程序代码(即,指令)的形式,其中当程序代码被加载到诸如计算机等机器内并由其执行时,该机器成为用于实现本发明的装置。在程序代码在可编程计算机上执行的情况下,计算设备通常包括处理器、该处理器可读的存储介质(包括易失性和非易失性存储器和/或存储元件)、至少一个输入设备、以及至少一个输出设备。可例如通过使用数据处理API、可重用控件等来实现或利用本发明的同步服务和/或过程的一个或多个程序较佳地用高级过程语言或面向对象的编程语言来实现以与计算机系统通信。然而,如果需要,该程序可以用汇编语言或机器语言来实现。在任何情形中,语言可以是编译语言或解释语言,且与硬件实现相结合。

本发明的方法和装置也可以经由以通过某种传输介质传输的程序代码的形式体现的通信来实现,比如通过电线或电缆、通过光纤或经由任何其它传输形式,其中,当程序代码由诸如EPROM、门阵列、可编程逻辑器件(PLD)、客户计算机等机器接收、加载并执行时,该机器成为用于实现本发明的装置。当在通用处理器上实现时,程序代码与处理器相结合来提供一种用于调用本发明的功能的独特装置。另外,结合本发明使用的任何存储技术总是可以是硬件和软件的组合。

此外,所公开的主题可以使用产生软件、固件、硬件或其任意组合的标准编程和/或工程技术实现为用于控制基于计算机或处理器的设备以实现在此所详述的诸方面的系统、方法、装置或制品。此处所用的术语“制品”(或作为替换,“计算机程序产品”)旨在涵盖可从任何计算机可读设备、载体或介质访问的计算机程序。例如,计算机可读介质可包括但不限于,磁存储设备(例如,硬盘、软盘、磁带……)、光盘(例如,紧致盘(CD)、数字多功能盘(DVD)……)、智能卡、以及闪存设备(例如,卡、棒)。另外,已知可以采用载波来承载计算机可读电子数据,例如那些用于发送和接收电子邮件或用于访问如因特网或局域网(LAN)等网络的数据。

已经关于若干组件之间的交互描述了前述系统。应该理解,这样的系统和组件可以包括根据前述的各种置换和组合的那些组件或指定的子组件、指定的组件或子组件中的某一些、和/或另外的组件。子组件也可以被实现为通信耦合至其它组件而非被包括在父组件(分层)内的组件。另外,应注意到一个或多个组件可被组合成提供聚集功能的单个组件,或被分成若干单独的子组件,且诸如管理层等任何一个或多个中间层可被设置成通信耦合到这样的子组件以便提供集成功能。此处描述的任何组件也可以与在此未具体描述但本领域的技术人员公知的一个或多个其它组件交互。

考虑到以上描述的示例性系统,参考各附图的流程图将可以更好地理解根据所公开的主题实现的方法。尽管出于说明简单的目的,各方法被显示和描述为一系列框,但应该理解和领会,所要求保护的主题不受框次序的限制,因为一些框能够以不同的次序和/或与在此描绘和描述的其它框并发地发生。尽管经由流程图示出了非顺序或分支的流程,但可以理解,可实现达成相同或类似结果的各种其它分支、流程路径和框次序。而且,并非所有示出的框都是实现以下描述的方法所必需的。

此外,应该明白以上公开的系统以及以下方法的不同部分可以包括或包含人工智能或基于知识或规则的组件、子组件、进程、装置、方法或机制(例如,支持向量机、神经网络、专家系统、贝叶斯置信网络、模糊逻辑、数据融合引擎、分类器等)。此类组件和其他组件可以自动化地执行特定机制或进程,由此使得系统和方法的各部分变得更加自适应、高效及智能。

尽管结合各附图的优选实施例描述了本发明,但是可以理解,可以使用其它类似的实施例,或可以对所述实施例进行修改或添加来执行本发明的相同功能而不背离本发明。例如,尽管在诸如对等联网环境等联网环境的上下文中描述了本发明的示例性网络环境,但是本领域的技术人员将认识到,本发明不限于此,并且本申请中所描述的方法可应用于任何计算设备或环境,诸如游戏控制台、手持式计算机、便携式计算机等等,不论其是有线还是无线的,并且该方法可应用于经由通信网络连接并通过网络交互的任意数量的此类计算设备。此外,应当强调,构想了包括手持式设备操作系统和其它专用操作系统的各种计算机平台,尤其是在无线联网设备的数量持续增长时。

虽然各示例性实施例涉及在特定编程语言构造的上下文中利用本发明,但是本发明不限于此,而是可用任何语言实现以提供根据本发明的用于对于一组节点表示和交换知识的方法。而且,本发明可以在多个处理芯片或设备中实现或跨多个处理芯片或设备实现,且存储可以类似地跨多个设备来实现。因此,本发明不应限于任何单个实施例,而是应该根据所附权利要求书的广度和范围来解释。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号