在上一篇文章当中,简要介绍了一下如何使用现有的 SyncProvider 对象来进行文件(夹)同步。今天的这个DEMO主要演示通过继承方式来实现自己的SyncProvider来进行相关同步元数据存储,当然这样做会给我们以额外的好处,比如按自己的意愿来创建、版本和删除项的信息等。另外就是对同步应用程序的工作原理也会有一个大概的认识。
在开始正文之前,我在网上看到了这篇文章对MSF的负责报道,当然它所说的部分观点我同意。MSF的确不那么好学,官方的文档的确也难懂,但事情总要慢慢来,只有通过不断积累不断进步,产品才会做的越来越好。就让我们一起与MSF共同进步吧!
好了,开始今天的正文。
首先要解释一下自定义同步程序(本DEMO中为“MySyncProvider”)所要继承和实现的接口:
KnowledgeSyncProvider:表示使用知识执行同步的同步提供程序
IChangeDataRetriever:表示目标提供程序从源提供程序检索项数据所使用的机制。
INotifyingChangeApplierTarget:表示可将项变更保存到副本中的对象
备注:当使用NotifyingChangeApplier对象以帮助将变更应用到目标副本时,目标提供程序必须实现此接口。INotifyingChangeApplierTarget对象传递给ApplyChanges方法。然后,NotifyingChangeApplier
对象调用INotifyingChangeApplierTarget方法,将变更和冲突保存到目标副本中。
KnowledgeSyncProvider方法定义如下主要方法:
BeginSession 在派生类中重写时,通知提供程序它将联接一个同步会话。
EndSession 在派生类中重写时,通知提供程序它所登记到的同步会话已经完成。
GetChangeBatch 在派生类中重写时,获取包含某些项的项元数据的变更批,这些项不包含在来自目标提供程序的指定知识中。
GetFullEnumerationChangeBatch 在派生类中重写时,获取作为完全枚举一部分的变更批,该变更批中包含ID大于指定下限的项的项元数据。
GetSyncBatchParameters 在派生类中重写时,获取要包含在变更批中的项变更数,以及同步作用域的当前知识。
ProcessChangeBatch 在派生类中重写时,通过检测冲突和将变更应用到项存储区中来处理变更组。
ProcessFullEnumerationChangeBatch 在派生类中重写时,通过将变更应用到项存储区中来处理变更组,以用于完全枚举。