CN102227901B - 点滴式同步协议 - Google Patents
点滴式同步协议 Download PDFInfo
- Publication number
- CN102227901B CN102227901B CN200980147907.8A CN200980147907A CN102227901B CN 102227901 B CN102227901 B CN 102227901B CN 200980147907 A CN200980147907 A CN 200980147907A CN 102227901 B CN102227901 B CN 102227901B
- Authority
- CN
- China
- Prior art keywords
- data
- server
- request
- client
- client process
- 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.)
- Active
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
-
- 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/50—Network services
- H04L67/56—Provisioning of proxy services
- H04L67/565—Conversion or adaptation of application format or content
-
- 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/02—Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Computer And Data Communications (AREA)
- Information Transfer Between Computers (AREA)
Abstract
除了其他内容以外,公开了用于提供点滴式同步的技术和系统。在一个方面中,一种系统包括用于存储一个或多个数据记录的数据仓库(112)和与数据仓库(112)通信的服务器(110)。服务器(110)被设计为响应于对执行以下各项中的至少一个的用户请求而访问数据仓库(112):访问一个或多个数据记录,添加数据记录,以及修改一个或多个数据记录。系统还包括与服务器(110)通信的客户端应用(125)。客户端应用(125)被设计为通过客户端进程(120)接收用户请求;封装提供客户端进程(120)与服务器之间的通信的协议(146);以及利用所封装的协议(146)将所接收的用户请求转发到服务器(110)。
Description
技术领域
本申请涉及在服务器和一个或多个客户端进程之间同步数据。
背景技术
对来自用户的对与中央数据仓库同步数据的请求的处理可利用不同的同步协议来执行。对于不同类型的网络连接,例如空中连接或有线连接,可能需要不同的同步协议。另外,不同同步协议的可扩展性可受到控制如何以及何时同步所请求的数据的同步协议的幕后细节的复杂度的影响。另外,不同的客户端进程在被允许与同步服务器通信之前可能需要执行各种完好性检查。
发明内容
除了其他内容以外,公开了用于提供执行各种同步服务器进程的同步服务器的技术和系统。
在一个方面中,一种系统包括用于存储一个或多个数据记录的数据仓库和与数据仓库通信的服务器。服务器被设计为响应于对执行以下各项中的至少一个的用户请求而访问数据仓库:访问一个或多个数据记录,添加数据记录,以及修改一个或多个数据记录。系统还包括与服务器通信的包括协议库的客户端应用。客户端应用被设计为通过客户端进程接收用户请求;封装提供客户端进程与服务器之间的通信的协议;以及利用所封装的协议将所接收的用户请求转发到服务器。
实现方式可以可选地包括以下特征中的一个或多个。客户端应用可包括Java应用。客户端应用可被嵌入在客户端进程内。或者,客户端应用可被设计为作为服务器方进程工作。客户端应用可通过包括web浏览器的客户端进程来接收用户请求。客户端应用可封装协议以使得客户端进程能够在不知道协议的细节的情况下与服务器通信。客户端应用可封装协议以使得服务器将客户端进程识别为受信任的客户端,其中服务器假定受信任的客户端提供的数据的正确性。服务器可响应于所转发的请求而访问数据仓库;从一个或多个数据记录中获得在所转发的请求中标识的数据;以及在答复消息中将所获得的在所转发的请求中标识的数据转发到客户端应用。客户端应用可包括用于临时存储在来自服务器的答复消息中接收的数据的缓存。客户端应用可通过客户端进程接收另一请求;检测临时存储的数据是否有效;以及当检测到临时存储的数据有效时,访问临时存储的数据,而不是将所接收的另一请求转发到服务器。
在另一方面中,一种方法包括在数据处理装置处可接收对访问数据仓库处存储的一个或多个数据记录的请求。另外,在数据处理装置处可接收对向数据仓库添加数据记录的请求。另外,在数据处理装置可接收对修改数据仓库处存储的一个或多个数据记录的请求。在数据处理装置处,可封装提供客户端进程与服务器之间的通信的协议。在数据处理装置处,可利用封装的协议将上述请求传输到服务器以指示服务器访问数据仓库以执行所请求的操作。
实现方式可以可选地包括以下特征中的一个或多个。接收请求的步骤可包括利用包括Java应用的客户端应用在数据处理装置处接收请求。客户端应用可被嵌入在客户端进程内。数据处理装置可包括另一服务器。客户端应用可被嵌入在web浏览器中。客户端应用可包括协议库,用以将协议与协议的功能一起封装。封装协议的步骤可包括封装协议以保证提供给服务器的数据的正确性。在数据处理装置处,响应于将所接收的请求传输到服务器,可获得与在数据仓库中存储的一个或多个数据记录相关联的所接收的请求中标识的数据。另外,可临时存储所获得的数据。在数据处理装置处,可接收另一请求。另外,在数据处理装置处,可检测临时存储的数据是否有效。在数据处理装置处,当检测到临时存储的数据有效时,可访问临时存储的数据,而不是将所接收的另一请求转发到服务器。
在另一方面中,包含在计算机可读介质上的计算机程序产品可操作来使得数据处理装置执行操作。例如,包含在计算机可读介质上的计算机程序产品可操作来使得数据处理装置接收对执行操作的请求,该操作包括以下各项中的至少一个:(1)访问数据仓库中存储的一个或多个数据记录;(2)向数据仓库添加数据记录;或者(3)修改数据仓库中存储的一个或多个数据记录。包含在计算机可读介质上的计算机程序产品可操作来使得数据处理装置封装用于将所接收的请求传输到服务器的协议。包含在计算机可读介质上的计算机程序产品可操作来使得数据处理装置利用封装的协议将所接收的请求传输到服务器以指示服务器访问数据仓库以执行所请求的操作。
实现方式可以可选地包括以下特征中的一个或多个。包含在计算机可读介质上的计算机程序产品可操作来使得数据处理装置利用包括应用的客户端应用接收请求。包含在计算机可读介质上的计算机程序产品可操作来使得数据处理装置利用嵌入在客户端进程内的客户端应用接收请求。包含在计算机可读介质上的计算机程序产品可操作来使得包括另一服务器的数据处理装置接收请求。包含在计算机可读介质上的计算机程序产品可操作来使得数据处理装置利用嵌入在web浏览器中的客户端应用来接收请求。包含在计算机可读介质上的计算机程序产品可操作来使得数据处理装置使用包括协议库的客户端应用来将协议与协议的功能一起封装。包含在计算机可读介质上的计算机程序产品可操作来使得数据处理装置封装协议以保证提供给服务器的数据的正确性。包含在计算机可读介质上的计算机程序产品可操作来使得数据处理装置响应于将请求传输到服务器而执行包括获得与在所访问的数据仓库中存储的一个或多个数据记录相关联的所接收的请求中标识的数据的操作。包含在计算机可读介质上的计算机程序产品可操作来使得数据处理装置临时存储所获得的数据。包含在计算机可读介质上的计算机程序产品可操作来使得数据处理装置验证所获得的数据的有效性。验证所获得的数据的有效性可包括接收另一请求;检测临时存储的数据是否有效;以及当检测到临时存储的数据有效时,访问临时存储的数据,而不是将所接收的另一请求转发到服务器。
可以实现根据本说明书的技术和系统,从而可能提供各种优点。诸如Java SDK之类的客户端应用封装同步协议,以使得客户端进程可在没有关于同步协议的细节的任何知识的情况下与同步服务器通信。例如,客户端进程不需要判定数据是否已被另一客户端进程所改变并且需要更新所存储的缓存,等等。从而,例如使用Java SDK的客户端进程可以就好像数据在本地可得那样对待该抽象。此外,使用Java SDK的任何客户端进程都被识别为受信任的客户端。受信任的客户端被假定为提供正确或有效的数据。当与受信任的客户端相接口时,同步服务器可以跳过对于不受信任的客户端来说可能必要的某些完好性检查,因为假定了由受信任的客户端提供的数据的正确性。
附图说明
图1a是示出用于在服务器与多个客户端进程之间同步数据的示例系统的框图。
图1b示出了用于在服务器与多个客户端进程之间同步数据的系统的另一示例实现方式。
图2是示出用于与同步服务器同步的应用体系结构的示例的框图。
图3示出了数据类型的示例。
图4示出了用于添加两个新记录、修改一记录和删除另一记录的示例同步消息。
图5a-5b分别示出了来自客户端进程的示例请求消息和来自同步服务器的答复消息。
图6是示出示例同步进程的过程流程图。
各图中相似的参考符号和标号指示相似的元素。
具体实施方式
公开了用于提供对服务器与多个客户端进程之间的同步进行管理的可扩展协议的技术和系统。
同步是通过周期性地比较在从上次知道两个不同的数据存储库一致起在每个数据存储库中发生的改变来维护这两个数据存储库之间的一致性的过程。数据存储库可包括客户端进程,例如一方的客户端设备和另一方的同步服务器。为了在两方之间同步数据,数据存储库被配置有各种能力。例如,每个数据存储库被配置为在被请求时提供所有数据。此外,每个数据存储库被配置为识别和提供从上次同步时起的改变。每个数据存储库被配置为就要保持同步的纲要(schema)达成共识。每个数据存储库被配置为就数据表示达成共识。每个数据存储库被配置为就同步基元(即添加、更新、删除)的语义达成共识。另外,每个数据存储库被配置为如果在同步期间发生问题则回退到先前状态,以避免破坏数据存储库。
被同步的数据遵循关系模型并且被划分成数据类,这些数据类将结构化数据类型或实体的定义归组。每个数据类由一个纲要表示,纲要是相关的实体和属性的网络。给定数据类内的实体可以利用关系来相互指引。分立的数据类中的实体之间的关系是被禁止的,从而每个数据类完全独立于其他数据类。从用户的角度来看,数据类可能看起来是从不同的专用应用管理的。例如,联系人数据类可主要由地址簿应用管理,而日历数据类可由日历应用管理。
同步服务器支持各种同步模式,包括慢速、重置和快速。客户端进程第一次与服务器同步时,一数据类的所有数据被交换,以匹配被认为相同的现有数据项。为了优化后续同步操作的同步和网络带宽使用,客户端进程和同步服务器可以只交换从上次这一对同步起改变了的数据。从而,每个实体能够判定什么本地改变应当被发送到另一实体。此外,每个实体能够检测是否发生了某一情形,该情形要求交换更多数据之后才能再继续快速同步。
当客户端进程和同步服务器第一次同步以为后续的仅差异的数据交换建立共同的基线时,可以使用慢速同步模式。在慢速同步期间,客户端进程将一数据类的所有数据发送到同步服务器。同步服务器尝试将这些数据项与同步服务器已知的那些相匹配。若未能执行适当的身份匹配,则可能导致重复的数据。同步服务器随后利用在客户端进程处缺失的数据项来作为响应。
重置同步模式用于利用同步服务器的数据来重置客户端进程上的数据类的所有数据。这可能发生在数据结构被推送到客户端进程时,或者同步服务器或客户端进程判定本地数据已遭破坏时。客户端进程不发送数据,同步服务器利用该数据类的整个数据结构来作为响应。
快速同步模式是最高效的模式。客户端进程只发送从与同步服务器的上次同步起改变了的数据。同步服务器仅利用在客户端进程外部改变了的那些数据来作为响应。
图1a是示出用于在服务器与多个客户端进程之间同步数据的示例系统100的框图。同步服务器110通过网络142与服务器进程140可通信地连接。服务器进程140通过网络144与一个或多个客户端进程120可通信地连接。网络142和144可以是相同网络或不同网络。同步服务器110包括数据仓库或存储库112,其存储符合关系模型和/或纲要的数据114。可利用在服务器进程140上运行的包括协议库的客户端应用125来与客户端进程120同步所存储的数据。
同步服务器110是可扩展的方案,用于向多个客户端进程120(例如web客户端)提供对数据存储库112的读取/写入访问。同步服务器110管理同步事务,供多个客户端进程对存储在同步数据仓库112中的一个或多个数据记录进行更新。同步服务器110处理同步会话,并且根据需要处理被更新的同步数据仓库112。
提供了同步协议146,使得客户端进程120能够访问存储的数据114并执行同步。同步协议146使得任何可以使用和理解HTTP和XML的客户端进程120能够与同步服务器110同步。例如,同步协议146使得诸如Web浏览器122、移动设备130、计算机124等等之类的客户端进程能够与同步服务器110同步。移动设备130可包括移动电话132、个人数字助理134和其他便携式计算设备136。
提供了包括协议库的客户端应用125,以将同步协议146与同步协议146的功能封装在一起。可利用诸如Java软件开发工具包(SDK)之类的各种开发工具来实现客户端应用125。客户端应用125可以向客户端进程120隐藏同步协议125的“幕后”细节,例如判定数据114是否已被另一客户端进程改变并且需要更新存储的缓存,等等。从而,使用例如JavaSDK的客户端进程120可以就好像数据在本地可得那样对待该抽象。另外,开发客户端进程(例如web应用)不需要同步的细节。
在图1a中,客户端应用125例如是用Java SDK实现的,以在与同步服务器110通信的另一服务器进程140上执行。客户端进程120与服务器进程140通信,并且客户端应用125封装同步协议146以使服务器进程140能够访问同步服务器110上的数据114。从而,通过服务器进程140,客户端进程130能够访问存储在同步服务器110上的数据114。
图1b示出了用于在服务器与多个客户端进程之间同步数据的系统的另一示例实现方式。在图1b所示的示例中,客户端应用125被包括在客户端进程120中。客户端进程120可使用嵌入在客户端进程120内的客户端应用125来直接与同步服务器110通信。例如,SDK的JavaScript实现(即客户端应用125)可被嵌入在web浏览器122(即客户端进程)内部以封装同步协议146。通过使用JavaScript实现或其他机制来将同步协议封装在客户端进程内,可以去除应用层,例如服务器进程140。从而,客户端进程在与同步服务器110通信之前不需要经过另外的应用层。这增强了系统100的可扩展性。
如上所述,客户端进程120不限于web应用。在一些实现方式中,同步协议146被集成到数据处理设备的操作系统(OS)中以使得数据处理设备(例如计算机124或移动设备130)能够与同步服务器110同步。
图2是示出用于与同步服务器同步的应用体系结构的示例的框图。同步服务器110包括执行本说明书中描述的各种功能的各种组件。例如,同步服务器110可包括Java NSArchivers组件202、通知机构204、管理接口206、客户端协议机构208、差异引擎(混合器,冲突)210、共用组件212、SyncDAV改变日志组件214、纲要(定义、确证)组件216和真实性(持续性)组件218。服务器110通过连线协议240(例如同步协议146)连接到客户端应用125。
客户端应用125包括Java库,其通过同步服务器数据访问协议(SDAP)提供对同步服务器110的访问,不需要特定的协议知识。如上所述,这例如是通过让客户端应用125封装通信协议146来实现的。SDAP是用于访问同步数据仓库112和执行同步的协议。SDAP包括用于同步数据仓库数据和改变的XML纲要。SDAP还包括为数据类、记录和属性定义URL方案的HTTP协议语义。SDAP还包括用于通信调用(例如HEAD、GET、PUT和DELETE)的语义。另外,SDAP包括定制的X头部,用于交换同步特定数据,例如客户端id和同步锚。点滴式同步的示例过程在下文中联系图5来进一步描述。通信协议146允许了点滴式同步,其中每次同步小部分数据,而不是一次同步所有改变。
SDAP使得客户端进程120能够与同步服务器110相接口。当客户端进程120和同步服务器110如以上联系图1a所述都被部署在服务器方内部时,客户端进程120与同步服务器110之间的通信不被加密。此外,同步服务器110或一单独的网关服务器可包括认证和会话处理,以支持与其他支持不同协议(例如空中(OTA)协议)的客户端进程的同步。OTA协议被设计用于具有小带宽的蜂窝网络,而本说明书中描述的同步协议146被设计为在可靠的、健壮的网络上工作。此外,SDAP提供了用于注册客户端和对于各个数据类启用/禁用同步的设施。
SDAP使得web客户端120能够与同步服务器110同步并且访问同步数据仓库112,而无需复杂的客户端同步状态机。SDAP允许了对同步数据仓库112和响应时间目标在500毫秒以下范围内的其他数据仓库中的同步的数据的访问。SDAP可以取代诸如MobileMe服务器(Replicant,SFDE和WOA)之类的各种服务器之间的任何现有协议(例如SyncAPI)。此外,SDAP使能同步包括联系人(Contacts)、日历(Calendars)和书签(Bookmarks)在内的各种数据类。带有Apple扩展名的示例数据类包括“com.apple.Contacts”、“com.apple.Calendars”和“com.apple.Bookmarks”。另外,SDAP使得客户端进程120能够与同步服务器110进行点滴式同步。希望使用SDAP的客户端应用(例如web客户端120)必须支持字段级别的改变并且完全保持API所递送的属性。
如上所述,客户端应用125可实现为Java库(例如Java SDK),其通过SDAP提供对同步服务器110的访问,无需特定的协议知识。这种客户端应用125可为主数据类(书签、联系人和日历)提供对象模型,并且使得客户端能够与同步服务器同步数据,而不一定要有其自己的数据存储库。如上所述,为了提高服务器的可扩展性,客户端应用125将确保关系完好性施行的任务从同步服务器110转移到客户端应用(使使用客户端应用的客户端进程成为受信任的客户端)并且消除了对于同步服务器110上的本地唯一标识符(LUID)—通用唯一标识符(UUID)映射的需要。例如,客户端应用125可被MobileMe联系人和日历面向Web体系结构(WOA)用于与同步服务器110同步。
SDAP定义其自己的XML纲要以描述同步数据仓库112和诸如“记录”和“属性”改变之类的同步操作。用于SDAP的XML纲要遵循同步服务器110的数据模型。例如,XML纲要可表示实体记录;属性;诸如添加、修改和删除之类的记录改变;诸如设置和清除之类的属性改变;以及id映射。
客户端应用125包括在与同步服务器110的同步会话期间可使用的各种Java库组件。客户端应用125可包括由同步服务器110定义的所支持的纲要或数据类。这些数据类可包括联系人222、日历224和书签226。这些数据类中的每一个包括按关系组织的数据项。客户端应用125还可包括SDAP客户端组件228、共用(XML、记录、改变)组件230和实体存储库232。
同步协议146是用于访问同步服务器中存储的数据114和执行同步的协议。同步协议146包括用于数据114的XML纲要和对数据114的改变。同步协议146还包括为数据类、记录和属性定义URL方案的HTTP协议语义;用于通信调用的语义,例如HEAD、GET、PUT和DELETE;以及用于交换诸如客户端id和同步锚之类的同步特定数据的定制X头部。
同步协议146定义其XML纲要来描述数据114和同步操作(记录和属性改变)。XML纲要遵循表示实体记录、属性、记录改变(例如添加、修改、删除)、属性改变(例如设置、清除)和id映射的数据模型。
记录元素表示某一实体类型的数据114中的一个记录。记录元素的特性包括:(1)GUID:记录的GUID;(2)类型:记录的类型;(3)创建时间:在数据114中创建该记录的时间戳;以及(4)修改时间:上次修改该记录的时间戳。
记录元素包括一个或多个属性和关系子元素。属性元素是名称-值对。单个属性由“prop”元素或“rel”元素(对于关系属性)表示。关系属性的值是相关记录的GUID的列表。属性元素的特性包括其名称。该元素的值是属性的值的信息串表示。数据类型纲要可利用以下各项来编码:(1)信息串:信息串本身的表示;(2)枚举:具有来自有效值的固定列表的相关联的值的信息串;(3)数字(包括布尔型的):值的信息串表示(布尔类型是“0”或“1”);(4)日期:yyyymmddThhmmssZ格式的信息串表示;(5)URL的信息串表示;(6)颜色:颜色成分红、绿、蓝和alpha的空格分隔列表;(7)数据:基64编码的二进制数据,但有时是URL;以及(8)阵列,集合:表示项目的子元素的列表。图3示出了数据类型的示例。
XML纲要包括三类数据改变:添加、修改和删除。添加和修改包括属性改变的列表。图4示出了用于添加两个新记录(联系人和电子邮件地址)、修改一记录(群组,通过添加新的联系人)和删除另一记录的示例同步消息。
XML纲要还包括两类属性改变:设置和清除。属性改变元素清除不包括任何节点内容。“设置属性改变”元素的内容是新属性值。
当接收到对添加记录的请求时,同步服务器判定所提交的记录是否与客户端尚不知的现有记录或者来自参与同一同步的另一客户端的记录相同。当找到匹配时,该记录不被添加到数据。同步服务器而是返回一id映射,该id映射向客户端进程标识出与所提交的记录相匹配的已经存在的记录的身份。
同步协议146是基于HTTP的协议,其遵循基于表示性状态传送(REST)的设计。同步协议146中的每个对象,例如数据类、记录和属性,被赋予一URL,并且同步协议利用包括HEAD、GET、PUT和delete在内的HTTP方法访问同步服务器以获得数据。
为了发起和结束通信,使用HEAD和DELETE方法。当客户端进程是通过其GUID而被知晓的时,同步进程在有状态模式中工作。客户端进程发送HEAD调用并且提供客户端的GUID以允许同步服务器将客户端进程注册在其数据库中并向关联的应用发送标识。通过注册客户端进程GUID,客户端进程被同步服务器知晓,并且当客户端进程完成同步时,客户端进程发送HTTP DELETE请求以将该GUID从数据库中删除并确认客户端进程完成了同步。
为了交换数据,使用PUT和GET方法。客户端进程使用GET请求来访问来自同步服务器的数据并且使用PUT请求来向同步服务器更新数据。指定名称和数据类的GET请求仅取得整个记录。另外,可利用额外的请求参数来附加GUID以允许按实体类型和预定的数据视图的过滤。另外,可以指定PRIVATE中的选项以指示所指引的关系,并且记录及其所有指引关系作为响应被返回。
在GET请求中,指定URL以标识要从同步服务器访问的记录。当客户端进程发送PUT调用时,同步锚被编码在HTTP头部中以保持客户端进程的当前同步状态。除了同步锚以外,同步模式也被编码在HTTP头部中。根据接收到的同步锚,同步服务器可以识别客户端进程尚不知晓的改变。
为了更新数据,利用例如点滴式同步,PUT请求可用于实现任何数目的字段级别记录改变。响应于PUT请求,同步服务器返回请求PUT的客户端进程尚未看到的字段级别改变。在PUT请求中,在消息的主体中指定想要的记录改变。PUT调用中指定的URL表示要更新的数据类。单个PUT调用可用于发送多个改变到同步服务器并在PUT响应中从同步服务器获得更新。通过使用GET和PUT,同步可以是无状态的。
对于GET和PUT,在客户端进程与同步服务器之间传送的有效载荷是XML形式的。对于GET,有效载荷是RECORD和PROPERTIES。对于PUT,提供RECORD改变和PROPERTY改变。
此外,同步协议146使用定制的X头部来交换同步特定数据,例如客户端id和同步锚。例如,被称为X-ClientID的X头部可表示在用户的同步客户端进程之中唯一的客户端标识符。客户端标识符可以是设备标识符或应用id。被称为X-SyncAnchor的X头部可以以信息串格式表示同步锚。
当数据被另外的客户端进程发表时,同步服务器拒绝该数据的生成。从而,当客户端进程提供数据的旧版本时,同步服务器通知该客户端进程:该客户端进程所推送的数据是无效的并且该客户端进程需要拉出该数据来更新其版本。例如,客户端进程可发送带有值“快速”(默认)的X-SyncMode头部以指示快速同步。利用不同的值,当提供的数据应当替换当前数据时,可在PUT调用中发送X-SynMode。
对于快速还是慢速同步的指示被用于识别同步服务器与客户端进程之间的关系,例如客户端以前是否同步过,或者客户端进程是否需要所有东西,或者客户端是否只发送对数据的改变。例如,当客户端进程需要所有东西时,可以指示慢速同步。当客户端进程只发送改变时,可以指示快速同步。可在HTTP头部中指定同步模式。当想要慢速同步时,可在PUT调用中包括所有的数据并且可在同一PUT调用中指定慢速同步。每个PUT调用包括对同步锚和同步模式的指示。
如上所述,诸如Java SDK之类的客户端应用处理对数据关系完好性的施行。这意味着例如如果从联系人中删除了一电子邮件地址,则JavaSDK创建所有必要的记录改变。通过使用Java SDK,同步服务器知道从Java SDK客户端接收的所有改变已经是正确的。从而,施行关系完好性的工作被转移到了客户端应用。
Java SDK通过静态型别来施行数据的关系完好性。对于同步服务纲要中存在的每个实体,提供一具体的类。这些实体类的示例包括联系人类、电子邮件类、电话号码类等等。在Java SDK中施行静态方法以确保受信任的客户端不会对数据的关系完好性犯下任何错误。例如,Java SDK客户端只能设置联系人中的电话号码,从而不能设置事件类中的电话号码。这是因为Java SDK知道数据关系。例如,日历和该日历中的事件可能存在。如果日历中的该事件被去除,则从SDK的角度来看,只需要调用“events.delete”而不是“events.calendar.delete”。“event.delete”调用创建对于该日历中的该事件的该删除操作的记录改变。此外,为该日历创建修改操作,其从日历-事件关系中去除该事件。从而,代码中的同步服务纲要为Java SDK所知晓。
除了维护数据的关系完好性以外,Java SDK还维护客户端进程当前使用的数据的缓存。通过维护该缓存,数据可被进一步推送出到客户端进程并从同步服务器转移开。不是来自客户端进程的每个请求都需要被发送到同步服务器,因为数据已经被缓存在数据情境中的中间层(例如JavaSDK)中。对于以上描述的地址簿示例,开始时,主联系人记录被访问并加载以填充客户端进程(例如浏览器)中的初始视图。当用户点击联系人时,该联系人的所有细节(例如电子邮件地址、街道地址、电话号码等等)于是被加载以被用户查看。这是针对该特定GUID对同步服务器的一个额外的调用,并且可能要求解析所有关系,比如电子邮件地址、街道地址、电话号码等等。但在此之后,该联系人的所有数据被缓存在Java SDK的数据情境中。因此,下次用户点击该联系人时,不需要再次访问同步服务器。如果对同一联系人的改变从另外的客户端进程进入到同步服务器,则该客户端进程被通知以该改变,并且下次该客户端进程调用同步时,该改变被从同步服务器返回。这可以通过在数据情境中使用标志来完成,该标志(在被设置时)指示出同步服务器具有针对该客户端进程的改变。只要标志未被设置并且客户端进程自身没有提供任何改变,同步调用就不会实际去到同步服务器。每当另一客户端进程提供另一改变时,同步服务器随后就通知客户端进程在同步服务器方有改变。因此,下次客户端进程在无改变的情况下进入时,数据情境被标记为脏的或者无效的,并且该同步请求被转发到同步服务器。这减少了对同步服务器的调用的数目。
支持同步协议146的客户端进程可以是受信任的客户端或不受信任的客户端。由于Java SDK施行关系完好性,所有Java SDK客户端都是受信任的客户端。对于受信任还是不受信任的客户端进程的指示被同步服务器用于识别客户端进程发送的数据是否符合同步服务器的数据模型,数据的正确性。对于不受信任的客户端,当对记录的改变进入时(例如如上所述删除日历中的事件),同步服务器将必须生成对日历的修改。然而,对于受信任的客户端(例如Java SDK客户端),对于日历-事件关系的该修改已经由Java SDK完成。
当用户通过客户端进程修改一个或多个记录时,这些改变必须与同步服务器同步。同步的时机和频率可能是不同的。例如,客户端进程可以判定在每次同步之间等待多久。同步的频率可以与用户实现的修改的次数相当。另外,客户端进程可以等待直到已经积累了若干个改变为止。当客户端进程决定同步时,客户端进程发送包含这些改变的PUT调用到同步服务器。来自同步服务器的答复消息可包含客户端进程尚未看到过的或者是同步服务器应用关系完好性规则(例如生成级联删除(如果客户端进程不受信任的话))的结果的任何服务器方改变。客户端进程可以决定如何处理接收到的改变。例如,客户端进程可以将任何新添加的联系人记录放在本地缓存中并且更新本地视图以在联系人列表中示出新添加的联系人记录。类似地,删除可以导致应用从视图和缓存中去除这些条目。修改可被忽略,除非修改是针对已经缓存的记录的,在此情况下改变可被应用到缓存的记录。
图5a-5b分别示出了来自客户端进程的示例请求消息和来自同步服务器的答复消息。用户已进行了以下修改:(1)改变了“Homer Simpson”联系人的公司名称;以及(2)从同一记录中去除了电话号码。这些改变将导致以下的记录改变:(1)一个记录删除(电话号码);以及(2)一个记录修改(“Homer Simpson”联系人)。
图6示出了客户端进程与同步服务器同步的示例过程600。出于举例说明的目的,联系作为客户端应用的Java SDK来描述过程600。用户利用诸如web应用之类的客户端进程(例如客户端进程120)发起会话以与同步服务器(例如同步服务器110)通信(610)。代表用户,web应用建立数据存储库(例如数据情境)作为Java SDK的一部分(620)。数据情境包括每个数据类的存储库对象,比如地址簿的存储库,其例如与联系人数据类相关联。随着存储库对象被创建,Java SDK向同步服务器发送HEAD调用以注册此客户端进程并获得最新的同步锚(630)。HEAD调用包含客户端标识和其他HTTP头部。如上所述,客户端标识是由web应用生成的随机GUID。
当同步服务器接收到HEAD请求时,同步服务器为该客户端确定最新的同步锚并且将其发送回web应用(640)。至此在客户端进程与同步服务器之间尚未来回发送数据(用于添加、删除、更新)。只在客户端进程与同步服务器之间建立了通信链路。客户端进程判定向同步服务器放上多少数据(或从同步服务器拉出多少数据)。客户端进程可在GET调用中标识要访问的实体类型(650)。例如,在地址簿应用中,在启动时,只下载名和姓。从而,只下载了主联系人记录,而没有下载子成分,比如电子邮件地址和街道地址等等。这是因为这就是客户端进程显示联系人的初始视图所需要全部信息。这是一个GET请求,并且在单个GET请求的URL和可选参数中,标识要访问的实体类型。响应于GET请求,同步服务器在响应消息中发送回那些所标识的记录(660)。客户端进程以与客户端进程相容的格式取回记录。例如,数据在被发送到web浏览器时可以采取JavaScript Object Notation(JSON)。
Java SDK在内部缓存中维护数据情境,并且GET请求中标识的记录被缓存在Java SDK的数据情境中。这使得Java SDK能够充当客户端进程与同步服务器之间的中间层缓存。
当用户修改记录时,例如修改一条目的姓时,该改变被从客户端进程发送回Java SDK。Java SDK在缓存中有被修改的记录并且调用SDK方法之一(例如PUT)来更新该姓(670)。Java SDK按其GUID来查找联系人(该GUID也是由客户端进程发送的),随后利用当前值调用“contacts.lastname”记录元素。在Java SDK内,这生成了正确的记录改变,并且当客户端进程调用对存储的对象的同步时,与同步服务器之间的PUT调用被发起。当客户端完成时,Java SDK向同步服务器发送DELETE调用以解除对客户端进程的注册并且停止通知(680)。同步会话在此时终止。
本说明书中描述的主题和功能操作的实施例可以用数字电子电路来实现,或者用计算机软件、固件或硬件来实现,其中包括本说明书中公开的结构及其结构等同物,或者用它们之中的一个或多个的组合来实现。本说明书中描述的主题的实施例可实现为一个或多个计算机程序产品,即编码在有形程序载体上供数据处理装置执行或控制数据处理装置的操作的计算机程序指令的一个或多个模块。有形程序载体可以是传播的信号或计算机可读介质。传播的信号是人工生成的信号,例如机器生成的电信号、光信号或电磁信号,其被生成来编码用于传输到适当的接收机装置以供计算机执行的信息。计算机可读介质可以是机器可读存储设备、机器可读存储基板、存储器设备、实现机器可读传播信号的物质组合、或者它们之中的一个或多个的组合。
术语“数据处理装置”涵盖用于处理数据的所有装置、设备和机器,例如包括可编程处理器、计算机或多个处理器或计算机。该装置除了硬件以外还可包括为所关注的计算机程序创建执行环境的代码,例如构成处理器固件、协议栈、数据库管理系统、操作系统或它们之中的一个或多个的组合的代码。
计算机程序(也称为程序、软件、软件应用、脚本或代码)可以用包括编译或解释语言或者陈述或过程语言在内的任何形式的编程语言来写成,并且可以部署成任何形式,包括部署为独立的程序或部署为适合用于计算环境中的模块、组件、子例程或其他单元。计算机程序不一定对应于文件系统中的一个文件。程序可被存储在保存其他程序或数据的文件的一部分中(例如,一个或多个脚本被存储在标记语言文档中)、存储在专用于所关注的程序的单个文件中、或者存储在多个协同的文件中(例如存储一个或多个模块、子程序或代码部分的文件)。计算机程序可被部署为在一个计算机上执行或在多个计算机上执行,所述多个计算机位于一个地点或者分布在多个地点并通过通信网络互连。
本说明书中描述的过程和逻辑流程可由一个或多个可编程处理器执行,所述一个或多个可编程处理器执行一个或多个计算机程序以通过对输入数据进行操作并生成输出来执行功能。这些过程和逻辑流程也可由专用逻辑电路来执行,并且装置也可以实现为专用逻辑电路,专用逻辑电路例如是FPGA(现场可编程门阵列)或ASIC(专用集成电路)。
适用于执行计算机程序的处理器例如包括通用和专用微处理器,以及任何种类的数字计算机的任何一个或多个处理器。一般地,处理器将从只读存储器或随机访问存储器或两者接收指令和数据。计算机的基本元件是用于执行指令的处理器和用于存储指令和数据的一个或多个存储器设备。一般地,计算机还将包括用于存储数据的一个或多个大容量存储设备,或者被可操作地耦合以从这些大容量存储设备接收数据或向这些大容量存储设备传送数据,或者上述两种情况兼有,大容量存储设备例如是磁盘、磁光盘或光盘。然而,计算机不是一定要具有这种设备。另外,计算机可被嵌入在另一设备中。
适用于存储计算机程序指令和数据的计算机可读介质包括所有形式的非易失性存储器、介质和存储器设备,其中例如包括:半导体存储器设备,例如EPROM、EEPROM和闪存设备;磁盘,例如内部硬盘或可移除盘;磁光盘;以及CD ROM和DVD-ROM盘。处理器和存储器可被专用逻辑电路所补充或被结合在专用逻辑电路中。
为了提供与用户的交互,本说明书中描述的主题的实施例可以在具有用于向用户显示信息的显示设备以及用户可用来向计算机提供输入的键盘和指点设备的计算机上实现,所述显示设备例如是CRT(阴极射线管)或LCD(液晶显示器)监视器,所述指点设备例如是鼠标或轨迹球。其他种类的设备也可用于提供与用户的交互;例如,来自用户的输入可以以任何形式被接收,包括声音、话音或触觉输入。
本说明书中描述的主题的实施例可以在如下计算系统中实现:该计算系统包括后端组件(例如作为数据服务器),或者包括中间件组件(例如应用服务器),或者包括前端组件(例如具有图形用户界面或Web浏览器的客户端计算机,通过该图形用户界面或Web浏览器,用户可以与本说明书中描述的主题的实现相交互),或者一个或多个这种后端、中间件或前端组件的任何组合。该系统的组件可以由任何形式或介质的数字数据通信(例如通信网络)来互连。通信网络的示例包括局域网(“LAN”)和广域网(“WAN”),例如因特网。
计算系统可包括客户端和服务器。客户端和服务器一般相互远离并且通常通过通信网络来交互。客户端和服务器的关系是由于在各个计算机上运行并且相互之间具有客户端-服务器关系的计算机程序而产生的。
虽然本说明书包含许多细节,但这些细节不应当被解释为对任何发明的范围或可以要求保护的范围的限制,而应当被解释为对可以依特定发明的特定实施例而定的特征的描述。本说明书中在分开的实施例的上下文中描述的某些特征也可在单个实施例中组合实现。相反,在单个实施例的上下文中描述的各种特征也可分开在多个实施例中实现或者按任何适当的子组合实现。另外,虽然特征在上文中可被描述为按某些组合来动作并且甚至最初在权利要求中也是如此记载的,但来自要求保护的组合的一个或多个特征在一些情况下可以脱离该组合,并且要求保护的组合可以指向子组合或子组合的变体。
类似地,虽然操作在附图中是以特定顺序示出的,但这不应当被理解为为了实现期望的结果而要求这种操作按所示出的特定顺序或者按前后顺序来执行或者要求所有图示出的操作都被执行。在某些情况下,多任务和并行处理可能是有利的。另外,以上所述的实施例中的各种系统组件的分离不应当被理解为在所有实施例中都要求这种分离,而应当理解为所描述的程序组件和系统一般可一起被集成在单个软件产品中或被封装到多个软件产品中。
只描述了几个实现方式和示例,基于说明书中描述和图示的内容,可以做出其他实现方式、增强和变体。
Claims (30)
1.一种用于点滴式同步的系统,包括:
被配置为存储一个或多个数据记录的数据仓库;
与所述数据仓库通信的服务器,其中所述服务器被配置为响应于对执行以下各项中的至少一个的同步请求而访问所述数据仓库:
访问所述一个或多个数据记录,
添加所述一个或多个数据记录到数据仓库,以及
修改所述一个或多个数据记录;以及
与所述服务器通信的包括协议库的客户端应用,该客户端应用被配置为:
通过客户端进程接收所述同步请求,
使用提供所述客户端进程与所述服务器之间的通信的表示性状态传送(REST)协议封装所述同步请求,
利用REST协议将所封装的同步请求转发到所述服务器,以及
判定数据仓库中的数据记录是否已被另一客户端进程改变,并且基于所述判定的结果更新存储的缓存。
2.如权利要求1所述的系统,其中,所述客户端应用包括Java应用。
3.如权利要求1所述的系统,其中,所述客户端应用被嵌入在所述客户端进程内。
4.如权利要求1所述的系统,其中,所述客户端应用被配置为作为服务器方进程工作。
5.如权利要求1所述的系统,其中,所述客户端应用被配置为通过包括web浏览器的所述客户端进程来接收所述同步请求。
6.如权利要求1所述的系统,其中,封装同步请求使得所述客户端进程能够在不知道所述协议的细节的情况下与所述服务器通信。
7.如权利要求1所述的系统,其中,封装同步请求使得所述服务器将所述客户端进程识别为受信任的客户端,其中所述服务器假定所述受信任的客户端提供的数据的正确性。
8.如权利要求1所述的系统,其中,所述服务器被配置为响应于所转发的请求:
访问所述数据仓库;
从所述一个或多个数据记录中获得在所转发的请求中标识的数据;以及
在答复消息中将所获得的在所转发的请求中标识的数据转发到所述客户端应用。
9.如权利要求8所述的系统,其中,所述客户端应用包括用于临时存储在来自所述服务器的所述答复消息中接收的数据的缓存。
10.如权利要求9所述的系统,其中,所述客户端应用被配置为:
通过所述客户端进程接收另一请求;
检测临时存储的数据是否有效;以及
当检测到临时存储的数据有效时,访问临时存储的数据,而不是将所接收的另一请求转发到所述服务器。
11.一种用于点滴式同步的方法,包括:
在数据处理装置处,执行以下步骤:
从客户端进程接收对执行同步操作的请求,该同步操作包括以下各项中的至少一个:
访问数据仓库处存储的一个或多个数据记录,
向所述数据仓库添加一个或多个数据记录,以及
修改所述数据仓库处存储的所述一个或多个数据记录;
使用用于将所接收的同步操作请求传输到服务器的表示性状态传送(REST)协议封装所接收到的请求;
利用REST协议将经封装的所接收的请求传输到所述服务器以指示所述服务器访问所述数据仓库以执行所请求的同步操作;以及
判定数据仓库中的数据记录是否已被另一客户端进程改变,并且基于所述判定的结果更新存储的缓存。
12.如权利要求11所述的方法,其中,接收所述请求的步骤包括利用包括Java应用的客户端应用在所述数据处理装置处接收所述请求。
13.如权利要求12所述的方法,其中,所述客户端应用被嵌入在客户端进程内。
14.如权利要求11所述的方法,其中,所述数据处理装置包括另一服务器。
15.如权利要求12所述的方法,其中,所述客户端应用被嵌入在web浏览器中。
16.如权利要求12所述的方法,其中,所述客户端应用包括协议库,用以将所述协议与所述协议的功能一起封装。
17.如权利要求11所述的方法,其中,封装所述协议的步骤包括封装所述协议以保证提供给所述服务器的数据的正确性。
18.如权利要求11所述的方法,还包括:
在所述数据处理装置处,响应于将经封装的所接收的请求传输到所述服务器,获得与在所述数据仓库中存储的所述一个或多个数据记录相关联的经封装的所接收的请求中标识的数据。
19.如权利要求18所述的方法,还包括:
临时存储所获得的数据。
20.如权利要求19所述的方法,还包括:
在所述数据处理装置处:
接收另一请求;
检测临时存储的数据是否有效;以及
当检测到临时存储的数据有效时,访问临时存储的数据,而不是将所接收的另一请求转发到所述服务器。
21.一种用于点滴式同步的系统,包括:
用于从客户端进程接收对执行同步操作的请求的装置,该同步操作包括以下各项中的至少一个:
访问数据仓库中存储的一个或多个数据记录,
向所述数据仓库添加一个或多个数据记录,以及
修改所述数据仓库中存储的所述一个或多个数据记录;
用于使用用于将所接收的同步操作请求传输到服务器的表示性状态传送(REST)协议封装所接收到的请求的装置;以及
用于利用REST协议将经封装的所接收的请求传输到所述服务器以指示所述服务器访问所述数据仓库以执行所请求的同步操作的装置;以及
用于判定数据仓库中的数据记录是否已被另一客户端进程改变,并且基于所述判定的结果更新存储的缓存的装置。
22.如权利要求21所述的系统,其中,所述请求是利用包括Java应用的客户端应用接收的。
23.如权利要求22所述的系统,其中,所述客户端应用被嵌入在客户端进程内。
24.如权利要求21所述的系统,其中,所述请求是通过另一服务器接收的。
25.如权利要求22所述的系统,其中,所述客户端应用被嵌入在web浏览器中。
26.如权利要求22所述的系统,其中,客户端应用包括协议库来将所述协议与所述协议的功能一起封装。
27.如权利要求21所述的系统,其中,所述协议被封装以保证提供给所述服务器的数据的正确性。
28.如权利要求21所述的系统,还包括用于响应于将经封装的所接收的请求传输到所述服务器,获得与在所访问的数据仓库中存储的所述一个或多个数据记录相关联的经封装的所接收的请求中标识的数据的装置。
29.如权利要求28所述的系统,还包括用于临时存储所获得的数据的装置。
30.如权利要求29所述的系统,还包括:
用于接收另一请求的装置;
用于检测临时存储的数据是否有效的装置;以及
用于当检测到临时存储的数据有效时,访问临时存储的数据,而不是将所接收的另一请求转发到所述服务器的装置。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/240,538 | 2008-09-29 | ||
US12/240,538 US8112537B2 (en) | 2008-09-29 | 2008-09-29 | Trickle sync protocol |
PCT/US2009/058414 WO2010036916A1 (en) | 2008-09-29 | 2009-09-25 | Trickle sync protocol |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102227901A CN102227901A (zh) | 2011-10-26 |
CN102227901B true CN102227901B (zh) | 2014-05-07 |
Family
ID=41650137
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200980147907.8A Active CN102227901B (zh) | 2008-09-29 | 2009-09-25 | 点滴式同步协议 |
Country Status (5)
Country | Link |
---|---|
US (1) | US8112537B2 (zh) |
EP (1) | EP2180663B1 (zh) |
CN (1) | CN102227901B (zh) |
AU (1) | AU2009296436B2 (zh) |
WO (1) | WO2010036916A1 (zh) |
Families Citing this family (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9781071B2 (en) * | 2006-06-28 | 2017-10-03 | Nokia Technologies Oy | Method, apparatus and computer program product for providing automatic delivery of information to a terminal |
US20100268784A1 (en) * | 2009-04-17 | 2010-10-21 | Marc Henness | Data synchronization system and method |
US9201905B1 (en) * | 2010-01-14 | 2015-12-01 | The Boeing Company | Semantically mediated access to knowledge |
WO2011114720A1 (ja) * | 2010-03-17 | 2011-09-22 | 株式会社日立製作所 | 計算機システム、記録媒体及び保守支援システム |
CN103392170B (zh) * | 2011-02-24 | 2016-10-12 | 国际商业机器公司 | 系统之间的数据同步 |
US9208201B2 (en) * | 2011-06-03 | 2015-12-08 | Apple Inc. | Cloud storage |
US9626656B2 (en) * | 2011-08-22 | 2017-04-18 | Facebook, Inc. | Dialer with real-time reverse look-up including social data |
US9535755B2 (en) * | 2012-03-09 | 2017-01-03 | Google Inc. | Tiers of data storage for web applications and browser extensions |
US9268833B2 (en) | 2012-12-05 | 2016-02-23 | Microsoft Technology Licensing, Llc | Recurring calendar item master and instance synchronization |
US9954827B2 (en) * | 2014-11-03 | 2018-04-24 | Mobileframe, Llc | Invisible two-factor authentication |
US9992258B2 (en) * | 2015-01-13 | 2018-06-05 | Whatsapp Inc. | Techniques for managing a remote web client from an application on a mobile device |
US10003563B2 (en) | 2015-05-26 | 2018-06-19 | Facebook, Inc. | Integrated telephone applications on online social networks |
US10440106B2 (en) | 2015-09-14 | 2019-10-08 | Microsoft Technology Licensing, Llc | Hosted file sync with stateless sync nodes |
CN106921734B (zh) * | 2017-02-13 | 2020-04-03 | 上海大学 | 一种基于选择性缓存与同步的客户端与服务器数据交互方法 |
KR101999314B1 (ko) * | 2017-07-06 | 2019-07-12 | 한국전력공사 | 검침 데이터 수집 시스템, 방법, 및 이를 저장한 기록 매체 |
US10216508B1 (en) * | 2018-01-05 | 2019-02-26 | Bank Of America Corporation | System and method for configurable services platform |
US10812102B2 (en) * | 2018-06-29 | 2020-10-20 | Apple Inc. | Efficient data encoding |
US11322236B1 (en) | 2019-04-03 | 2022-05-03 | Precis, Llc | Data abstraction system architecture not requiring interoperability between data providers |
US11363090B2 (en) * | 2019-11-25 | 2022-06-14 | Citrix Systems, Inc. | Integrating web applications with local client applications in multi-user client environment |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1407454A (zh) * | 2001-08-14 | 2003-04-02 | 微软公司 | 使多个移动装置同步的方法和系统 |
CN101155022A (zh) * | 2006-09-30 | 2008-04-02 | 华为技术有限公司 | 数据同步方法、系统和装置 |
Family Cites Families (40)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6173335B1 (en) * | 1993-07-30 | 2001-01-09 | Apple Computer, Inc. | Structure and protocol for routing information in a system |
US5684984A (en) * | 1994-09-29 | 1997-11-04 | Apple Computer, Inc. | Synchronization and replication of object databases |
US5706509A (en) * | 1995-04-28 | 1998-01-06 | Intel Corporation | Application independent record level synchronization |
US5728335A (en) * | 1996-06-26 | 1998-03-17 | Union Carbide Chemicals & Plastics Technology Corporation | Process for extrusion |
US5884325A (en) * | 1996-10-09 | 1999-03-16 | Oracle Corporation | System for synchronizing shared data between computers |
US6182141B1 (en) * | 1996-12-20 | 2001-01-30 | Intel Corporation | Transparent proxy server |
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 |
US5987376A (en) * | 1997-07-16 | 1999-11-16 | Microsoft Corporation | System and method for the distribution and synchronization of data and state information between clients in a distributed processing system |
US6341291B1 (en) * | 1998-09-28 | 2002-01-22 | Bentley Systems, Inc. | System for collaborative engineering using component and file-oriented tools |
US6477543B1 (en) | 1998-10-23 | 2002-11-05 | International Business Machines Corporation | Method, apparatus and program storage device for a client and adaptive synchronization and transformation server |
US6247135B1 (en) * | 1999-03-03 | 2001-06-12 | Starfish Software, Inc. | Synchronization process negotiation for computing devices |
US6430576B1 (en) * | 1999-05-10 | 2002-08-06 | Patrick Gates | Distributing and synchronizing objects |
US6823456B1 (en) * | 1999-08-25 | 2004-11-23 | International Business Machines Corporation | System and method for providing trusted services via trusted server agents |
US6694336B1 (en) * | 2000-01-25 | 2004-02-17 | Fusionone, Inc. | Data transfer and synchronization system |
US20050055382A1 (en) * | 2000-06-28 | 2005-03-10 | Lounas Ferrat | Universal synchronization |
US20020026474A1 (en) * | 2000-08-28 | 2002-02-28 | Wang Lawrence C. | Thin client for wireless device using java interface |
US7177866B2 (en) * | 2001-03-16 | 2007-02-13 | Gravic, Inc. | Asynchronous coordinated commit replication and dual write with replication transmission and locking of target database on updates only |
US7035847B2 (en) * | 2001-03-16 | 2006-04-25 | Novell, Inc. | Server for synchronization of files |
US6829655B1 (en) * | 2001-03-28 | 2004-12-07 | Siebel Systems, Inc. | Method and system for server synchronization with a computing device via a companion device |
US6970876B2 (en) * | 2001-05-08 | 2005-11-29 | Solid Information Technology | Method and arrangement for the management of database schemas |
US7761535B2 (en) * | 2001-09-28 | 2010-07-20 | Siebel Systems, Inc. | Method and system for server synchronization with a computing device |
US6983293B2 (en) * | 2002-07-24 | 2006-01-03 | International Business Machines Corporation | Mid-tier-based conflict resolution method and system usable for message synchronization and replication |
US7359991B2 (en) * | 2002-11-05 | 2008-04-15 | Microsoft Corporation | Folder synchronization |
US20060259524A1 (en) * | 2003-03-17 | 2006-11-16 | Horton D T | Systems and methods for document project management, conversion, and filing |
US7080104B2 (en) * | 2003-11-07 | 2006-07-18 | Plaxo, Inc. | Synchronization and merge engines |
KR100547896B1 (ko) * | 2004-03-05 | 2006-01-31 | 삼성전자주식회사 | 데이터 동기화 시스템 및 서버와 클라이언트의 데이터동기화 방법 |
AU2005248741B2 (en) | 2004-05-24 | 2011-03-24 | Apple Inc. | Methods for sharing groups of objects, synchronising, and synchronising between three or more devices |
US20060123010A1 (en) * | 2004-09-15 | 2006-06-08 | John Landry | System and method for managing data in a distributed computer system |
CN1753359B (zh) * | 2004-09-24 | 2011-01-19 | 华为技术有限公司 | 实现传输SyncML同步数据的方法 |
US8069226B2 (en) * | 2004-09-30 | 2011-11-29 | Citrix Systems, Inc. | System and method for data synchronization over a network using a presentation level protocol |
US8230326B2 (en) * | 2004-12-17 | 2012-07-24 | International Business Machines Corporation | Method for associating annotations with document families |
US9020887B2 (en) * | 2004-12-21 | 2015-04-28 | Proofpoint, Inc. | Managing the status of documents in a distributed storage system |
US7908247B2 (en) | 2004-12-21 | 2011-03-15 | Nextpage, Inc. | Storage-and transport-independent collaborative document-management system |
NO20052719D0 (no) | 2005-06-06 | 2005-06-06 | Ericsson Telefon Ab L M | Synkronisering av informasjonsenheter med tilhorende referanser |
US7756829B2 (en) * | 2006-04-18 | 2010-07-13 | Sandeep Bhanote | Method and apparatus for mobile data collection and management |
US8108388B2 (en) * | 2006-04-26 | 2012-01-31 | Microsoft Corporation | Significant change search alerts |
US8009742B2 (en) * | 2006-09-12 | 2011-08-30 | Samsung Electronics Co., Ltd. | Method and system for retransmitting internet protocol packet for terrestrial digital multimedia broadcasting service |
US20080155112A1 (en) * | 2006-12-22 | 2008-06-26 | Nokia Corporation | System and method for updating information feeds |
US9135321B2 (en) * | 2008-02-06 | 2015-09-15 | Microsoft Technology Licensing, Llc | Synchronization infrastructure for networked devices, applications and services in a loosely coupled multi-master synchronization environment |
US7747784B2 (en) * | 2008-03-04 | 2010-06-29 | Apple Inc. | Data synchronization protocol |
-
2008
- 2008-09-29 US US12/240,538 patent/US8112537B2/en not_active Expired - Fee Related
-
2009
- 2009-09-25 EP EP09171413.9A patent/EP2180663B1/en not_active Not-in-force
- 2009-09-25 WO PCT/US2009/058414 patent/WO2010036916A1/en active Application Filing
- 2009-09-25 AU AU2009296436A patent/AU2009296436B2/en not_active Ceased
- 2009-09-25 CN CN200980147907.8A patent/CN102227901B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1407454A (zh) * | 2001-08-14 | 2003-04-02 | 微软公司 | 使多个移动装置同步的方法和系统 |
CN101155022A (zh) * | 2006-09-30 | 2008-04-02 | 华为技术有限公司 | 数据同步方法、系统和装置 |
Also Published As
Publication number | Publication date |
---|---|
EP2180663A1 (en) | 2010-04-28 |
US20100082732A1 (en) | 2010-04-01 |
US8112537B2 (en) | 2012-02-07 |
AU2009296436A1 (en) | 2010-04-01 |
EP2180663B1 (en) | 2016-01-06 |
AU2009296436B2 (en) | 2014-07-03 |
CN102227901A (zh) | 2011-10-26 |
WO2010036916A1 (en) | 2010-04-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102227901B (zh) | 点滴式同步协议 | |
US8312451B2 (en) | Computing system for providing software components on demand to a mobile device | |
AU2005246392B2 (en) | Occasionally-connected application server | |
US7331035B2 (en) | System and method for mobile software application development and deployment | |
US8023934B2 (en) | Synchronizing communications and data between mobile devices and servers | |
US9591428B2 (en) | Method, software and apparatus for performing actions on a wireless device using action lists and versioning | |
CN104094234A (zh) | 用于嵌入过程通信的虚拟通道 | |
US20120239620A1 (en) | Method and system for synchronization mechanism on multi-server reservation system | |
CN102970284B (zh) | 用户信息处理方法和服务器 | |
JP4351636B2 (ja) | 同期方法 | |
US20060173951A1 (en) | System and method for transfer, control, and synchronization of data | |
CN102355500B (zh) | 业务推送方法和装置 | |
CN102893272B (zh) | 对象的共享和同步 | |
CN102223736B (zh) | 与使用多模式应用的多模式设备进行通信的服务器 | |
US8478772B2 (en) | On-device database service for mobile device | |
CN111818179A (zh) | 用户请求的处理方法、装置、计算设备和介质 | |
CN112565340A (zh) | 分布式应用的服务调度方法、装置、计算机系统及介质 | |
CN102137058B (zh) | 一种基于tab页的页面访问方法和装置 | |
CN103701844A (zh) | 管理用户信息的方法及系统 | |
US20240320653A1 (en) | Integrating extensions and customizations on blockchain wallets | |
Heckman | Designing platform independent mobile apps and services | |
CN114428930A (zh) | 基于h5页面的数据预加载方法、装置及电子设备 | |
CN118312686A (zh) | 基于微前端的访问响应方法和装置、电子设备及存储介质 | |
CN116820613A (zh) | 安卓移动端动态更新h5模块、交互方法、设备及存储介质 | |
CN113220336A (zh) | 代码处理方法、装置、介质及电子设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |