CN101601027B - 用于偶尔连接的应用程序的同步框架 - Google Patents

用于偶尔连接的应用程序的同步框架 Download PDF

Info

Publication number
CN101601027B
CN101601027B CN2008800038603A CN200880003860A CN101601027B CN 101601027 B CN101601027 B CN 101601027B CN 2008800038603 A CN2008800038603 A CN 2008800038603A CN 200880003860 A CN200880003860 A CN 200880003860A CN 101601027 B CN101601027 B CN 101601027B
Authority
CN
China
Prior art keywords
server
sync
client
assembly
supplier
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.)
Expired - Fee Related
Application number
CN2008800038603A
Other languages
English (en)
Other versions
CN101601027A (zh
Inventor
S·A·齐特
S·M·拉斯克
R·罗贝尔
Y·陈
V·K·T·西斯特拉
P·A·瓦格恩
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Corp
Original Assignee
Microsoft Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of CN101601027A publication Critical patent/CN101601027A/zh
Application granted granted Critical
Publication of CN101601027B publication Critical patent/CN101601027B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1095Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Information Transfer Between Computers (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Telephonic Communication Services (AREA)
  • Mobile Radio Communication Systems (AREA)
  • Synchronisation In Digital Transmission Systems (AREA)

Abstract

本发明提供了用于在服务器和可离线的客户机之间同步数据组的同步框架。该框架包括以存储格式无关的方式接口到客户机存储的客户机同步提供者组件、收集客户机所维护的同步元数据并向服务器存储上传和/或从中下载对数据组的变更的同步代理程序组件、以及独立于存储格式经由同步适配器接口到服务器存储的服务器同步提供者组件。该框架提供用于构建根据默认应用程序同步场景来表现的离线同步应用程序的默认构件块,并且还允许用于自定义离线应用程序同步场景的自定义构件块。

Description

用于偶尔连接的应用程序的同步框架
技术领域
本发明涉及用于在客户机可无限期地中断与服务器的联系的情况下在客户机和服务器数据存储之间同步数据的同步框架,例如用于离线应用程序的同步框架。
背景
常规上,从同步观点来看,在客户机和服务器之间已经实现了固定关系,并且所以数据同步是在客户机和服务器之间硬连线且专用的,结果限制了灵活性和可伸缩性。另外,在客户机由于网络不可用性、断电、或某一其它原因而可能从服务器断开连接的情况下,还应当有一种方式来继续进行而不管该断开连接,即在客户机应用程序从主服务器离线时。当今,如在单个客户机和服务器之间一样,该离线行为或者是不可用的或者是固定的,即根据在灵活性和可伸缩性上也具有限制的静态行为来执行。
此外,常规上,这些或是离线或是在线的专用同步关系都遭受着在根据固定的或严格的同步框架传递同步数据时所维护和利用的同步数据类型的复杂度,这些同步框架通常依赖于存储中存在的特定数据库格式,从而导致同步不兼容问题。更为复杂的是,在允许多个客户机进入和退出与服务器的联系时,保证适当的同步和复制变得尤其复杂,通常对维护与所有客户机的同步关系的服务器造成过大的成本。
一般而言,偶尔连接的应用程序被定义为连接到诸如数据库、web服务等远程数据源来读/写该应用程序的运作所需的数据的应用程序。另外,这些应用程序具有即使它们离线,即未连接到远程数据源也继续无缝地工作的要求。离线工作的原因可以是网络的不可用性或为了更好的数据访问性能。
用于构建同步关系数据的应用程序的现有系统包括远程数据访问(RDA)、合并复制(Merge Replication)和ADO.NET数据集。然而,RDA和合并复制提供端对端解决方案而非构件块,并被绑定到服务器和客户机两侧的数据存储格式。对于现有系统上的限制的另一示例,RDA只可以在客户机是微软的SQL Server紧凑版并且服务器是微软SQL Server时使用。另外,尽管ADO.NET断开连接数据集未绑定到存储,但它们具有其它限制,如它们要求整个加载到存储器中、没有从服务器下载增量变更的任何能力。
因此,现有解决方案处于该领域的相对端。在一端处,像RDA和ADO.NET等解决方案是简单的,但它们具有很有限的特征,例如,它们不支持下载增量数据。就此,对于每一同步,从服务器向客户机发送所有数据尤其在慢链路上是昂贵的。RDA还要求客户机数据库是SQL客户机并且数据集未被客户机数据库备份,所以它们缺少对高速缓存的有效查询能力。而在该领域的另一端,像合并复制等解决方案尽管提供诸如动态过滤和逻辑记录等丰富的特征,但过于复杂和严格,从而向开发者提供很小的灵活性来定制解决方案以满足其自身的需求。对于向合并等解决方案,开发者要么得到所有要么一无所获。因此,需要可通用的同步框架,其包括用于构建适合被部署的应用程序的功能和上下文的定制的同步应用程序的构件块。
当今,就任何系统尝试解决对多个客户机的同步而言,解决方案限于将数据库信息的整个集合复制到所有客户机,并且没有选择性地同步该数据库信息的一个或多个子集的方式,例如在客户机可能想要只与相关数据的一小部分进行同步的情况下。例如,客户机可能想要只检索上个月的电子邮件,而非整个电子邮件数据库文件,但目前,没有在不重新配置同步来以新的静态方式同步另一数据集的情况下任意地或动态地限制或过滤在客户机和服务器之间同步的数据的方式。
因此,为从服务器向若干客户机或以相反方向同步数据存储中的数据,更新或变更的同步和复制必须在各设备之间发生。因此,所需的是解决以上所标识的服务器和松耦合客户机之间的数据同步和复制的现有技术中的每一个问题的同步框架。例如,通过实现能够与开发者已经熟悉的概念和数据类型一起工作并对其进行处理的组件而使其对应用程序开发者变得简单的框架是合乎需要的。另外,需要这样一种同步框架:其允许在各种松耦合设备进入和退出与该服务器的联系时,用于这些设备的高度可伸缩服务器,并且其独立于数据库格式来操作。
因此,考虑到服务器和松耦合客户机之间的数据同步的现有技术不够完善,期望为服务器和客户机提供一种改进的同步框架。松耦合设备的上下文中的现有同步技术中的这些和其它缺陷在描述了将在以下更详细地阐述的本发明的各示例性、非限制性实施例后将变得显而易见。
概述
本发明提供一种用于在服务器和可离线的客户机之间同步数据组的同步框架。该框架包括以存储格式无关的方式接口到客户机存储的客户机同步提供者组件、收集客户机所维护的同步元数据并向服务器存储上传和/或从中下载对数据组的变更的同步代理程序组件、以及独立于存储格式经由同步适配器接口到服务器存储的服务器同步提供者组件。该框架提供用于构建根据默认应用程序同步场景来表现的离线同步应用程序的默认构件块,并且还允许用于自定义离线应用程序同步场景的自定义构件块。
此处提供了简化概述以帮助能够对以下更详细的描述和附图中的示例性、非限制性实施例的各方面有基本或大体的理解。然而,本概述并不旨在作为详尽的或穷尽的概观。相反,本概述的唯一目的是以简化的形式来介绍与本发明的某些示例性非限制性实施例相关的一些概念,作为以下本发明的各实施例的更为详细的描述的序言。
附图简述
参考附图进一步描述本发明的同步框架,在附图中:
图1A和1B是根据本发明的用于与离线应用程序同步的框架体系结构的框图;
图2A、2B、2C和2D是作为本发明的框架的一部分来提供的各构件块的非限制性实现的框图;
图3A、3B、3C和3D是示出根据本发明的框架的各同步场景的示例性、非限制性实现的流程图;
图4和图5示出根据本发明的框架的在没有关于客户机或服务器侧存储结构的先验知识的情况下在客户机和服务器之间来回传递数据结构的示例性、非限制性数据集实现;
图6示出本发明的同步框架对于例如作为辐射同步模型的一部分的许多客户机的可伸缩性;
图7A和7B是实现本发明的分别从客户机和服务器的观点来看的用于同步的示例性、非限制性过程的流程图;
图8是示出本发明的可扩展同步锚模型的各示例性方面的框图;
图9是表示其中可实现本发明的示例性、非限制性网络化环境的框图;以及
图10是表示其中可实现本发明的示例性、非限制性计算系统或操作环境的框图。
详细描述
概观
如在背景中所讨论的,现有同步解决方案实现过度复杂的对象模型,过于紧耦合以至于无法用于离线应用程序,并且其可伸缩性由于服务器开销而受到限制。因此,考虑到现有技术中的这些缺陷,本发明提供了供在服务器和松耦合客户机的上下文中使用的同步框架及相应方法。
如上所述,偶尔连接的应用程序被定义为连接到诸如数据库、web服务等远程数据源来读/写该应用程序的运作所需的数据的应用程序。另外,这些应用程序具有即使它们离线,即未连接到远程数据源也继续无缝地工作的要求。离线工作的原因可以是网络的不可用性或为了更好的数据访问性能。
根据本发明的各非限制性实施例,向偶尔连接的应用程序提供在其离线时保持该数据的数据高速缓存和在网络可用时将该高速缓存与远程存储进行同步的机制。如在背景中所讨论的,当今存在的任何解决方案都不适用于构建自定义同步应用程序。因此,本发明提供了一种包括用于为各种客户机/服务器同步场景构建定制的同步应用程序的构件块的同步框架。
在以下更详细地描述的各非限制性实施例中,本发明为开发者提供了构建偶尔连接的应用程序的一组构件块。该框架包括非常快速地构建简单同步解决方案的组件,同时还具有使用这些构件块来构建复杂解决方案的完全灵活性。
如以下详细描述的,以下是因该框架而变得可能的场景的示例性、非限制性列表:(A)客户机上的数据的只读高速缓存,即快照同步,(B)带有保持高速缓存最新的增量同步的客户机上的数据的只读高速缓存,即增量下载同步,(C)从客户机到服务器的存储和转发能力,即只上传同步,(D)对客户机上的数据的读写高速缓存,即双向同步,其具有支持对多个客户机变更同一数据的冲突检测和解决的框架,(E)在不需要在服务器侧进行任何供应的情况下与预先存在的服务器同步,(F)与例如SQL、Oracle等异构服务器同步,(G)与自定义的启用因特网的服务同步,(H)插入例如SQLServer紧凑版、SQL Express等不同的客户机存储的能力,(I)在客户机和服务器之间插入自定义传输的能力,以及(J)在存储上插入自定义变更跟踪的能力。
用于离线应用程序的同步框架
根据本发明提供了可被用来开发和支持离线应用程序的同步框架。用于同步离线应用程序的数据的同步框架的概览在图1A和图1B的示例性、非限制性框图中示出。
如在图1A的框图中概括所示,提供了用于在客户机应用程序可断开连接的场景中同步服务器数据库190的数据和客户机数据库110的数据的同步框架SyncFW。在客户机侧,在框架中提供了组件125,其指定如何发送/接收客户机侧同步数据并使得通信独立于客户机数据库110的格式。例如,组件125可以插入不同的客户机存储中(例如SQL Server紧凑版、SQLExpress等)。
在服务器侧,提供了组件155,其指定如何发送/接收服务器侧同步数据并且也独立于服务器数据库190的格式来通信,从而启用与例如SQL、Oracle等异构服务器同步的能力。
有利的是,客户机和服务器之间的同步数据的编制(orchestration)145以传输无关的方式来处理,即无论web服务、RSS等,数据都可以在不考虑数据在组件125和组件155之间是如何包装的情况下处理。在一个非限制性实施例中,数据在客户机应用程序和自定义设计的web服务之间同步。有利的是,本发明因而包括在客户机和服务器之间插入自定义传输的能力,并且因而本发明的框架的客户机和服务器之间的通信不限于任何特定传输手段。
图1B描绘根据本发明的同步框架和体系结构的各组件的更详细的视图。在客户机侧,该同步框架由同步代理程序组件130来编制。就此,注意,本发明的同步框架所实现的同步协议是传输不可知的。因此,图1B仅描绘了使用web服务150的一个可能的传输实现,但可以替换地是RSS和连网领域普通技术人员公知的其它传输机制。
位于客户机侧的同步代理程序130是核心同步引擎并实现用于以下各动作的逻辑:(A)从客户机和服务器数据库收集元数据,(B)向服务器数据库上传变更和从中将变更下载到客户机提供者120,或(C)向客户机应用程序传播差错、进展和冲突事件。此外,同步代理程序130使用同步适配器170以通过服务器同步提供者接口来与服务器数据库190交互。另外,每一个同步适配器170都定义对于在客户机和服务器之间同步的每一个表的表和列映射,并对两个或多个表进行逻辑分组。
同步代理程序130还接受对代理程序130分别隐藏客户机数据库110和服务器数据库120细节的客户机同步提供者120和服务器同步提供者160。同步代理程序130接受同步组180的集合并运行随本发明的框架所提供的协议以使得这些组180保持同步。同步适配器170指示同步代理程序130如何与服务器数据库190交互。就此,同步代理程序130不直接与同步适配器170交互,而是同步代理程序130与服务器提供者160交互,服务器提供者160进而使用同步适配器170来连接到数据库190。该交互通过根据本发明的各非限制性实施例来实现的以下数据库命令对象中的一个或多个来定义:插入(Insert)、更新(Update)、删除(Delete)、选择增量插入(Select Incremental Inserts)、选择增量更新(Select IncrementalUpdates)、选择增量删除(Select Incremental Deletes)、选择更新冲突(SelectUpdate Conflict)和/或选择删除冲突(Select Delete Conflict)命令。
根据本发明的插入命令供服务器同步提供者160用来将对客户机数据库110的插入传播至服务器数据库190。
根据本发明的更新命令供服务器同步提供者160用来将对客户机数据库110的更新传播至服务器数据库190。
根据本发明的删除命令供服务器同步提供者160用来将对客户机数据库110的删除传播至服务器数据库190。
根据本发明的选择增量插入命令供服务器同步提供者160用来枚举自从客户机数据库110上一次同步之后发生在服务器数据库190上的插入。
根据本发明的选择增量更新命令供服务器同步提供者160用来枚举自从客户机数据库110上一次同步之后发生在服务器数据库190上的更新。
根据本发明的选择增量删除命令供服务器同步提供者160用来枚举自从客户机数据库110上一次同步之后发生在服务器数据库190上的删除。
根据本发明的选择更新冲突命令供服务器同步提供者160用来获取导致插入、更新或删除命令失败的现有行。该命令执行对适用的数据表中的冲突行的查找。
根据本发明的选择删除冲突命令供服务器同步提供者160用来获取导致插入、更新或删除命令失败的现有行。在一个实施例中,该命令执行对逻辑删除(tombstone)表中的冲突行的查找以找出逻辑删除表中导致更新命令失败的行,但不在插入或删除命令失败时使用。
作为本发明的同步框架的一部分,离线应用程序可以选择上述同步行为中的任何一个或多个。此处所使用的实施例和示例中的某一些涉及数据的数据库存储,如关系型存储,但为了避免疑惑,客户机或服务器数据存储可以是任何种类的数据存储。
对于根据本发明的框架的服务器同步提供者160,在一个非限制性实施例中,默认和自定义提供者160两者都是允许的。提供默认提供者160是为了解决常见应用场景,例如,瘦客户机场景、富客户机场景、SQL Server紧凑版、SQL Server Express等。应用程序开发者和第三方还可针对较不常见的场景(例如,Access、FoxPro、Sybase)经由用于自定义提供者160的简单框架和助手类来实现这一自定义提供者160。
在本发明的各非限制性实施例中,服务器同步提供者160的功能包括,但不限于:存储关于组180的同步信息的能力、枚举自从上一次同步之后在数据库190上发生的增量变更的能力、对数据库190应用增量变更的能力、检测冲突的更新并可任选地在程序上或交互式地解决它们的能力、以及激发(fire)进展和数据变更事件的能力。
对于同步代理140,当今需要直接连接到服务器数据库190的解决方案目前已经越来越少见了,因为基于面向服务的体系结构(SOA)的解决方案正在日益普及。对于SOA模型,服务器195将其功能作为按需连接到服务器195的web服务150来展示。经由同步代理程序130,客户机通过因特网或通过企业内的本地内联网来与web服务150交互。同步代理组件140因此是允许构建断开连接的SOA解决方案的简单接口,但如先前所强调的,根据本发明可使用用于同步框架的任何传输机制。
因此,图1B描述供在膝上型计算机100和工作站105上运行的应用程序各自与为如服务器195所维护的服务器数据库190中的数据定义的一个或多个同步组180同步的示例性、非限制性同步框架。
图2A是用于在客户机200上快速开发离线应用程序OLA1到OLAn并用于与服务器250的数据存储260同步的本发明的框架的示例性、非限制性实现。就此,如图1B一样,对于框架中的到客户机存储210和服务器存储260的通信允许存储格式无关性,并且在服务器250和客户机200之间允许传输无关性。
有利的是,如上所述,根据本发明的离线应用程序可以实现自定义客户机同步提供者220b或默认客户机同步提供者220a,自定义客户机同步提供者220b是为诸如离线应用程序OLAn等特定离线应用程序定制的,默认客户机同步提供者220a覆盖诸如离线应用程序OLA1等离线应用程序所需的各种常见同步场景。如图1B一样,经由服务器同步提供者270a或270b的接口,同步代理程序230使用同步适配器280来与服务器数据库260进行交互,从而根据定义的同步组290进行同步。如图所示,服务器同步提供者也可以作为处理来自离线应用程序OLA1…OLAn的常见已知同步场景的默认服务器同步提供者270来提供,或可被定制为实现附加同步需求的自定义服务器同步提供者270b。同步提供者220a、220b、270a、270b因而是本发明的框架的、帮助快速并高效地构建尤其是针对此处更详细地描述的一组广泛预期的各类离线行为的同步应用程序的构件块。
如图2B所示,在一个非限制性实施例中,本发明的同步适配器282通过使用或扩展数据适配器构造来类似于微软的ADO.NET中的数据适配器来实现,但为了避免疑惑,本发明并不限于类似数据适配器的实现。如图所示,服务器同步提供者270与ADO.NET数据适配器282进行接口,ADO.NET数据适配器282又关于服务器250的定义的同步组290与服务器存储260通信。将同步集成到ADO.NET编程模型中的方法允许熟悉ADO.NET的开发者用最小的学习来构建同步应用程序,因为SyncAdapter(同步适配器)类的设计是基于ADO.NET数据适配器(DataAdapter)类的。
如图2C所示,在另一非限制性实施例中,对SQL Server紧凑版客户机启用默认客户机同步提供者222以代表客户机200c上的离线应用程序215来与存储212,即SQL Server紧凑版数据库进行交互。如图2D所示,在又一非限制性实施例中,对客户机启用默认客户机同步提供者224以代表客户机200d上的离线应用程序215来与文件系统存储214进行交互。
本发明的框架的提供者体系结构因而使开发者能够使用该框架中提供的客户机和服务器提供者或插入自定义提供者以用于更高级的场景。本发明的框架为开发者提供构建例如用于“现用先付”体验等偶尔连接的应用程序的构件块。就此,该框架具有非常快速地构建简单解决方案的组件,并且其具有使用这些构件块来构建复杂解决方案的完全灵活性。
根据本发明的用于离线应用程序的同步框架允许各种默认场景。图3A示出本发明的框架的所允许的第一场景,其有利地允许客户机数据库110指定并检索数据子集以供应用程序使用,该应用程序可以离线并且当在线时也只与服务器数据库190同步该数据子集。例如,这将允许只对最近电子邮件感兴趣的电子邮件应用程序只检索并接收该应用程序所定义的最近电子邮件的同步更新。作为来自客户机的应用程序的对来自服务器数据库190的数据子集的请求(其可以是查询)的一部分,服务器数据库190进而根据上述框架体系结构返回该数据子集。
图3A还示出同步元数据112是根据本发明在客户机侧表示的,从而通过使服务器侧免于维护关于其所有客户机的同步元数据来允许可伸缩性。就此,本发明的框架允许在不需要在服务器侧进行任何附加供应的情况下与预先存在的服务器同步。
根据本发明,应用程序随后还可以离线并且只对于所返回的数据子集来操作,并随后当再次连接之后,客户机可请求对于该客户机上的数据子集的同步更新或请求新的数据子集的同步。在任一情况下,根据该同步框架,服务器返回所请求的更新或新子集数据。
图3B示出可以实现客户机高速缓存400以使离线应用程序在离线时可以快速访问高速缓存400中的数据。另外,图3B示出所允许的另一场景是快照同步,其中客户机请求并接收服务器数据库190的数据子集的快照,该快照随后被存储在客户机上的数据的只读高速缓存中,如高速缓存400。本发明还可任选地允许增量下载同步,其中向客户机上的诸如高速缓存400等只读高速缓存提供增量同步能力来当其在线时保持高速缓存400最新。同样,如图所示,本发明允许从客户机到服务器的存储和转发能力,即只上传同步。
如图3C所示,本发明还允许客户机上的数据的读写客户机高速缓存,从而提供双向同步能力。可任选地,双向同步能力包括支持在多个客户机变更同一数据时进行冲突检测和解决的框架。例如,在两个不同的客户机数据库110a、110b使用不同的或冲突的数据来与服务器数据库190同步时,可以在服务器处执行冲突解决195c。这确保向客户机110a、110b推送一致的数据。另选地,可以向客户机中的每一个提供冲突解决机制195a、195b来反映用于解决冲突的本地应用程序策略。
另外,如图3D所示,对于其中由于在不同设备上的数据的独立进化而在该数据中发现冲突的双向同步而言,不管在何处根据冲突解决策略处理冲突解决195(在客户机数据库110处和/或在服务器数据库190处),本发明允许在应用同步更新之前对该数据做出本地变更的能力,例如以覆盖冲突检测/解决组件195所应用的冲突解决。
在各非限制性实施例中,本发明的框架因而提供在数据存储上插入自定义变更跟踪的能力。例如,用户可能只想跟踪对电子邮件收件箱的变更而不跟踪对存档文件夹的变更。或者对于诸如医疗记录等特定数据而言,版本化将是很重要的,而对诸如图像档案等其它文件而言,版本化将不是很重要,并且因此可以对后一组禁用变更跟踪,并且将只对客户机数据库处的需要对其进行版本化的数据子集启用变更跟踪。
图4示出本发明的一示例性实施例,其中数据集数据结构400(即,ADO.NET V2数据集(DataSet)对象)在客户机侧同步代理程序130和服务器侧同步提供者160之间传递。在客户机侧提供数据集接口410以便对数据集数据结构400进行来回转换,并且在服务器侧提供数据集接口412以便对数据集数据结构400进行来回转换。另选地,如图5所示,分别在客户机侧和服务器侧上的数据集接口520和522可用于分别对关于客户机数据库110和服务器数据库190的数据集数据结构500进行来回转换。为了避免疑惑,上述数据集实现是非限制性的,并由此可利用其它数据结构来表示根据本发明的、客户机和服务器之间往返的同步数据以及适当的接口。无论选择什么实现,本发明的框架由此都能够以传输无关的方式操作而无需知道客户机或服务器侧的数据存储的确切格式。
有利的是,如图6所示,因为客户机元数据被存储在客户机上,所以本发明的同步框架可用于根据辐射(hub and spoke)模型来同步数据,在该模型中,客户机610a、610b、610c等可与服务器600联系并各自与同步组605的数据同步。基于正在同步的数据的诸如时间戳等时间特性并根据冲突解决策略,只要客户机与服务器联系,就可在服务器600和客户机610a、610b、610c处维护同步组605的一致数据集。
图7A是实现从客户机的观点来看的用于使用本发明的框架来同步的示例性、非限制性过程的流程图。在700处,客户机连接到服务器并请求与服务器数据组的所选集合同步。在705处,客户机生成或检索包括客户机同步锚的同步元数据。在710处,客户机向服务器传送该客户机所维护的同步元数据。如上所述,该客户机所维护的同步元数据使服务器能够确定客户机同步状态,该客户机同步状态包括所枚举的自从先前同步时间之后客户机上所发生的对数据组的变更。在715处,客户机接收来自服务器的对同步请求的确认。
在720处,可任选地,客户机接收到一组同步冲突,其中如服务器所确定的,数据在分开的位置处被独立地变更。客户机可任选地根据各种所选冲突解决策略来处理该组同步冲突。在725处,假定从服务器接收到确认,则在客户机上持久存储同步锚。同样,接着进行对数据组的本地变更的分析,并且随后向服务器传送应当被发送到服务器的、对客户机数据组的任何变更。在730处,以对应的方式,客户机随后从服务器接收对数据组的客户机侧版本的所需更新。客户机随后接收服务器所生成的但随后由客户机维护以用于将来同步请求的新同步锚。
将更新应用到数据组的客户机侧版本,处理任何冲突并持久存储来自服务器的新同步锚。
图7B是实现从本发明的服务器的观点来看的用于同步的示例性、非限制性过程的流程图。在750处,从客户机接收包括同步元数据的对一个或多个同步组的同步请求。在755处,从客户机接收对一个或多个同步组的任何变更并更新这些同步组。在760处,确定这些变更所呈现的任何冲突。在765处,将对处理请求和冲突的确认传送到客户机。在770处,为客户机枚举客户机侧变更,从而使得该客户机能够更新该一个或多个同步组。在775处,根据允许具有不同特征的多个锚数据类型的可扩展锚模型来将同步锚从服务器传送到客户机。
在其它非限制性实施例中,本发明通过提供一协议来启用可扩展同步锚模型,该协议在客户机和服务器之间传送锚类型,但不在客户机上采用任何预定义结构并由此灵活地允许具有变化层次特征的各种各样的锚数据类型。图8示出各种锚类型A_T1、A_T2、…、A_TN可根据本发明的协议来在服务器800和客户机810之间来回传递。另外,锚的结构由服务器来定义并且有利的是,客户机无需为了与服务器同步而去理解该格式。锚因此提供用于在各设备之间同步指定数据的本地“挂钩”,并且一般包括某类时间水印,如时间戳、身份、日期/时间等,以使挂钩具有可在同步分析和冲突解决期间进行分析的时间维度。
示例性网络化和分布式环境
本领域普通技术人员可以理解,本发明可以结合可作为计算机网络的一部分来部署的任何计算机或其它客户机或服务器设备来实现,或可在连接至任何种类的数据存储的分布式计算环境中实现。在这一点上,本发明涉及任何计算机系统或环境,其具有任意数目的存储器或存储单元,以及发生在任意数目的存储单元或卷上的任意数目的应用程序和进程,它们可结合根据本发明的同步框架来使用。本发明可应用于具有部署在具有远程或本地存储的网络环境或分布式计算环境中的服务器计算机和客户计算机的环境。本发明也可应用于具有用于结合远程或本地服务和进程生成、接收和发送信息的编程语言功能、解释和执行能力的独立计算设备。
分布式计算通过计算设备和系统之间的交换提供了计算机资源和服务的共享。这些资源和服务包括信息的交换、对于诸如文件等对象的高速缓存存储和盘存储。分布式计算利用网络连接,从而允许客户机利用它们的集体力量来使整个企业受益。就此,各种设备可具有可用作本发明的同步框架的各组件的应用程序、对象或资源。
图9提供示例性的网络化或分布式计算环境的示意图。该分布式计算环境包括计算对象910a、910b等,以及计算对象或设备920a、920b、920c、920d、920e等。这些对象可包括程序、方法、数据存储、可编程逻辑等等。这些对象可包括诸如PDA、音频/视频设备、MP3播放器、个人计算机等相同或不同设备的各部分。每一对象可通过通信网络940与另一对象通信。该网络本身可以包括向图9的系统提供服务的其它计算对象和计算设备,且其本身可以表示多个互连的网络。根据本发明的一方面,每一对象910a、910b等,或920a、920b、920c、920d、920e等可包含可利用适用于根据本发明的用于同步数据组的系统和方法的API、或其它对象、软件、固件和/或硬件的应用程序。
还可以理解,诸如920c等对象可以主存在另一计算设备910a、910b等或920a、920b、920c、920d、920e等上。因此,尽管所示的物理环境可以将所连接的设备示为计算机,但是这样的图示仅是示例性的,并且该物理环境可以被替换地描述或描绘成包括诸如PDA、电视机、MP3播放器等的各种数字设备,它们中的任何一个可采用诸如接口、COM对象等各种有线和无线服务、软件对象。
存在支持分布式计算环境的各种系统、组件和网络配置。例如,计算系统可以通过有线或无线系统、本地网络或广泛分布的网络连接在一起。当前,许多网络被耦合至因特网,后者为广泛分布的计算提供了基础结构并包含许多不同的网络。任何基础架构都可用于本发明的同步框架所附带进行的示例性通信。
在家庭网络环境中,有至少四个全异的网络传输介质,其每一个可支持一种唯一的协议,这些介质诸如电力线、数据(无线和有线)、语音(如,电话)和娱乐媒体。诸如电灯开关和电器设备等大多数家庭控制设备可使用电力线来连接。数据服务可通过宽带(如,DSL或电缆调制解调器)进入家庭,并可在家庭内使用无线(如,HomeRF或802.11B)或有线(如,家庭PNA、Cat 5、以太网、甚至是电力线)连接来访问。语音话务可通过有线(如,Cat 3)或无线(如,蜂窝电话)进入家庭,并可在家庭中使用Cat 3连线来分布。娱乐媒体或其它图形数据可通过卫星或电缆进入家庭,并通常在家庭中使用同轴电缆来分布。IEEE 1394和DVI也是用于媒体设备群集的数字互联。可作为协议标准浮现或已经浮现的所有这些网络环境和其它环境可被互联来形成可通过诸如因特网等广域网连接到外部世界的网络,诸如内联网。简言之,对数据的存储和传输存在各种不同的源,因此本发明的任何计算设备可按照任何现有方式共享和传输数据,且在本文实施例中描述的方式不旨在是限制性的。
因特网通常指使用传输控制协议/网际协议(TCP/IP)协议套件的网络和网关的集合,该协议在计算机联网领域中是公知的。因特网可被描述为由执行允许用户通过网络交互和共享信息的联网协议的计算机互连的地理上分布的远程计算机网络的系统。由于这类广泛分布信息的共享,诸如因特网等远程网络至今发展成一种开放式系统,开发者可用该开放式系统设计用于执行专用操作或服务的软件应用程序而基本上没有限制。
由此,该网络基础结构允许诸如客户机/服务器、对等或混合体系结构等大量网络拓朴结构。“客户机”是使用与它无关的另一类或组的服务的一个类或组中的成员。由此,在计算时,客户机是进程,即,粗略地而言是一组请求由另一程序提供的服务的指令或任务。客户机进程利用所请求的服务,而不必“知道”有关其它程序或服务本身的任何工作细节。在客户机/服务器体系结构中,尤其在网络化系统中,客户机通常是访问由例如服务器等另一计算机提供的共享的网络资源的计算机。在图9的图示中,作为示例,计算机920a、920b、920c、920d、920e等可以被认为是客户机,而计算机910a、910b等可以被认为是服务器,其中服务器910a、910b等维护随后被同步或复制到客户机计算机920a、920b、920c、920d、920e等的数据,然而取决于环境,任何计算机都可被认为是客户机、服务器或这两者。这些计算设备中的任一个都可处理数据或请求可包含根据本发明的同步框架的服务或任务。
服务器通常是可通过诸如因特网或无线网络基础架构等远程网络或本地网络访问的远程计算机系统。客户机进程可以在第一计算机系统中活动,而服务器进程可以在第二计算机系统中活动,它们通过通信介质彼此通信,从而提供分布式功能并允许多个客户机利用服务器的信息收集能力。按照本发明的用于同步数据组的技术利用的任何软件对象都可跨多个计算设备或对象分布。
客户机和服务器利用由协议层提供的功能来彼此通信。例如,超文本传输协议(HTTP)是结合万维网(WWW),即“Web”使用的常见协议。通常,诸如网际协议(IP)地址等计算机网络地址或诸如统一资源定位器(URL)等其它引用可以用于彼此标识服务器或客户计算机。网络地址可以被称为URL地址。可以通过通信介质来提供通信,例如客户机和服务器可以通过TCP/IP连接来彼此耦合以进行大容量通信。
由此,图9示出了其中可采用本发明的、服务器通过网络/总线与客户计算机通信的示例性联网或分布式环境。更详细而言,根据本发明,多个服务器910a、910b等经由通信网络/总线940与多个客户机或远程计算设备920a、920b、920c、9200d、920e等互连,通信网络/总线940可以是LAN、WAN、内联网、GSM网络、因特网等,客户机或远程计算设备如便携式计算机、手持式计算机、瘦客户机、联网设备或其它设备,如VCR、TV、烤箱、灯、加热器等等。因此,构想了本发明可应用于期望同步数据的任何计算设备。
例如,在其中通信网络/总线940是因特网的网络环境中,服务器910a、910b等可以是客户机920a、920b、920c、920d、920e等通过诸如HTTP等多种已知协议中的任一种与其通信的web服务器。服务器910a、910b等也可担当客户机920a、920b、920c、920d、920e等,这是分布式计算环境的特性。
如上所述,通信可以是有线或无线的,或者是两者的适当组合。客户机设备920a、920b、920c、920d、920e等可以通过或不通过通信网络/总线14通信,并可具有与其相关联的独立通信。例如,在TV或VCR的情况下,可能存在或不存在其控制的网络化方面。每一客户计算机920a、920b、920c、920d、920e等以及服务器计算机910a、910b等可以具备各种应用程序模块或对象135a、135b、135c等,并具有对各种类型的存储元件或对象的连接或访问,在这些存储元件或对象上可储存文件或数据流,或者可向其下载、传送或迁移文件或数据流的各部分。计算机910a、910b、920a、920b、920c、920d、920e等中的任何一个或多个可负责维护并更新数据库930或其它存储元件,如用于储存根据本发明处理或保存的数据的数据库或存储器930。由此,本发明可以用于具有可访问计算机网络/总线940并与其交互的客户计算机920a、920b、920c、920d、920e等,和可与客户机计算机920a、920b、920c、920d、920e等以及其它类似的设备交互的服务器计算机910a、910b等,以及数据库930的计算机网络环境中。
示例性计算设备
如上所述,本发明适用于其中期望同步数据的任何设备。因此,应当理解,构想了结合本发明使用的所有种类的手持式、便携式和其它计算设备和计算对象,即,在设备可同步数据或以其它方式接收、处理或存储数据的任何地方。因此,在下面的图10中描述的以下通用远程计算机仅是一个示例,且本发明可用具有网络/总线互操作性和交互的任何客户机来实现。由此,本发明可在其中蕴含了极少或最小客户机资源的联网的托管服务的环境,例如其中客户机设备仅用作到网络/总线的接口(如置于电器中的对象)的联网环境中实现。
尽管并不是必需的,但本发明可以部分地经由操作系统来实现,以供设备或对象的服务开发者使用,和/或被包括在结合本发明的组件操作的应用软件中。软件可以在由诸如客户机工作站、服务器或其它设备等一个或多个计算机执行的诸如程序模块等计算机可执行指令的通用上下文中描述。本领域的技术人员可以理解,本发明可以用其它计算机系统配置和协议来实施。
图10由此示出其中可实现本发明的合适的计算系统环境1000a的一个示例,但如以上清楚地描述的,计算系统环境1000a仅为用于媒体设备的合适的计算环境的一个示例,并非旨在对本发明的使用范围或功能提出任何局限。也不应将计算系统1000a解释为对示例性操作环境1000a中示出的任一组件或其组合具有任何依赖性或需求。
参见图10,用于实现本发明的示例性远程设备包括计算机1010a形式的通用计算设备。计算机1010a的组件可以包括,但不限于,处理单元1020a、系统存储器1030a、和将包括系统存储器在内的各种系统组件耦合至处理单元1020a的系统总线1021a。系统总线1021a可以是若干种类型的总线结构中的任一种,包括存储器总线或存储控制器、外围总线、以及使用各种总线体系结构中的任一种的局部总线。
计算机1010a通常包括各种计算机可读介质。计算机可读介质可以是可由计算机1010a访问的任何可用介质。作为示例而非局限,计算机可读介质可以包括计算机存储介质和通信介质。计算机存储介质包括以用于存储诸如计算机可读指令、数据结构、程序模块或其它数据等信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括但不限于,RAM、ROM、EEPROM、闪存或其它存储器技术、CDROM、数字多功能盘(DVD)或其它光盘存储、磁盒、磁带、磁盘存储或其它磁存储设备、或可以用来储存所需信息并可由计算机1010a访问的任何其它介质。通信介质通常以诸如载波或其它传输机制等已调制数据信号来体现计算机可读指令、数据结构、程序模块或其它数据,并包括任意信息传送介质。
系统存储器1030a可以包括诸如只读存储器(ROM)和/或随机存取存储器(RAM)等易失性和/或非易失性存储器形式的计算机存储介质。基本输入/输出系统(BIOS)可被存储在存储器1030a中,它包含帮助在诸如启动期间在计算机1010a内的元件之间传递信息的基本例程。存储器1030a通常还包含处理单元1020a可以立即访问和/或目前正在操作的数据和/或程序模块。作为示例而非局限,存储器1030a还可以包括操作系统、应用程序、其它程序模块、和程序数据。
计算机1010a也可以包括其它可移动/不可移动、易失性/非易失性计算机存储介质。例如,计算机1010a可以包括对不可移动、非易失性磁介质进行读写的硬盘驱动器,对可移动、非易失性磁盘进行读写的磁盘驱动器,和/或对诸如CD-ROM或其它光学介质等可移动、非易失性光盘进行读写的光盘驱动器。可以在示例性操作环境中使用的其它可移动/不可移动、易失性/非易失性计算机存储介质包括但不限于,磁带盒、闪存卡、数字多功能盘、数字录像带、固态RAM、固态ROM等等。硬盘驱动器通常由诸如接口等不可移动存储器接口连接至系统总线1021a,而磁盘驱动器或光盘驱动器通常由诸如接口等可移动存储器接口连接至系统总线1021a。
用户可以通过输入设备,如键盘和定点设备(通常指鼠标、跟踪球或触摸板)向计算机1010a输入命令和信息。其它输入设备可以包括话筒、操纵杆、游戏手柄、圆盘式卫星天线、扫描仪等等。这些和其它输入设备通常由耦合至系统总线1021a的用户输入1040a和相关联的接口连接到处理单元1020a,但是也可由诸如并行端口、游戏端口或通用串行总线(USB)之类的其它接口和总线结构连接。图形子系统也可以被连接到系统总线1021a。监视器或其它类型的显示设备也通过接口,如输出接口1050a连接至系统总线1021a,而输出接口1050a又与视频存储器通信。除监视器之外,计算机还可以包括其它外围输出设备,如扬声器和打印机,它们可以通过输出接口1050a连接。
计算机1010a可使用至诸如远程计算机1070a等的一个或多个远程计算机的逻辑连接在网络化或分布式环境中操作,远程计算机1070a又可以具有与设备1010a不同的媒体能力。远程计算机1070a可以是个人计算机、服务器、路由器、网络PC、对等设备或其它常见的网络节点、或任何其它远程媒体消费或传输设备,并且可以包括上面关于计算机1010a所描述的任何或全部元件。图10所示的逻辑连接包括诸如局域网(LAN)或广域网(WAN)等的网络1071a,但也可以包括其它网络/总线。这样的联网环境在家庭、办公室、企业范围计算机网络、内联网和因特网中是常见的。
当在LAN联网环境中使用时,计算机1010a通过网络接口或适配器连接至LAN 1071a。当在WAN联网环境中使用时,计算机1010a通常包括通信组件,诸如调制解调器或用于通过诸如因特网等的WAN建立通信的其它装置。诸如调制解调器等通信组件可以是内置或外置的,它可以通过输入1040a的用户输入接口或其它适当的机制连接至系统总线1021a。在网络化环境中,相对于计算机1010a所描述的程序模块或其部分可被储存在远程存储器存储设备中。可以理解,所示和所述的网络连接是示例性的,且可以使用在计算机之间建立通信链路的其它手段。
示例性分布式计算体系结构
鉴于个人计算和因特网的交汇,已经开发且正在开发各种分布式计算框架。个人和企业用户同样地配备用于应用程序和计算设备的无缝互操作和启用web的接口,使得计算活动越来越面向web浏览器和网络。
例如,
Figure G2008800038603D00191
的托管代码平台,即.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)等网络的数据。
已经关于若干组件之间的交互描述了前述系统。应该理解,这样的系统和组件可以包括那些组件或指定的子组件、指定的组件或子组件中的某一些、和/或另外的组件,并根据前述的各种排列和组合。子组件也可以被实现为通信耦合至其它组件而非被包括在父组件(分层)内的组件。另外,应注意到一个或多个组件可被组合成提供聚集功能的单个组件,或被分成若干单独的子组件,且诸如管理层等任何一个或多个中间层可被设置成通信耦合到这样的子组件以便提供集成功能。此处描述的任何组件也可以与在此未具体描述但本领域的技术人员公知的一个或多个其它组件交互。
考虑到以上描述的示例性系统,参考图3A、3B、3C、3D、7A和7B的流程图将可以更好地理解可根据所公开的主题实现的方法。尽管出于说明简单的目的,各方法被显示和描述为一系列框,但应该理解和领会,所要求保护的主题不受框次序的限制,因为一些框能够以不同的次序和/或与在此描绘和描述的其它框同时发生。尽管经由流程图示出了非顺序或分支的流程,但可以理解,可实现达成相同或类似结果的各种其它分支、流程路径和框次序。而且,并非所有示出的框都是实现以下描述的方法所必需的。
此外,应该明白以上公开的系统以及以下方法的不同部分可以包括或包含人工智能或基于知识或规则的组件、子组件、进程、装置、方法或机制(例如,支持向量机、神经网络、专家系统、贝叶斯置信网络、模糊逻辑、数据融合引擎、分类器等)。这样的组件和其它组件可以自动化所执行的某些机制或进程,由此使得系统和方法的各部分更为自适应、高效及智能。
尽管已结合各个附图的优选实施方式对本发明进行了描述,但是可以理解,可以使用其它类似的实施方式或可以对所描述的实施方式进行修改或添加以实现本发明的相同功能而不背离本发明。例如,尽管在诸如对等联网环境等联网环境的上下文中描述了本发明的示例性网络环境,但是本领域的技术人员将认识到,本发明不限于此,并且本申请中所描述的方法可应用于任何计算设备或环境,诸如游戏控制台、手持式计算机、便携式计算机等等,不论其是有线还是无线的,并且该方法可应用于经由通信网络连接并通过网络交互的任意数量的此类计算设备。此外,应当强调,构想了包括手持式设备操作系统和其它专用操作系统的各种计算机平台,尤其是在无线联网设备的数量持续增长时。
尽管各示例性实施例涉及在特定编程语言构造的上下文中利用本发明,但是本发明不限于此,而是可用任何语言实现来提供本发明的同步通信协议和方法。而且,本发明可以在多个处理芯片或设备中实现或跨多个处理芯片或设备实现,且存储可以类似地跨多个设备来实现。因此,本发明不应限于任何单个实施例,而是应该根据所附权利要求书的广度和范围来解释。

Claims (20)

1.一种用于在服务器和至少一个客户机之间同步至少一个数据组的同步框架系统,包括:
客户机同步提供者组件,所述客户机同步提供者组件在所述服务器和所述至少一个客户机之间的所述至少一个数据组的同步期间独立于客户机存储器的结构来接口对接到所述客户机存储器;
同步代理程序组件,所述同步代理程序组件收集所述至少一个客户机所维护的同步元数据以在同步期间向所述服务器传输,并向服务器存储器上传和/或从中下载对所述至少一个数据组的变更;以及
服务器同步提供者组件,所述服务器同步提供者组件在所述服务器和所述至少一个客户机之间的所述至少一个数据组的同步期间独立于服务器存储器的结构来接口对接到所述服务器存储器。
2.如权利要求1所述的同步框架系统,其特征在于,还包括:
客户机应用程序,所述客户机应用程序通过向所述客户机同步提供者组件做出同步请求来消费使用同步数据。
3.如权利要求2所述的同步框架系统,其特征在于,所述客户机同步提供者组件是多个默认客户机同步提供者中的一个。
4.如权利要求2所述的同步框架系统,其特征在于,所述客户机同步提供者组件是为所述客户机应用程序的一个或多个功能所定制的客户机同步提供者。
5.如权利要求2所述的同步框架系统,其特征在于,所述同步代理程序组件向所述客户机应用程序传播差错、进展和冲突事件。
6.如权利要求1所述的同步框架系统,其特征在于,还包括:
直接与所述服务器存储器通信的至少一个同步适配器,其中所述同步代理程序组件与使用所述至少一个同步适配器来连接到所述服务器存储器的所述服务器同步提供者组件交互。
7.如权利要求6所述的同步框架系统,其特征在于,所述至少一个同步适配器中的每一个定义对于在客户机和服务器之间同步的每一个表的表和列映射,并对多个表进行逻辑分组。
8.如权利要求1所述的同步框架系统,其特征在于,所述同步代理程序组件指示所述服务器同步提供者组件将所述客户机存储器上的插入传播到所述服务器存储器。
9.如权利要求1所述的同步框架系统,其特征在于,所述同步代理程序组件指示所述服务器同步提供者组件将所述客户机存储器上的更新传播到所述服务器存储器。
10.如权利要求1所述的同步框架系统,其特征在于,所述同步代理程序组件指示所述服务器同步提供者组件将所述客户机存储器上的删除传播到所述服务器存储器。
11.如权利要求1所述的同步框架系统,其特征在于,所述同步代理程序组件指示所述服务器同步提供者组件枚举自从所述客户机存储器上一次同步之后在所述服务器存储器上发生的插入。
12.如权利要求1所述的同步框架系统,其特征在于,所述同步代理程序组件指示所述服务器同步提供者组件枚举自从所述客户机存储器上一次同步之后在所述服务器存储器上发生的更新。
13.如权利要求1所述的同步框架系统,其特征在于,所述同步代理程序组件指示所述服务器同步提供者组件枚举自从所述客户机存储器上一次同步之后在所述服务器存储器上发生的删除。
14.如权利要求1所述的同步框架系统,其特征在于,所述同步代理程序组件指示所述服务器同步提供者组件获取导致插入、更新或删除命令失败的现有行。
15.如权利要求1所述的同步框架系统,其特征在于,所述同步代理程序组件指示所述服务器同步提供者组件获取导致插入、更新或删除命令失败的现有行。
16.如权利要求1所述的同步框架系统,其特征在于,所述服务器同步提供者组件存储所述至少一个数据组的同步信息,枚举自从上一次同步之后在所述服务器存储器上发生的增量变更,将从客户机接收到的增量变更应用于所述服务器存储器。
17.如权利要求1所述的同步框架系统,其特征在于,所述服务器同步提供者组件检测冲突的更新并在程序上或交互式地启用对所述冲突的解决。
18.一种用于根据同步框架来在服务器和至少一个客户机之间同步至少一个数据组的方法,包括:
将所述至少一个客户机的同步应用程序连接到所述服务器;
所述至少一个客户机的客户机同步提供者组件的同步应用程序请求同步,所述客户机同步提供者组件独立于客户机存储器的结构对接到所述客户机存储器;
所述至少一个客户机的同步代理程序组件接收所述至少一个客户机所维护的、包括同步锚的同步元数据,所述同步代理组件对接到并指示所述服务器的执行同步的一个或多个组件;以及
所述同步代理程序组件进行以下动作的至少一个:将对所述至少一个数据组的变更上传到服务器存储器,或从服务器存储器下载对所述至少一个数据组的变更。
19.如权利要求18所述的方法,其特征在于,还包括:
参考至少一个同步冲突解决策略来解决对所述至少一个数据组的变更所呈现的至少一个冲突。
20.一种用于根据同步框架来在服务器和松耦合客户机之间同步至少一个数据组的方法,包括:
服务器同步提供者组件从所述松耦合客户机接收对与所述服务器的至少一个同步组进行同步的请求,包括接收所述客户机所维护的同步元数据,从而允许确定所述客户机的同步状态;
对于所述至少一个同步组中的每一个同步组,
所述服务器同步提供者组件从所述客户机接收对所述同步组的任何变更;以及
经由独立于服务器存储器的结构与所述服务器存储器通信的至少一个同步适配器,基于所述变更来更新所述服务器的至少一个同步组。
CN2008800038603A 2007-02-01 2008-01-31 用于偶尔连接的应用程序的同步框架 Expired - Fee Related CN101601027B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/670,369 US7899917B2 (en) 2007-02-01 2007-02-01 Synchronization framework for occasionally connected applications
US11/670,369 2007-02-01
PCT/US2008/052697 WO2008095125A2 (en) 2007-02-01 2008-01-31 Synchronization framework for occasionally connected applications

Publications (2)

Publication Number Publication Date
CN101601027A CN101601027A (zh) 2009-12-09
CN101601027B true CN101601027B (zh) 2012-03-14

Family

ID=39674799

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2008800038603A Expired - Fee Related CN101601027B (zh) 2007-02-01 2008-01-31 用于偶尔连接的应用程序的同步框架

Country Status (8)

Country Link
US (1) US7899917B2 (zh)
EP (1) EP2118764A4 (zh)
JP (1) JP2010518490A (zh)
CN (1) CN101601027B (zh)
BR (1) BRPI0806606A2 (zh)
CL (1) CL2008000315A1 (zh)
TW (1) TW200844763A (zh)
WO (1) WO2008095125A2 (zh)

Families Citing this family (51)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7650432B2 (en) * 2004-05-20 2010-01-19 Bea Systems, Inc. Occasionally-connected application server
US8645973B2 (en) 2006-09-22 2014-02-04 Oracle International Corporation Mobile applications
US9009292B2 (en) * 2007-07-30 2015-04-14 Sybase, Inc. Context-based data pre-fetching and notification for mobile applications
US8204870B2 (en) * 2007-08-03 2012-06-19 Sybase, Inc. Unwired enterprise platform
US9201921B2 (en) * 2007-11-02 2015-12-01 Adobe Systems Incorporated Methods and systems for offline execution of rich internet applications
EP2073123B1 (en) * 2007-12-21 2014-03-12 Software AG Method and system for monitoring a service oriented architecture
JP4479930B2 (ja) * 2007-12-21 2010-06-09 日本電気株式会社 ノードシステム、サーバ切換え方法、サーバ装置、データ引き継ぎ方法、およびプログラム
US8019863B2 (en) * 2008-03-28 2011-09-13 Ianywhere Solutions, Inc. Synchronizing events between mobile devices and servers
EP2169550B1 (en) * 2008-09-18 2013-04-17 Software AG Method for manipulating objects in a SOA registry
US8631161B2 (en) * 2008-09-30 2014-01-14 Andrei B. Lavrov Computer program product, system and method for field management and mobile inspection
AU2009308475B2 (en) * 2008-10-21 2015-11-05 Google Inc. Always ready client/server data synchronization
US9367599B2 (en) 2008-10-21 2016-06-14 Google Inc. Search based specification for data synchronization
US8965954B2 (en) 2008-10-21 2015-02-24 Google Inc. Always ready client/server data synchronization
US20110055299A1 (en) * 2008-12-18 2011-03-03 Virtual Computer, Inc. Managing User Data in a Layered Virtual Workspace
TWI384378B (zh) * 2008-12-29 2013-02-01 Ind Tech Res Inst 網頁應用程式執行方法
US8327278B2 (en) * 2009-02-17 2012-12-04 Microsoft Corporation Synchronizing metadata describes user content updates and an indication of user gestures being performed within the document, and across client systems using different communication channels
US9665729B2 (en) * 2009-04-13 2017-05-30 Microsoft Technology Licensing, Llc Revocation of application on mobile device
US20100268784A1 (en) * 2009-04-17 2010-10-21 Marc Henness Data synchronization system and method
US20110078332A1 (en) * 2009-09-25 2011-03-31 Poon Roger J Method of synchronizing information across multiple computing devices
US20110093619A1 (en) * 2009-10-16 2011-04-21 Ianywhere Solutions, Inc. Synchronizing Tasks between Mobile Devices and Servers
US8375285B2 (en) * 2009-12-15 2013-02-12 International Business Machines Corporation Enabling access to data files unsupported by a computing device
US8473582B2 (en) * 2009-12-16 2013-06-25 International Business Machines Corporation Disconnected file operations in a scalable multi-node file system cache for a remote cluster file system
US8458239B2 (en) * 2009-12-16 2013-06-04 International Business Machines Corporation Directory traversal in a scalable multi-node file system cache for a remote cluster file system
US9158788B2 (en) * 2009-12-16 2015-10-13 International Business Machines Corporation Scalable caching of remote file data in a cluster file system
US8495250B2 (en) * 2009-12-16 2013-07-23 International Business Machines Corporation Asynchronous file operations in a scalable multi-node file system cache for a remote cluster file system
WO2011125065A1 (en) * 2010-04-05 2011-10-13 Tata Consultancy Services Limited System and method for sharing data between occasionally connected devices and remote global database
US8805783B2 (en) 2010-05-27 2014-08-12 Microsoft Corporation Synchronization of subsets of data including support for varying set membership
KR101145385B1 (ko) * 2010-05-31 2012-05-15 (주)이앤비소프트 단축 명령을 통한 데이터 업로드 방법
US9055385B1 (en) 2010-11-18 2015-06-09 Sprint Communications Company L.P. Adjusting an application update rate in a wireless communication device
US20120150801A1 (en) * 2010-12-08 2012-06-14 Microsoft Corporation Platform agnostic file attribute synchronization
US8478719B2 (en) * 2011-03-17 2013-07-02 Remote Media LLC System and method for media file synchronization
US20120317488A1 (en) * 2011-06-13 2012-12-13 Microsoft Corporation Techniques for adapting an interpretive run time application to multiple clients
WO2013041888A1 (en) * 2011-09-23 2013-03-28 Videojet Technologies Inc. Networking method
US20130117423A1 (en) * 2011-11-09 2013-05-09 Infosys Limited Methods for managing data synchronization and devices thereof
US9141532B2 (en) * 2012-12-26 2015-09-22 Western Digital Technologies, Inc. Dynamic overprovisioning for data storage systems
US9614932B2 (en) 2013-03-14 2017-04-04 Microsoft Technology Licensing, Llc Managing and implementing web application data snapshots
CN104065613B (zh) * 2013-03-18 2017-11-21 中国移动通信集团内蒙古有限公司 一种应用的离线操作数据的同步方法、系统及装置
US10044799B2 (en) 2013-05-28 2018-08-07 International Business Machines Corporation Implementing synchronization of state information betweeen instances of an application as well as between different applications in an efficient, scalable manner
US9854035B2 (en) 2013-05-28 2017-12-26 International Business Machines Corporation Maintaining state synchronization of an application between computing devices as well as maintaining state synchronization of common information between different applications without requiring periodic synchronization
US9679037B2 (en) * 2013-06-07 2017-06-13 Wipro Limited System and method for implementing database replication configurations using replication modeling and transformation
US10122665B2 (en) 2014-03-06 2018-11-06 Dropbox, Inc. Distributed synchronization data in a message management service
US20170031661A1 (en) 2015-04-15 2017-02-02 Alpha Software Corporation Systems and methods for transactional applications in an unreliable wireless network
US10235331B1 (en) * 2015-06-18 2019-03-19 EMC IP Holding Company LLC Event-based synchronization in a file sharing environment
US20170131978A1 (en) * 2015-11-06 2017-05-11 appsFreedom Inc. Automated offline application (app) generation system and method therefor
US10595169B2 (en) 2016-06-12 2020-03-17 Apple Inc. Message extension app store
US10785175B2 (en) * 2016-06-12 2020-09-22 Apple Inc. Polling extension application for interacting with a messaging application
US10852912B2 (en) 2016-06-12 2020-12-01 Apple Inc. Image creation app in messaging app
US11070648B2 (en) * 2018-10-01 2021-07-20 Oracle International Corporation Offline client replay and sync
US10877825B2 (en) 2018-10-04 2020-12-29 Oracle International Corporation System for offline object based storage and mocking of rest responses
US11108862B2 (en) * 2019-10-14 2021-08-31 Journey Mobile, Inc. Bi-directional data sync between a client device and an application server
US20240146618A1 (en) * 2022-10-27 2024-05-02 Red Hat, Inc. Object storage gateway for iot devices with intermittent network connectivity

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6226650B1 (en) * 1998-09-17 2001-05-01 Synchrologic, Inc. Database synchronization and organization system and method
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

Family Cites Families (52)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6115341A (ja) 1984-07-02 1986-01-23 Canon Inc ウエハプロ−バ
JPS6362245A (ja) 1986-09-02 1988-03-18 Canon Inc ウエハプロ−バ
JPH0680711B2 (ja) 1988-03-08 1994-10-12 東京エレクトロン株式会社 ウエハプローバ
JPH0729741A (ja) 1993-07-09 1995-01-31 Murata Mfg Co Ltd 積層コイル
DE4497149T1 (de) * 1993-09-24 1996-10-17 Oracle Corp Verfahren und Vorrichtung zum Replizieren von Daten
US5625811A (en) * 1994-10-31 1997-04-29 International Business Machines Corporation Method and system for database load balancing
KR100292699B1 (ko) 1996-05-17 2001-08-07 히가시 데쓰로 프로브 검사장치
US5974238A (en) * 1996-08-07 1999-10-26 Compaq Computer Corporation Automatic data synchronization between a handheld and a host computer using pseudo cache including tags and logical data elements
JPH10213436A (ja) 1997-01-31 1998-08-11 Laser Techno Kk 墨出し用レーザー装置及びその装置を使用した墨出し方法
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
TW399279B (en) 1997-05-08 2000-07-21 Tokyo Electron Limtied Prober and probe method
US6275831B1 (en) 1997-12-16 2001-08-14 Starfish Software, Inc. Data processing environment with methods providing contemporaneous synchronization of two or more clients
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
US6839744B1 (en) 1999-09-10 2005-01-04 Ianywhere Solutions, Inc. System, method, and computer program product for administering channels, content, and data for 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
US7305475B2 (en) 1999-10-12 2007-12-04 Webmd Health System and method for enabling a client application to operate offline from a server
US20020078075A1 (en) 2000-12-15 2002-06-20 Colson James C. System, method, and program product for prioritizing synchronizable data
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
AU2002303126A1 (en) * 2001-03-16 2002-10-03 Novell, Inc. Client-server model for synchronization of files
CA2438481A1 (en) * 2001-03-27 2002-10-03 British Telecommunications Public Limited Company File synchronisation
US7526575B2 (en) * 2001-09-28 2009-04-28 Siebel Systems, Inc. Method and system for client-based operations in server synchronization with a computing device
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
US7058718B2 (en) * 2002-01-15 2006-06-06 International Business Machines Corporation Blended SYN cookies
US7275105B2 (en) 2002-01-16 2007-09-25 Laszlo Systems, Inc. Enabling online and offline operation
AU2003214262A1 (en) * 2002-05-31 2003-12-19 International Business Machines Corporation System and method for accessing different types of back end data stores
US9171049B2 (en) 2002-06-13 2015-10-27 Salesforce.Com, Inc. Offline simulation of online session between client and server
US7636776B2 (en) 2003-07-31 2009-12-22 Microsoft Corporation Systems and methods for synchronizing with multiple data stores
US8131739B2 (en) * 2003-08-21 2012-03-06 Microsoft Corporation Systems and methods for interfacing application programs with an item-based storage platform
US8909712B2 (en) 2003-11-25 2014-12-09 Sap Ag System and method for a generic mobile synchronization framework
US7373502B2 (en) 2004-01-12 2008-05-13 Cisco Technology, Inc. Avoiding server storage of client state
KR100547896B1 (ko) * 2004-03-05 2006-01-31 삼성전자주식회사 데이터 동기화 시스템 및 서버와 클라이언트의 데이터동기화 방법
US7577771B2 (en) 2004-05-03 2009-08-18 Microsoft Corporation Caching data for offline display and navigation of auxiliary information
US7650432B2 (en) 2004-05-20 2010-01-19 Bea Systems, Inc. Occasionally-connected application server
US20060031228A1 (en) 2004-05-20 2006-02-09 Bea Systems, Inc. Adaptive user interface for occasionally-connected application server
US7899907B2 (en) * 2004-06-30 2011-03-01 Siebel Systems, Inc. Access and synchronization with enterprise applications using remote hosted solution
US7506006B2 (en) * 2004-09-03 2009-03-17 Microsoft Corporation Synchronization for smart clients
US20060074996A1 (en) 2004-10-05 2006-04-06 International Business Machines Corporation System and method for synchronizing data
US20060106879A1 (en) 2004-11-16 2006-05-18 International Business Machines Corporation Conflict resolution in a synchronization framework
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
US7853961B2 (en) * 2005-02-28 2010-12-14 Microsoft Corporation Platform for data services across disparate application frameworks
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
US7529780B1 (en) * 2005-12-30 2009-05-05 Google Inc. Conflict management during data object synchronization between client and server
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
US9549025B2 (en) * 2006-05-09 2017-01-17 International Business Machines Corporation Protocol optimization for client and server synchronization
US20080162728A1 (en) * 2007-01-03 2008-07-03 Microsoft Corporation Synchronization protocol for loosely coupled devices
US7778971B2 (en) * 2007-01-07 2010-08-17 Apple Inc. Synchronization methods and systems
US7716205B1 (en) * 2009-10-29 2010-05-11 Wowd, Inc. System for user driven ranking of web pages

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6226650B1 (en) * 1998-09-17 2001-05-01 Synchrologic, Inc. Database synchronization and organization system and method
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

Also Published As

Publication number Publication date
CL2008000315A1 (es) 2009-05-22
CN101601027A (zh) 2009-12-09
WO2008095125A3 (en) 2008-09-18
BRPI0806606A2 (pt) 2011-09-06
EP2118764A2 (en) 2009-11-18
US7899917B2 (en) 2011-03-01
WO2008095125A2 (en) 2008-08-07
JP2010518490A (ja) 2010-05-27
EP2118764A4 (en) 2010-05-26
US20080189439A1 (en) 2008-08-07
TW200844763A (en) 2008-11-16

Similar Documents

Publication Publication Date Title
CN101601027B (zh) 用于偶尔连接的应用程序的同步框架
CN101627581B (zh) 用于分布式设备数据的多主同步的冲突解决
CN101802809B (zh) 多主同步环境中的web服务端点的同步
CN101490680B (zh) 全局资产管理
CN101583939A (zh) 用于松耦合设备的同步协议
CN1656480B (zh) 允许同步具备不同能力的不同设备中的数据的方法和设备
CN101981557B (zh) 计算环境表示
US7546486B2 (en) Scalable distributed object management in a distributed fixed content storage system
CN101336435B (zh) 可缩放文件复制和基于web的访问
US20100269164A1 (en) Online service data management
CN101689182B (zh) 用于分布式文件系统的高效更新
CN102388361A (zh) 差别文件以及从对等点和云恢复的系统
CN102713901A (zh) 存储复制系统和方法
JP5868986B2 (ja) アイテム単位でのリカバリー
CN101971158A (zh) 断开连接的/离线数据处理/输入的同步
Altman et al. Digital preservation through archival collaboration: The data preservation alliance for the social sciences
US20220083510A1 (en) Connector for content repositories
US8874534B2 (en) File state subset satellites to provide block-based version control
US8713059B2 (en) Management of computer-file sharing between at least two devices
Lim et al. Design and implementation of a collaborative team-based cloud storage system
Arulanandam et al. P2P and grid computing: opportunity for building next generation wireless multimedia digital library
CN100581109C (zh) 动态对等网络环境中的互斥系统和方法
EP2727057B1 (fr) Procede et programme d'ordinateur pour identifier dynamiquement des composants d'un cluster et automatiser des operations de gestion optimisee du cluster
Annangi Security Log Analysis Using Hadoop
Bartlang et al. A flexible content repository to enable a peer‐to‐peer‐based wiki

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
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20120314

Termination date: 20130131

CF01 Termination of patent right due to non-payment of annual fee