CN101583939A - 用于松耦合设备的同步协议 - Google Patents
用于松耦合设备的同步协议 Download PDFInfo
- Publication number
- CN101583939A CN101583939A CNA2007800492023A CN200780049202A CN101583939A CN 101583939 A CN101583939 A CN 101583939A CN A2007800492023 A CNA2007800492023 A CN A2007800492023A CN 200780049202 A CN200780049202 A CN 200780049202A CN 101583939 A CN101583939 A CN 101583939A
- Authority
- CN
- China
- Prior art keywords
- client computer
- server
- synchronous
- data set
- computer
- 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.)
- Pending
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1095—Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
提供了一种供在松耦合客户机的上下文中使用的传输不可知同步协议。该同步协议启用无状态服务器,其使该服务器从维护曾经缩放的客户机的同步状态中解放。提供了一种供客户机获悉对于服务器所提供的各组数据的不同的同步服务的可发现***以使得客户机可选择或订阅感兴趣的同步组,并且该协议用客户机所订阅的未知的任何数据结构的任何模式来初始化该客户机。此外,该协议启用了一种可扩展同步锚模型,其在客户机和服务器之间传输锚类型而无需假设客户机数据机构允许各种各样的锚数据类型和功能。
Description
技术领域
本发明涉及用于在客户机和服务器数据存储之间同步数据的同步协议,其中客户机可无限期地中断与服务器的联系,例如,用于离线应用程序。
背景
为了将数据存储中的数据从服务器同步到若干客户机并反向同步,必须适当地设置同步协议以处理必定在各种设备之间发生的同步和复制。然而,当客户机被允许开始和中断与服务器的联系时,保证适当的同步和复制变得复杂。
迄今为止,已经实现了用于关系型数据库引擎和希望与关系型数据库中的数据同步的客户机的少量的客户机-服务器同步和复制协议,例如,结构化查询语言(SQL)合并和事务复制就是基于一个这样的协议。然而,这些客户机-服务器同步和复制协议由于不灵活性而具有多个缺点。
例如,用于这些关系型数据库引擎的现有同步/复制协议所共有的常见特性包括:(1)它们实现复杂的对象模型、(2)它们是紧耦合的以及(3)可缩放性是受限的。例如,这些协议引入了使得协议的实现变成一项复杂任务的新的复杂数据结构,从而使得问题难以被客户机/应用程序开发者受众理解。对于紧耦合,现有协议在服务器和客户机之间采取紧耦合,这并不适合松耦合的因特网客户机或企业内的面向服务的体系结构(SOA)模型。这些协议还具有有限的可缩放性,因为传统的紧耦合协议通常对服务器具有保存关于其所有客户机的元数据的要求,而管理这些元数据的开销降低了服务器可缩放性。
因此,需要解决以上所标识的服务器和松耦合客户机之间的数据同步和复制的现有技术中的每一个问题的同步协议。更具体而言,需要通过实现应用程序开发者已经熟悉的概念和数据类型来向开发者呈现简单的同步协议的熟悉的对象模型。此外,需要用于松耦合设备的同步协议并且需要性能不会由于维护客户机状态的高成本而降低的高度可缩放服务器。
因此,考虑到服务器和松耦合客户机之间的数据同步的现有技术不够完善,期望提供一种改进的同步协议及相应方法。松耦合设备的上下文中的现有同步技术中的这些和其他缺陷在描述了将在以下更详细地阐述的本发明的各示例性、非限制性实施例后将变得显而易见。
概述
本发明提供了一种供在松耦合客户机的上下文中使用的传输不可知同步协议及相应方法。该同步协议启用一种无状态服务器,其使该服务器从维护其客户机的同步状态中解放并允许对许多客户机的可缩放性。提供了一种供客户机获悉对于服务器所提供的各组数据的不同的同步服务的可发现***以使得客户机可选择或订阅感兴趣的同步组,并且该协议用客户机所订阅的未知的任何数据结构的任何模式来初始化该客户机。此外,该协议启用了一种可扩展同步锚模型,其在客户机和服务器之间传输锚类型而无需假设客户机数据机构,从而允许各种各样的锚数据类型和功能。
此处提供了简化概述以帮助启用对以下更详细的描述和附图中的示例性、非限制性实施例的各方面的基本或大体的理解。然而,本概述并不旨在作为详尽的或穷尽的概观。相反,本概述的唯一目的是以简化的形式来介绍与本发明的某些示例性非限制性实施例相关的一些概念,作为以下本发明的各实施例的更为详细的描述的序言。
附图简述
参考附图进一步描述本发明的同步协议,在附图中:
图1是根据本发明的协议的用于与离线应用程序同步的示例性、非限制性体系结构的框图;
图2是示出根据本发明的用于同步同步组的本发明的协议的示例性、非限制性实现的流程图;
图3是示出用于从服务器及相应模式中发现同步组的本发明的协议的示例性、非限制性实现的流程图;
图4是示出本发明的可扩展同步锚模型的各示例性方面的框图;
图5A和5B示出了在不预先知道客户机或服务器侧存储结构的情况下在客户机和服务器之间来回传递数据结构的示例性、非限制性数据集实现;
图6示出了本发明的同步到例如作为毂和辐同步模型的一部分的许多客户机的可缩放性。
图7是实现从本发明的服务器的观点来看的用于同步的示例性、非限制性过程的流程图;
图8是表示其中可实现本发明的示例性、非限制性网络化环境的框图;以及
图9是表示其中可实现本发明的示例性、非限制性计算***或操作环境的框图。
详细描述
概观
如背景中所讨论的,现有同步协议实现过度复杂的对象模型,过于紧耦合以至于无法用于离线应用程序并且其可缩放性由于服务器开销而受到限制。因此,考虑到现有技术中的这些缺陷,本发明提供了供在松耦合客户机的上下文中使用的经改进的同步协议及相应方法。
本发明提供了使用开发者熟悉的概念和数据结构的同步协议。本发明的同步协议也是传输不可知协议,其启用无状态服务器,即,服务器从维护其客户机的同步状态的需求中解放。作为使得服务器从这些管理职责中解放的结果,本发明高度可缩放至大量客户机,因为该协议不需要服务器保存其客户机的状态。因此,根据本发明,在客户机上维护客户机的同步状态元数据。
此外,本发明的同步协议提供了可发现***,以使得客户机可获悉服务器所提供的对于各组数据的不同的同步服务以使得客户机可选择或订阅感兴趣的同步组。
用于离线应用程序的同步协议
如上所述,本发明的同步协议提供了相对于现有技术的各种优点。例如,本发明的同步协议启用无状态服务器模型,其中该协议不假设服务器预先知道客户机,从而允许可缩放至大量客户机的服务器实现。
在各非限制性实施例中,本发明的同步协议启用了发现和初始化模型以使得当客户机遇到服务器时该客户机能够发现从该服务器中展示的同步组。一旦客户机订阅了从服务器中展示的一个或多个同步组,如果该客户机还不具有同步组中表的适当模式,则该协议就用该客户机所使用的尚不可从该客户机访问的任何模式来初始化该客户机。
在本发明的同步协议的其他示例性、非限制性实施例中,提供了可扩展同步锚模型,其中该协议在客户机和服务器之间传输锚类型,但不假设客户机上的任何特定结构,从而允许具有将要利用的不同层次特征的大量锚数据类型。此外,这允许开发者针对现有服务器构建同步应用程序而不必改变服务器上的锚格式,从而进一步最小化了服务器影响。
在本发明的同步协议的其他非限制性实施例中,提供了客户机用于存储同步元数据的元数据存储模型,从而使得服务器从维护关于客户机的任何同步元数据中解放。
如上所述,本发明的同步协议可用于支持离线应用程序。包括离线应用程序在内的应用程序框架的概览在图1的示例性、非限制性框图中示出。
图1描绘了N层体系结构场景。在客户机侧,同步协议由同步代理组件130来组织(orchestrate)。然而,注意,本发明的同步协议是传输不可知的。因此,图1描绘了使用web服务150的仅一个可能的传输实现。位于客户机侧的同步代理程序130是核心同步引擎并实现用于执行以下步骤的逻辑:(A)从客户机和服务器数据库中收集元数据,(B)将改变上传到服务器数据库以及将改变从服务器数据库下载到客户机提供者,或者(C)将错误、进展和冲突事件传播至客户机应用程序。
同步代理程序130通过服务器同步提供者接口使用同步适配器170来与服务器数据库190交互。此外,每一个同步适配器170都定义对于在客户机和服务器之间同步的每一个表的表和列映射,并对两个或多个表进行逻辑分组。
同步代理程序130接受对代理程序130分别隐藏客户机数据库110和服务器数据库190细节的客户机同步提供者120和服务器同步提供者160。
同步代理程序130接受同步组180的集合并运行本发明所提供的协议以使得这些组180保持同步。同步适配器170指示同步代理程序130如何与服务器数据库190交互。在这一点上,同步代理程序130不直接与同步适配器170交互,而是同步代理程序130与服务器提供者160交互,服务器提供者160进而使用同步适配器170来连接到数据库190。该交互通过根据本发明的各非限制性实施例的以下数据库命令对象中的一个或多个来定义:Insert(***)、Update(更新)、Delete(删除)、Select Incremental Inserts(选择增量***)、SelectIncremental Updates(选择增量更新)、Select Incremental Deletes(选择增量删除)、Select Update Conflict(选择更新冲突)和/或Select Delete Conflict(选择删除冲突)命令。
根据本发明的***命令供服务器同步提供者用来将对客户机数据库的***传播至服务器数据库。
根据本发明的更新命令供服务器同步提供者用来将客户机上的更新传播至服务器数据库。
根据本发明的删除命令供服务器同步提供者用来将客户机上的删除传播至服务器数据库。
根据本发明的选择增量***命令供服务器同步提供者用来枚举自从客户机上一次同步之后发生在服务器上的***。
根据本发明的选择增量更新命令供服务器同步提供者用来枚举自从客户机上一次同步之后发生在服务器上的更新。
根据本发明的选择增量删除命令供服务器同步提供者用来枚举自从客户机上一次同步之后发生在服务器上的删除。
根据本发明的选择更新冲突命令供服务器同步提供者用来获取导致***、更新或删除命令失败的现有行。该命令执行对数据表中的冲突行的查找。
根据本发明的选择删除冲突命令供服务器同步提供者用来获取导致***、更新或删除命令失败的现有行。在一个实施例中,该命令执行对逻辑删除(tombstone)表中的冲突行的查找以找出逻辑删除表中导致更新命令失败的行,但不在***或删除命令失败时使用。
在一个非限制性实施例中,本发明的同步适配器170通过使用或扩展数据适配器构造来类似于ActiveX数据对象(ADO.NET)中的数据适配器地实现,但为了避免疑惑,本发明并不限于类似数据适配器的实现。
对于根据本发明的服务器同步提供者160,在一个非限制性实施例中,启用默认和自定义提供者160两者。提供默认提供者160是为了解决常见应用程序情况(例如,瘦客户端情况、富客户端情况、SQL移动、SQL表达式等)。应用程序开发者和第三方还可针对较不常见的情况(例如,Access、FoxPro)经由简单的框架和自定义提供者160的帮助类来实现这一自定义提供者160。此处所使用的实施例和示例中的某一些涉及数据库数据存储,但为了避免疑惑,客户机或服务器数据存储可以是任何数据存储。
在本发明的各非限制性实施例中,同步提供者160的功能包括,但不限于:存储关于组180的同步信息的能力、枚举自从上一次同步以来在数据库上发生的增量改变的能力、对数据库施加增量改变的能力、检测冲突的更新并可任选地程序性地或交互式地解决它们的能力、以及激发(fire)进展和数据改变事件的能力。
对于同步代理140,需要直接连接到服务器数据库190的解决方案目前已经很少见了,因为基于SOA的解决方案正在日益普及。对于SOA模型,服务器195展示其功能作为按需连接到服务器195的web服务150。客户机通过因特网或通过企业内的本地内联网来与web服务器150交互。同步代理组件140因此是允许构建断开的SOA解决方案的简单接口,但如先前所强调的,可使用用于根据本发明的同步协议的任何传输机制。
因此,图1描述了供在膝上型计算机100和工作站105上运行的应用程序各自与为如服务器195所维护的服务器数据库190中的数据定义的一个或多个同步组180同步的示例性、非限制性同步环境。
根据本发明的同步协议的示例性、非限制性实现在图2的流程图中示出,该流程图表示由客户机C发起的、用于根据按照该同步协议的各服务器处理步骤(在右侧示出)来与服务器S同步的各客户机处理步骤(在左侧示出)。
如图2的示例性、非限制性流程图所示,响应于由客户机C在200处作出的对服务器S的“Synchronize()”命令的调用,客户机侧同步代理在传递给Synchronize()调用时收集关于所需同步组的元数据信息,即,在210,取得本地同步锚。
同步锚是诸如字符串等将同步事件表示为同步时间中的位置的信息。例如,可定义多个同步锚,诸如上一个和下一个等,这两者分别描述从发送设备的观点来看的当数据库被同步时的上一个事件和当前同步事件。接收设备然后在某一时刻存储每一个下一个同步锚以便结合将来同步使用。对上一个和下一个同步锚的比较允许确定应更新什么同步组。
还应注意,在任何时刻,或作为初始Synchronize()调用的一部分,如果同步代理检测到可从服务器S获得的新同步组,则开始本发明的同步协议的模式初始化部分(未在图2中示出)以便于理解用于表示该新同步组的数据结构的规则。
对于Synchronize()调用中所包括的每一个同步组,在220,同步代理请求改变从客户机同步提供者进入到数据集对象中并在225处将组改变上传到服务器。
在230,服务器同步提供者对组中的每一个表施加所接收到的改变(例如,以相同的表次序***到组中,以相反的次序删除)。
在235,服务器同步提供者收集在230处施加改变时所遇到的冲突,并生成对改变已被施加的确认,并将冲突和确认返回给客户机以供后处理。
在240,同步代理接收对在230处在服务器处施加改变的确认(ACK)并基于针对客户机定义的任何同步和冲突策略来执行冲突解决或错误报告。
在250,同步代理在下一上传阶段内将本地锚存储或持久存储在本地数据库,其中客户机收集关于所需同步组的下一组元数据信息以便与持久存储的本地锚进行比较。
从客户机观点来看,下载阶段265在260处开始,在那里对服务器作出调用以枚举对相同的同步组的改变并阻塞直到该调用返回。
在270,服务器同步提供者获取同步组的新的锚并且然后枚举对于组中的每一个表的所有改变,并且在一示例性、非限制性实施例中,将改变打包在一个或多个数据集对象中。在一个实施例中,每一个请求返回一个数据集,其包括同步组中所有表的数据。在275,然后将改变从服务器发送到客户机。
在280,客户机同步代理从服务器接收改变和新的锚,解析这些改变并施加于每一行。
在290,同步代理进而处理在基于所应用的或默认冲突策略来施加于行时所遇到的冲突。
在295,同步代理然后在结束同步会话之前将从服务器接收到的锚存储在本地数据库中。
上述同步协议提供了适于并非一直与服务器联系、但希望与服务器同步的离线应用程序的益处。例如,该协议启用其中协议不假设服务器预先知道客户机的同步状态的无状态服务器模型,这允许可缩放服务器实现,因为客户机元数据并非在服务器上构建。在这一点上,该协议启用了其中客户机存储同步元数据的客户机元数据存储模型,从而使服务器从对客户机同步元数据的存储、维护和其他处理开销中解放,尤其在客户机设备经由协议增长(proliferate)来同步时。
如上所述,本发明的协议还包括用于发现对于其客户机尚未具有适用模式的任何所需同步组的模式的发现和初始化模型。该协议使得客户机能够发现从特定服务器中展示的同步组。该协议还在客户机上尚不存在该客户机出于同步目的而订阅的表的一个或多个模式的情况下用这些模式来初始化该客户机。
图3示出了本发明的协议所启用的发现和初始化过程的一示例性、非限制性实现。在300,客户机C请求服务器S上可用的同步组。基于客户机C和对同步组的请求,服务器S确定什么同步组对于其客户机C具有同步许可是可用的,例如,但不限于使该确定基于涉及该客户机请求的订阅权限、安全级别等。在315,将用于客户机同步的可用同步组发送到客户机C。在320,客户机C可显式或隐式地选择那些可用同步组的子集,然而客户机C可能无法拥有或以其他方式访问涉及所选同步组中的全部的模式。由此,在330,客户机C然后例如通过标识对于其客户机C不具有模式的任一个或多个未知同步组来请求这些同步组的模式。在340,服务器S接收请求,并在345取回或向客户机C提供服务器S可访问的任一个或多个同步组的模式。然后,客户机C准备根据图2的步骤200来同步。
在其他非限制性实施例中,本发明通过提供在客户机和服务器之间传输锚类型来启用可扩展同步锚模型,但不假设客户机上的任何预定义结构的协议并由此灵活地允许具有不同层次特征的各种各样的锚数据类型。图4示出各种锚类型A_T1、A_T2、...、A_TN可根据本发明的协议来在服务器400和客户机410之间来回传递。另外,锚的结构由服务器来定义并且有利的是,客户机无需为了与服务器同步而去理解该格式。
图5A示出了其中数据集数据结构500(即,ADO.NET V2数据集对象)在客户机侧同步代理程序130和服务器侧同步提供者160之间传递的本发明的一示例性实施例。在客户机侧提供数据集接口510以便对数据集数据结构500进行来回转换,并且在服务器侧提供数据集接口512以便对数据集数据结构512进行来回转换。或者,如图5B所示,分别在客户机侧和服务器侧上的数据集接口520和522可用于分别结合客户机数据库110和服务器数据库190来对数据集数据结构进行来回转换。为了避免疑惑,上述数据集实现是非限制性的并由此,可利用其他数据结构来表示根据本发明的、客户机和服务器之间往返的同步数据以及适当的接口。无论选择什么实现,本发明的协议由此都能够以传输无关的方式操作而无需知道客户机或服务器侧的数据存储的确切格式。
有利的是,如图6所示,因为元数据被存储在客户机上,所以本发明的同步协议可用于根据毂和辐模型来同步数据,在该模型中,客户机610a、610b、610c等可开始与服务器600联系并各自与同步组605的数据同步。基于诸如时间戳等正在同步的数据的时间特性并根据冲突解决策略,只要客户机开始与服务器联系,就可在服务器600和客户机610a、610b、610c处维护一致的同步组605的数据集。
图7是实现从本发明的服务器的观点来看的用于同步的示例性、非限制性过程的流程图。在700,从客户机接收包括同步元数据的对一个或多个同步组的请求。在710,从客户机接收对一个或多个同步组的任何改变并更新这些同步组。在720,确定由改变所呈现的任何冲突。在730,将对处理请求和冲突的确认发送到客户机。在740,枚举对客户机的客户机侧改变,从而使得该客户机能够更新该一个或多个同步组。在750,根据允许具有不同特征的多个锚数据类型的可扩展锚模型来将同步锚从服务器发送到客户机。
示例性网络化和分布式环境
本领域普通技术人员可以理解,本发明可以结合任何计算机或可作为计算机网络的一部分来部署的其它客户机或服务器设备来实现,或可在连接至任何种类的数据存储的分布式计算环境中实现。在这一点上,本发明涉及任何计算机***或环境,其具有任意数目的存储器或存储单元,以及发生在任意数目的存储单元或卷上的任意数目的应用程序和进程,它们可结合根据本发明的同步协议来使用。本发明可应用于具有部署在具有远程或本地存储的网络环境或分布式计算环境中的服务器计算机和客户计算机的环境。本发明也可应用于具有用于结合远程或本地服务和进程生成、接收和发送信息的编程语言功能、解释和执行能力的独立计算设备。
分布式计算通过计算设备和***之间的交换提供了计算机资源和服务的共享。这些资源和服务包括信息的交换、对于诸如文件等对象的高速缓存存储和盘存储。分布式计算利用网络连接,从而允许客户机利用它们的集体力量来使整个企业受益。在这一点上,各种设备可具有可包含本发明的同步协议的应用程序、对象或资源。
图8提供了示例性的网络化或分布式计算环境的示意图。分布式计算环境包括计算对象810a、810b等,以及计算对象或设备820a、820b、820c、820d、820e等。这些对象可包括程序、方法、数据存储、可编程逻辑等等。这些对象可包括诸如PDA、音频/视频设备、MP3播放器、个人计算机等的相同或不同设备的各部分。每一对象可通过通信网络840与另一对象通信。该网络本身可以包括向图8的***提供服务的其它计算对象和计算设备,且其本身可以表示多个互连的网络。根据本发明的一方面,每一对象810a、810b等,或820a、820b、820c、820d、820e等可包含可利用适用于根据本发明的用于同步数据组的***和方法的API、或其它对象、软件、固件和/或硬件的应用程序。
还可以理解,诸如820c等对象可以主存在另一计算设备810a、810b等或820a、820b、820c、820d、820e等上。因此,尽管所示的物理环境可以将所连接的设备示为计算机,但是这样的图示仅是示例性的,并且该物理环境可以被替换地描述或描绘成含有诸如PDA、电视机、MP3播放器等的各种数字设备,它们中的任一个可采用诸如接口、COM对象等各种有线和无线服务、软件对象。
存在支持分布式计算环境的各种***、组件和网络配置。例如,计算***可以通过有线或无线***、本地网络或广泛分布的网络连接在一起。当前,许多网络被耦合至因特网,后者为广泛分布的计算提供了基础结构并包含许多不同的网络。任何基础架构都可用于便于本发明的同步协议的示例性通信。
在家庭网络环境中,有至少四个全异的网络传输介质,其每一个可支持一种唯一的协议,这些介质诸如电力线、数据(无线和有线)、语音(如,电话)和娱乐媒体。诸如电灯开关和电器设备等大多数家庭控制设备可使用电力线来连接。数据服务可通过宽带(如,DSL或电缆调制解调器)进入家庭,并可在家庭内使用无线(如,HomeRF或802.11B)或有线(如,家庭PNA、Cat 5、以太网、甚至是电力线)连接来访问。语音话务可通过有线(如,Cat 3)或无线(如,蜂窝电话)进入家庭,并可在家庭中使用Cat 3连线来分布。娱乐媒体或其它图形数据可通过卫星或电缆进入家庭,并通常在家庭中使用同轴电缆来分布。IEEE 1394和DVI也是用于介质设备群集的数字互联。可作为协议标准浮现或已经浮现的所有这些网络环境和其它环境可被互联来形成可通过诸如因特网等广域网连接到外部世界的网络,诸如内联网。简而言之,对数据的存储和传输存在各种不同的源,因此本发明的任何计算设备可按照任何现有方式共享和传输数据,且在本文实施例中描述的方式不旨在是限定性的。
因特网通常指使用传输控制协议/网际协议(TCP/IP)协议套件的网络和网关的集合,这些协议在计算机联网领域中是公知的。因特网可被描述为由执行允许用户通过网络交互和共享信息的联网协议的计算机互连的地理上分布开的远程计算机网络的***。由于这类广泛分布信息的共享,诸如因特网等远程网络至今发展成一种开放式***,开发者可用该开放式***设计用于执行专用操作或服务的软件应用程序而基本上没有限制。
由此,网络基础结构启用了诸如客户机/服务器、对等或混合体系结构等大量网络拓朴结构。“客户机”是使用与它无关的另一类或组的服务的一个类或组中的成员。由此,在计算时,客户机是进程,即,粗略地而言是一组请求由另一程序提供的服务的指令或任务。客户机进程利用所请求的服务,而不必“知道”有关其它程序或服务本身的任何工作细节。在客户机/服务器体系结构中,尤其在网络化***中,客户机通常是访问由例如服务器等另一计算机提供的共享的网络资源的计算机。在图8的图示中,作为一个示例,计算机820a、820b、820c、820d、820e等可以被认为是客户机,而计算机810a、810b等可以被认为是服务器,其中服务器810a、810b等维护随后被同步或复制到客户计算机820a、820b、820c、820d、820e等的数据,然而取决于环境任何计算机都可被认为是客户机、服务器或两者。这些计算设备中的任一个都可处理数据或请求可包含根据本发明的同步协议的服务或任务。
服务器通常是可通过诸如因特网或无线网络基础架构等远程网络或本地网络访问的远程计算机***。客户机进程可以在第一计算机***中活动,而服务器进程可以在第二计算机***中活动,它们通过通信介质彼此通信,从而提供分布式功能并允许多个客户机利用服务器的信息收集能力。按照本发明的用于同步数据组的技术的任何软件对象都可跨多个计算设备或对象分布。
客户机和服务器利用由协议层提供的功能来彼此通信。例如,超文本传输协议(HTTP)是结合万维网(WWW),即“Web”使用的常见协议。通常,诸如网际协议(IP)地址等计算机网络地址或诸如统一资源***(URL)等其它引用可以用于彼此标识服务器或客户计算机。网络地址可以被称为URL地址。可以通过通信介质来提供通信,例如客户机和服务器可以通过TCP/IP连接来彼此耦合以进行大容量通信。
由此,图8示出了其中可采用本发明的、服务器通过网络/总线与客户计算机通信的示例性联网或分布式环境。更详细而言,根据本发明,多个服务器810a、810b等经由通信网络/总线840互连,通信网络/总线840可以是LAN、WAN、内联网、GSM网络、因特网等,它具有多个客户机或远程计算设备820a、820b、820c、820d、820e等,如便携式计算机、手持式计算机、瘦客户机、联网设备或其它设备,如VCR、TV、烤箱、灯、加热器等等。因此,构想了本发明可应用于关于其期望同步数据的任何计算设备。
例如,在其中通信网络/总线840是因特网的网络环境中,服务器810a、810b等可以是客户机820a、820b、820c、820d、820e等通过诸如HTTP等多种已知协议中的任一种与其通信的web服务器。服务器810a、810b等也可担当客户机820a、820b、820c、820d、820e等,这可以是分布式计算环境的特性。
如上所述,通信可以是有线或无线的,或者是两者的适当组合。客户机设备820a、820b、820c、820d、820e等可以通过或不通过通信网络/总线840通信,并可具有与其相关联的独立通信。例如,在TV或VCR的情况下,可能存在或不存在其控制的网络化方面。每一客户计算机820a、820b、820c、820d、820e等以及服务器计算机810a、810b等可以具备各种应用程序模块或对象135a、135b、135c等,并具有对各种类型的存储元件或对象的连接或访问,在这些存储元件或对象上可储存文件或数据流,或者可向其下载、发送或迁移文件或数据流的各部分。计算机810a、810b、820a、820b、820c、820d、820e等中的任何一个或多个可负责维护并更新数据库830或其它存储元件,诸如用于储存根据本发明处理或保存的数据的数据库或存储器830。由此,本发明可以用于具有可访问计算机网络/总线840并与其交互的客户计算机820a、820b、820c、820d、820e等,以及可与客户机计算机820a、820b、820c、820d、820e等交互的服务器计算机810a、810b等,以及其它类似的设备和数据库830的计算机网络环境中。
示例性计算设备
如上所述,本发明适用于其中期望同步数据的任何设备。因此,应当理解,构想了供结合本发明适用的所有种类的手持式、便携式和其它计算设备和计算对象,即,在设备可同步数据或以其他方式接收、处理或存储数据的任何地方。因此,在下面的图9中描述的以下通用远程计算机仅是一个示例,且本发明可用具有网络/总线互操作性和交互的任何客户机来实现。由此,本发明可在其中蕴含了极少或最小客户机资源的联网的主存服务的环境,例如其中客户机设备仅用作到网络/总线的接口-如置于电器中的对象-的联网环境中实现。
尽管并不是必需的,但本发明可以部分地经由操作***来实现,以供设备或对象的服务开发者使用,和/或被包括在结合本发明的组件操作的应用软件中。软件可以在由诸如客户机工作站、服务器或其它设备等一个或多个计算机执行的诸如程序模块等计算机可执行指令的通用上下文中描述。本领域的技术人员可以理解,本发明可以用其它计算机***配置和协议来实施。
图9由此示出了其中可实现本发明的合适的计算***环境900a的一个示例,但如以上清楚地描述的,计算***环境900a仅为用于介质设备的合适的计算环境的一个示例,并非旨在对本发明的使用范围或功能提出任何局限。也不应将计算***900a解释为对示例性操作环境900a中示出的任一组件或其组合具有任何依赖性或需求。
参见图9,用于实现本发明的示例性远程设备包括计算机910a形式的通用计算设备。计算机910a的组件可以包括,但不限于,处理单元920a、***存储器930a、和将包括***存储器在内的各种***组件耦合至处理单元920a的***总线921a。***总线921a可以是数种类型的总线结构中的任一种,包括存储器总线或存储控制器、***总线、以及使用各种总线体系结构中的任一种的局部总线。
计算机910a通常包括各种计算机可读介质。计算机可读介质可以是可由计算机910a访问的任何可用介质。作为示例而非局限,计算机可读介质可以包括计算机存储介质和通信介质。计算机存储介质包括以用于存储诸如计算机可读指令、数据结构、程序模块或其它数据等信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括但不限于,RAM、ROM、EEPROM、闪存或其它存储器技术、CDROM、数字多功能盘(DVD)或其它光盘存储、磁盒、磁带、磁盘存储或其它磁存储设备、或可以用来储存所需信息并可由计算机910a访问的任何其它介质。通信介质通常以诸如载波或其它传输机制等已调制数据信号来体现计算机可读指令、数据结构、程序模块或其它数据,并包括任意信息传送介质。
***存储器930a可以包括诸如只读存储器(ROM)和/或随机存取存储器(RAM)等易失性和/或非易失性存储器形式的计算机存储介质。基本输入/输出***(BIOS)可被存储在存储器930a中,它包含帮助在诸如启动期间在计算机910a内的元件之间传递信息的基本例程。存储器930a通常还包含处理单元920a可以立即访问和/或目前正在操作的数据和/或程序模块。作为示例而非局限,存储器930a还可以包括操作***、应用程序、其它程序模块、和程序数据。
计算机910a也可以包括其它可移动/不可移动、易失性/非易失性计算机存储介质。例如,计算机910a可以包括对不可移动、非易失性磁介质进行读写的硬盘驱动器,对可移动、非易失性磁盘进行读写的磁盘驱动器,和/或对诸如CD-ROM或其它光学介质等可移动、非易失性光盘进行读写的光盘驱动器。可以在示例性操作环境中使用的其它可移动/不可移动、易失性/非易失性计算机存储介质包括但不限于,磁带盒、闪存卡、数字多功能盘、数字录像带、固态RAM、固态ROM等等。硬盘驱动器通常由诸如接口等不可移动存储器接口连接至***总线921a,而磁盘驱动器或光盘驱动器通常由诸如接口等可移动存储器接口连接至***总线921a。
用户可以通过输入设备,如键盘和定点设备(通常指鼠标、跟踪球或触摸板)向计算机910a输入命令和信息。其它输入设备可以包括话筒、操纵杆、游戏手柄、圆盘式卫星天线、扫描仪等等。这些和其它输入设备通常由耦合至***总线921a的用户输入940a和相关联的接口连接到处理单元920a,但是也可由诸如并行端口、游戏端口或通用串行总线(USB)之类的其它接口和总线结构连接。图形子***也可以被连接到***总线921a。监视器或其它类型的显示设备也通过接口,如输出接口950a连接至***总线921a,而输出接口950a又与视频存储器通信。除监视器之外,计算机还可以包括其它***输出设备,如扬声器和打印机,它们可以通过输出接口950a连接。
计算机910a可使用至诸如远程计算机970a等的一个或多个远程计算机的逻辑连接在网络化或分布式环境中操作,远程计算机970a又可以具有与设备910a不同的介质能力。远程计算机970a可以是个人计算机、服务器、路由器、网络PC、对等设备或其它常见的网络节点、或任何其它远程介质消费或传输设备,并且可以包括上面关于计算机910a所描述的任何或全部元件。图9所示的逻辑连接包括诸如局域网(LAN)或广域网(WAN)等的网络971a,但也可以包括其它网络/总线。这样的联网环境在家庭、办公室、企业范围计算机网络、内联网和因特网中是常见的。
当在LAN联网环境中使用时,计算机910a通过网络接口或适配器连接至LAN 971a。当在WAN联网环境中使用时,计算机910a通常包括通信组件,诸如调制解调器或用于通过诸如因特网等的WAN建立通信的其它装置。诸如调制解调器等通信组件可以是内置或外置的,它可以通过输入940a的用户输入接口或其它适当的机制连接至***总线921a。在网络化环境中,相对于计算机910a所描述的程序模块或其部分可被储存在远程存储器存储设备中。可以理解,所示和所述的网络连接是示例性的,且可以使用在计算机之间建立通信链路的其它手段。
示例性分布式计算体系结构
鉴于个人计算和因特网的交汇,已经开发且正在开发各种分布式计算框架。个人和企业用户同样地配备用于应用程序和计算设备的无缝互操作和启用web的接口,使得计算活动越来越面向web浏览器和网络。
例如,的托管代码平台,即.NET包括服务器、诸如基于web的数据存储等构建块服务、以及可下载设备软件。一般而言,.NET平台提供(1)令整个范围的计算设备共同工作并在所有设备上自动更新并同步用户信息的能力,(2)提高的网页交互能力,通过大量使用XML而不是HTML来实现,(3)以从用于管理各种诸如电子邮件的应用程序或诸如Office.NET的软件的中央起点到用户的定制产品和服务的访问和传送为特点的在线服务,(4)集中式数据存储,将增加对信息访问以及用户和设备间的信息同步的效率和简易性,(5)集成各种通信介质,如电子邮件、传真和电话的能力,(6)对开发人员来说,创建可重用模块的能力,由此提高生产力并降低编程差错的数量,以及(7)许多其它跨平台和语言综合特性。
尽管此处的某些示例性实施例是结合诸如应用程序编程接口(API)等驻留在计算设备上的软件来描述的,但本发明的一个或多个部分也可以通过操作***、“中间人”对象、控制对象、硬件、固件、中间语言指令或对象等来实现,使得根据本发明的用于通信的方法可被包括在由诸如.NET代码等托管代码启用的所有语言和服务中,以及在其它分布式计算框架中,在其中得到支持或经由它们来访问。
有多种实现本发明的方法,例如适当的API、工具箱、驱动程序代码、操作***、控件、独立或可下载软件对象等,它们使得应用程序和服务能够使用本发明的同步数据的***和方法。本发明从API(或其它软件对象)的观点以及从实现本发明的协议的软件或硬件对象的观点构想了对本发明的用途。由此,此处描述的本发明的各种实现都可以具有完全采用硬件、部分采用硬件且部分采用软件、以及采用软件的方面。
在本文中使用的词语“示例性”意味着用作示例、实例或说明。为避免疑问,本文公开的主体不受限于这样的示例。此外,本文描述为“示例性”的任何方面或设计不必解释成优于其它方面或设计或比其它方面或设计有利,它也不旨在排除本领域的普通技术人员所知的等效示例性结构和技术。而且,就术语“包括”、“具有”、“包含”和其它类似的词语在详细描述或权利要求书中使用而言,为避免疑问,这样的术语旨在以类似于术语“包括”作为开放的过渡词的方式解释而不排除任何附加或其它元素。
如上所述,尽管结合各种计算设备和网络体系结构描述了本发明的示例性实施例,但底层概念可被应用于其中期望同步数据的任何计算设备或***。尽管此处选择了示例性编程语言、名称和示例来表示各种选择,但这些语言、名称和示例并不旨在是限制性的。本领域的普通技术人员将认识到,有多种方法来提供实现本发明的各实施例所实现的相同、相似或等效的功能的目标代码和命名法。
如上所述,此处所述的各种技术可结合硬件或软件,或在适当时以两者的组合来实现。如在此所使用地,术语“组件”、“***”等同样指的是计算机相关实体,或者是硬件、硬件和软件的组合、软件或执行中的软件。例如,组件可以是,但不限于是,在处理器上运行的进程、处理器、对象、可执行码、执行的线程、程序和/或计算机。作为说明,运行在计算机上的应用程序和计算机本身都可以是计算机组件。一个或多个组件可以驻留在进程和/或执行的线程中,并且组件可以位于一个计算机内和/或分布在两个或更多的计算机之间。
由此,本发明的方法和装置或其特定方面或部分可采取包含在诸如软盘、CD-ROM、硬盘驱动器或任何其它机器可读存储介质等有形介质中的程序代码(即,指令)的形式,其中当程序代码被加载到诸如计算机等机器内并由其执行时,该机器成为用于实现本发明的装置。在程序代码在可编程计算机上执行的情况下,计算设备通常包括处理器、该处理器可读的存储介质(包括易失性和非易失性的存储器和/或存储元件)、至少一个输入设备、以及至少一个输出设备。可例如通过使用数据处理API、可重用控件等来实现或利用本发明的协议的一个或多个程序较佳地用高级过程语言或面向对象的编程语言来实现以便与计算机***进行通信。然而,如果需要,程序可以用汇编语言或机器语言来实现。在任何情形中,语言可以是编译语言或解释语言,且与硬件实现相结合。
本发明的方法和装置也可以经由以通过某种传输介质传输的程序代码的形式体现的通信来实现,比如通过电线或电缆、通过光纤或经由任何其它传输形式,其中,当程序代码由诸如EPROM、门阵列、可编程逻辑器件(PLD)、客户计算机等机器接收、加载并执行时,该机器成为用于实现本发明的装置。当在通用处理器上实现时,程序代码与处理器相结合来提供一种用于调用本发明的功能的独特装置。另外,结合本发明使用的任何存储技术总是可以是硬件和软件的组合。
此外,所公开的主题可以使用产生软件、固件、硬件或其任意组合的标准编程和/或工程技术实现为用于控制基于计算机或处理器的设备以实现在此所详述的诸方面的***、方法、装置或制品。此处所用的术语“制品”(或作为替换,“计算机程序产品”)旨在涵盖可从任何计算机可读设备、载体或介质访问的计算机程序。例如,计算机可读介质可包括但不限于,磁存储设备(例如,硬盘、软盘、磁带......)、光盘(例如,紧致盘(CD)、数字多功能盘(DVD)......)、智能卡、以及闪存设备(例如,卡、棒)。另外,已知可以采用载波来承载计算机可读电子数据,例如那些用于发送和接收电子邮件或用于访问如因特网或局域网(LAN)等网络的数据。
已经关于若干组件之间的交互描述了前述***。应该理解,这样的***和组件可以包括那些组件或子组件,所指定组件或子组件中的一些和/或另外的组件,并根据前述的各种排列和组合。子组件也可以被实现为通信耦合至其它组件而非被包括在父组件(分层)内的组件。另外,应注意到一个或多个组合可被组合成提供聚集功能的单个组件,或被分成若干单独的子组件,且诸如管理层的任何一个或多个中间层可被设置成通信耦合到这样的子组件以便提供集成功能。此处描述的任何组件也可以与在此未具体描述但本领域的技术人员公知的一个或多个其他组件交互。
考虑到以上描述的示例性***,参考图2、3和7的流程图将可以更好地理解根据所公开的主题来实现的方法。尽管出于说明简单的目的,各方法被显示和描述为一系列框,但应该理解和领会,所要求保护的主题不受框次序的限制,因为一些框能够以不同的次序和/或与在此描绘和描述的其它框同时发生。尽管经由流程图示出了非顺序或分支的流程,但可以理解,可实现达成相同或类似结果的各种其它分支、流程路径和框次序。而且,并非所有示出的框都是实现以下描述的方法所必需的。
此外,应该明白以上公开的***以及以下方法的不同部分可以包括或包含人工智能或基于知识或规则的组件、子组件、进程、装置、方法或机制(例如,支持向量机、神经网络、专家***、贝叶斯置信网络、模糊逻辑、数据融合引擎、分类器等)。这样的组件和其它组件可以自动化执行某些机制或进程,由此使得***和方法的各部分更为自适应、高效及智能。
尽管已结合各个附图的优选实施方式对本发明进行了描述,但是可以理解,可以使用其它类似的实施方式或可以对所描述的实施方式进行修改或添加以实现本发明的相同功能而不背离本发明。例如,尽管在诸如对等联网环境等联网环境的上下文中描述了本发明的示例性网络环境,但是本领域的技术人员将认识到,本发明不限于此,并且本申请中所描述的方法可应用于任何计算设备或环境,诸如游戏控制台、手持式计算机、便携式计算机等等,不论其是有线还是无线的,并且该方法可应用于经由通信网络连接并通过网络交互的任意数量的此类计算设备。此外,应当强调,构想了包括手持式设备操作***和其它专用操作***的各种计算机平台,尤其是在无线联网设备的数量持续增长时。
尽管各示例性实施例涉及在特定编程语言构造的上下文中利用本发明,但是本发明不限于此,而是可用任何语言实现来提供本发明的同步通信协议和方法。而且,本发明可以在多个处理芯片或设备中实现或跨多个处理芯片或设备实现,且存储可以类似地跨多个设备来实现。因此,本发明不应限于任何单个实施例,而是应该根据所附权利要求书的广度和范围来解释。
Claims (20)
1.一种用于在服务器S和至少一个客户机C之间同步至少一个数据组的方法,包括:
至少一个客户机C连接到所述服务器S以便与所述服务器S的至少一个数据组的数据同步200;以及
所述至少一个客户机C请求与所述至少一个数据组同步200,其中所述请求包括将由所述至少一个客户机C维护的、使得所述服务器S能够确定所述至少一个客户机C的同步状态的同步元数据从所述至少一个客户机C发送到所述服务器S。
2.如权利要求1所述的方法,其特征在于,所述请求200还包括将自先前的同步时间以来发生在所述至少一个客户机C上的对所述至少一个数据组的改变从所述至少一个客户机C发送到所述服务器S 225。
3.如权利要求1所述的方法,其特征在于,还包括:
根据传输不可知协议来接收对由所述至少一个客户机C维护的至少一个数据组的客户机C侧版本的更新275。
4.如权利要求1所述的方法,其特征在于,还包括:
根据web服务协议来接收对由所述至少一个客户机C维护的至少一个数据组的客户机C侧版本的更新275。
5.如权利要求1所述的方法,其特征在于,还包括:
在所述至少一个客户机C上生成同步锚210。
6.如权利要求5所述的方法,其特征在于,还包括:
响应于从所述服务器S接收到的对所述请求的确认来将所述同步锚持久存储在所述至少一个客户机C上250。
7.如权利要求1所述的方法,其特征在于,还包括:
根据允许具有不同特征的多个锚数据类型的可扩展锚模型来从所述服务器S接收同步锚275。
8.如权利要求1所述的方法,其特征在于,还包括:
接收如由所述服务器S确定的一组同步冲突235并且所述客户机C根据至少一个冲突解决策略来处理所述那组同步冲突。
9.如权利要求1所述的方法,其特征在于,还包括:
所述至少一个客户机C基于对所述至少一个数据组的许可来订阅所述至少一个数据组320。
10.一种承载用于执行如权利要求1所述的方法的计算机可执行指令的计算机可读介质。
11.一种计算设备,包括:
同步代理程序130,其用于发起与在服务器S处维护的至少一个数据集的同步,其中所述同步代理程序130在所述至少一个数据集的模式不可由所述计算设备访问的情况下自动取得所述模式;以及
用于存储所述服务器S的至少一个数据集的本地版本的存储装置110。
12.如权利要求11所述的计算设备,其特征在于,所述同步代理程序130从所述服务器S中发现所述计算设备被准许与其同步的至少一个数据集。
13.如权利要求11所述的计算设备,其特征在于,所述同步代理程序130在所述计算设备连接到所述服务器S时发起同步。
14.如权利要求11所述的计算设备,其特征在于,所述同步代理程序130从所述存储装置110收集同步元数据,将改变上传到服务器S数据库以及从所述服务器S数据库下载改变。
15.如权利要求11所述的计算设备,其特征在于,还包括:
客户机C应用程序,其与所述同步代理程序130进行通信以便与所述服务器S的至少一个数据集同步,其中所述同步代理程序130将错误、进展和冲突事件传播到所述客户机C应用程序。
16.一种用于在服务器S和松耦合客户机C之间同步至少一个数据组的方法,包括:
从客户机C接收包括用于确定所述客户机C的同步状态的同步元数据的对与所述服务器S的至少一个同步组同步的请求700;
对于所述至少一个同步组中的每一个同步组,
从所述客户机C接收对所述同步组的任何改变710;
基于所述改变来更新所述服务器S的至少一个同步组710,包括确定所述改变所呈现的任何冲突720;以及
将对处理所述请求和所述冲突的确认发送到所述客户机C以供由所述客户机C来进行冲突处理730。
17.如权利要求16所述的方法,其特征在于,还包括:
基于对从所述客户机C接收到的同步元数据的分析,枚举对发送到所述客户机C的至少一个同步组的客户机C侧改变740,这使得所述客户机C能够更新所述至少一个同步组的客户机C版本。
18.如权利要求17所述的方法,其特征在于,还包括:
将客户机C侧改变作为数据集对象来发送到所述客户机C 740。
19.如权利要求16所述的方法,其特征在于,还包括:
根据允许具有不同特征的多个锚数据类型的可扩展锚模型来将同步锚从所述服务器S发送到所述客户机C 750。
20.一种承载用于执行如权利要求16所述的方法的计算机可执行指令的计算机可读介质。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/619,262 | 2007-01-03 | ||
US11/619,262 US20080162728A1 (en) | 2007-01-03 | 2007-01-03 | Synchronization protocol for loosely coupled devices |
Publications (1)
Publication Number | Publication Date |
---|---|
CN101583939A true CN101583939A (zh) | 2009-11-18 |
Family
ID=39585591
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNA2007800492023A Pending CN101583939A (zh) | 2007-01-03 | 2007-12-28 | 用于松耦合设备的同步协议 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20080162728A1 (zh) |
CN (1) | CN101583939A (zh) |
WO (1) | WO2008085782A1 (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103593173A (zh) * | 2012-10-29 | 2014-02-19 | 百度在线网络技术(北京)有限公司 | 一种应用程序的一体化开发***、方法及装置 |
CN103685191A (zh) * | 2012-09-18 | 2014-03-26 | 英业达科技有限公司 | 数据同步***及其方法 |
CN104219280A (zh) * | 2014-07-01 | 2014-12-17 | 武汉众联信息技术股份有限公司 | 一种智能应用数据传输通道 |
CN104778214A (zh) * | 2015-03-20 | 2015-07-15 | 四川长虹电器股份有限公司 | 基于资源***跳转的分布式文件***及其数据同步方法 |
CN104935660A (zh) * | 2015-06-17 | 2015-09-23 | 北京智友信诚科技有限公司 | 一种云程序开发运行***、方法及装置 |
CN105612536A (zh) * | 2013-10-09 | 2016-05-25 | 高通股份有限公司 | 远程地控制和监视神经模型执行的方法和装置 |
CN111492383A (zh) * | 2017-12-08 | 2020-08-04 | 艾赛普公司 | 使用意图分类器的自动化通信 |
Families Citing this family (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7899917B2 (en) * | 2007-02-01 | 2011-03-01 | Microsoft Corporation | Synchronization framework for occasionally connected applications |
US8073813B2 (en) * | 2008-06-06 | 2011-12-06 | Apple Inc. | Refresh and filter anchors |
US8949344B2 (en) * | 2008-09-15 | 2015-02-03 | Microsoft Corporation | Asynchronous queued messaging for web applications |
US9396242B2 (en) * | 2011-04-11 | 2016-07-19 | Salesforce.Com, Inc. | Multi-master data replication in a distributed multi-tenant system |
CN102761861A (zh) * | 2011-04-27 | 2012-10-31 | ***通信集团广东有限公司 | 信息的更新方法、服务器以及信息的更新*** |
US9116971B2 (en) | 2012-05-08 | 2015-08-25 | Softframe, Inc. | Data synchronization using a composite change clock |
US9614932B2 (en) | 2013-03-14 | 2017-04-04 | Microsoft Technology Licensing, Llc | Managing and implementing web application data snapshots |
US9229701B2 (en) | 2013-03-15 | 2016-01-05 | Microsoft Technology Licensing, Llc | Local store data versioning |
EP2979191B1 (en) | 2013-03-28 | 2018-06-27 | Hewlett-Packard Enterprise Development LP | Coordinating replication of data stored in a non-volatile memory-based system |
US9429643B2 (en) | 2013-04-09 | 2016-08-30 | Thales-Raytheon Systems Company Llc | Coherent aggregation from multiple diverse sources on a single display |
US9542467B2 (en) * | 2013-11-18 | 2017-01-10 | International Business Machines Corporation | Efficiently firing mapping and transform rules during bidirectional synchronization |
US10402744B2 (en) | 2013-11-18 | 2019-09-03 | International Busniess Machines Corporation | Automatically self-learning bidirectional synchronization of a source system and a target system |
US10452635B2 (en) | 2016-03-23 | 2019-10-22 | Microsoft Technology Licensing, Llc | Synchronizing files on different computing devices using file anchors |
CN111767345B (zh) * | 2020-06-30 | 2023-10-31 | 中国平安财产保险股份有限公司 | 建模数据同步方法、装置、计算机设备及可读存储介质 |
Family Cites Families (31)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5978813A (en) * | 1995-09-25 | 1999-11-02 | International Business Machines Corporation | System for providing synchronization between a local area network and a distributing computer environment |
US6253228B1 (en) * | 1997-03-31 | 2001-06-26 | Apple Computer, Inc. | Method and apparatus for updating and synchronizing information between a client and a server |
US6275831B1 (en) * | 1997-12-16 | 2001-08-14 | Starfish Software, Inc. | Data processing environment with methods providing contemporaneous synchronization of two or more clients |
US6226650B1 (en) * | 1998-09-17 | 2001-05-01 | Synchrologic, Inc. | Database synchronization and organization system and method |
US6549917B1 (en) * | 1999-04-29 | 2003-04-15 | Waveware Communications, Inc. | Synchronization of host computers and handheld remote computers |
US6976077B1 (en) * | 1999-07-06 | 2005-12-13 | Microsoft Corporation | Automatic and transparent synchronization of server-side state information with a client application |
GB2371902B (en) * | 1999-09-10 | 2004-11-17 | Avantgo Inc | System, method, and computer program product for interactive interfacing with mobile devices |
US6578054B1 (en) * | 1999-10-04 | 2003-06-10 | Microsoft Corporation | Method and system for supporting off-line mode of operation and synchronization using resource state information |
US6446090B1 (en) * | 1999-10-08 | 2002-09-03 | Unisys Corporation | Tracker sensing method for regulating synchronization of audit files between primary and secondary hosts |
US7305475B2 (en) * | 1999-10-12 | 2007-12-04 | Webmd Health | System and method for enabling a client application to operate offline from a server |
US6643669B1 (en) * | 2000-03-14 | 2003-11-04 | Telefonaktiebolaget Lm Ericsson (Publ) | Method for optimization of synchronization between a client's database and a server database |
US7013316B1 (en) * | 2000-07-13 | 2006-03-14 | Microsoft Corporation | System and method for synchronizing multiple database files |
US7127514B2 (en) * | 2000-12-28 | 2006-10-24 | Microsoft Corporation | Stateless distributed computer architecture with server-oriented state-caching objects maintained on network or client |
WO2002075539A2 (en) * | 2001-03-16 | 2002-09-26 | Novell, Inc. | Client-server model for synchronization of files |
US6970876B2 (en) * | 2001-05-08 | 2005-11-29 | Solid Information Technology | Method and arrangement for the management of database schemas |
KR100384460B1 (ko) * | 2001-05-09 | 2003-05-22 | 삼성전기주식회사 | 웨이퍼 배면을 에칭하기 위한 장치 |
US6769048B2 (en) * | 2001-12-06 | 2004-07-27 | Sun Microsystems, Inc. | Cache synchronization method, system and apparatus for a distributed application and an object located in a client cache |
US20030217096A1 (en) * | 2001-12-14 | 2003-11-20 | Mckelvie Samuel J. | Agent based application using data synchronization |
US7275105B2 (en) * | 2002-01-16 | 2007-09-25 | Laszlo Systems, Inc. | Enabling online and offline operation |
US9171049B2 (en) * | 2002-06-13 | 2015-10-27 | Salesforce.Com, Inc. | Offline simulation of online session between client and server |
US7373502B2 (en) * | 2004-01-12 | 2008-05-13 | Cisco Technology, Inc. | Avoiding server storage of client state |
US7577771B2 (en) * | 2004-05-03 | 2009-08-18 | Microsoft Corporation | Caching data for offline display and navigation of auxiliary information |
US20060030292A1 (en) * | 2004-05-20 | 2006-02-09 | Bea Systems, Inc. | Client programming for mobile client |
US7664879B2 (en) * | 2004-11-23 | 2010-02-16 | Cisco Technology, Inc. | Caching content and state data at a network element |
US7634519B2 (en) * | 2004-12-17 | 2009-12-15 | International Business Machines Corporation | Bypassing an intermediate synchronization server of a three tiered synchronization system |
US7720890B2 (en) * | 2005-02-22 | 2010-05-18 | Microsoft Corporation | Ghosted synchronization |
US20060200570A1 (en) * | 2005-03-02 | 2006-09-07 | Nokia Corporation | Discovering and mounting network file systems via ad hoc, peer-to-peer networks |
US7996493B2 (en) * | 2005-03-10 | 2011-08-09 | Microsoft Corporation | Framework for managing client application data in offline and online environments |
US7783993B2 (en) * | 2005-09-23 | 2010-08-24 | Palm, Inc. | Content-based navigation and launching on mobile devices |
US20070168535A1 (en) * | 2005-12-22 | 2007-07-19 | Ilmo Ikonen | System and method for data communication between devices |
US7860825B2 (en) * | 2006-05-08 | 2010-12-28 | Palm, Inc. | Method for synchronizing software application and user data for asynchronous client-server and peer to peer computer networks |
-
2007
- 2007-01-03 US US11/619,262 patent/US20080162728A1/en not_active Abandoned
- 2007-12-28 CN CNA2007800492023A patent/CN101583939A/zh active Pending
- 2007-12-28 WO PCT/US2007/089144 patent/WO2008085782A1/en active Application Filing
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103685191A (zh) * | 2012-09-18 | 2014-03-26 | 英业达科技有限公司 | 数据同步***及其方法 |
CN103685191B (zh) * | 2012-09-18 | 2017-02-01 | 英业达科技有限公司 | 数据同步***及其方法 |
CN103593173A (zh) * | 2012-10-29 | 2014-02-19 | 百度在线网络技术(北京)有限公司 | 一种应用程序的一体化开发***、方法及装置 |
CN103593173B (zh) * | 2012-10-29 | 2017-07-25 | 百度在线网络技术(北京)有限公司 | 一种应用程序的一体化开发***、方法及装置 |
CN105612536A (zh) * | 2013-10-09 | 2016-05-25 | 高通股份有限公司 | 远程地控制和监视神经模型执行的方法和装置 |
CN104219280B (zh) * | 2014-07-01 | 2018-03-16 | 武汉众廉科技有限公司 | 一种智能应用数据传输通道 |
CN104219280A (zh) * | 2014-07-01 | 2014-12-17 | 武汉众联信息技术股份有限公司 | 一种智能应用数据传输通道 |
CN104778214A (zh) * | 2015-03-20 | 2015-07-15 | 四川长虹电器股份有限公司 | 基于资源***跳转的分布式文件***及其数据同步方法 |
CN104778214B (zh) * | 2015-03-20 | 2018-02-06 | 四川长虹电器股份有限公司 | 基于资源***跳转的分布式文件***及其数据同步方法 |
CN104935660A (zh) * | 2015-06-17 | 2015-09-23 | 北京智友信诚科技有限公司 | 一种云程序开发运行***、方法及装置 |
CN104935660B (zh) * | 2015-06-17 | 2018-11-06 | 北京智友信诚科技有限公司 | 一种云程序开发运行***、方法及装置 |
CN111492383A (zh) * | 2017-12-08 | 2020-08-04 | 艾赛普公司 | 使用意图分类器的自动化通信 |
CN111492383B (zh) * | 2017-12-08 | 2023-09-12 | 艾赛普公司 | 使用意图分类器的自动化通信 |
Also Published As
Publication number | Publication date |
---|---|
WO2008085782A1 (en) | 2008-07-17 |
US20080162728A1 (en) | 2008-07-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101583939A (zh) | 用于松耦合设备的同步协议 | |
US20200301887A1 (en) | Sync as a service for cloud-based applications | |
CN101802809B (zh) | 多主同步环境中的web服务端点的同步 | |
CN102004751B (zh) | 访问网络中的内容 | |
US7899917B2 (en) | Synchronization framework for occasionally connected applications | |
Sinitsyn | A synchronization framework for personal mobile servers | |
CN101729442B (zh) | 一种实现内容共享的方法和装置 | |
US9077717B2 (en) | Propagation and adoption of extensions across applications in networked solutions | |
CN101502035B (zh) | 用于在网络中内容同步以及检测同步递归的方法和*** | |
CN101689164B (zh) | 服务器辅助的对等同步 | |
US10242100B2 (en) | Managing cached data in a network environment | |
CN101627581A (zh) | 用于分布式设备数据的多主同步的冲突解决 | |
US20100269164A1 (en) | Online service data management | |
US20060234623A1 (en) | System and method for efficient transfer of applications and data during device swap | |
KR20110036930A (ko) | 복수의 디바이스들에 걸친 개인적인 디지털 자산들을 관리하는 방법 | |
US20090210426A1 (en) | System and method for efficient management of distributed spatial data | |
US20110010387A1 (en) | Associated content system | |
CN102792269A (zh) | 用于经由web服务提供信息来作为服务的***和方法 | |
CN101145163A (zh) | 从多个数据源获取数据的方法及*** | |
CN101442558A (zh) | 一种为p2sp网络提供索引服务的方法和*** | |
CN102420864B (zh) | 一种面向海量数据的数据交换方法 | |
US20090234872A1 (en) | Synchronization of disconnected/offline data processing/entry | |
Rotter et al. | Telecom strategies for service discovery in microservice environments | |
Xhafa et al. | Efficient peerGroup management in JXTA-Overlay P2P system for developing groupware tools | |
CN101841540A (zh) | 一种基于Hash函数算法发布多媒体内容的方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Open date: 20091118 |