微软同步框架(MSF)入门之七--定制同步提供程序(SyncProvider)

在上一篇文章当中,简要介绍了一下如何使用现有的 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 在派生类中重写时,通过将变更应用到项存储区中来处理变更组,以用于完全枚举。

时间: 2024-12-03 23:15:23

微软同步框架(MSF)入门之七--定制同步提供程序(SyncProvider)的相关文章

微软同步框架(MSF)入门之三--分析生成的同步类文件

在前两篇文章当中,我介绍了SnapShot(快照方式)和"只同步新更改和增量更改"这两种同步方式.将使用设计器同步向导生成了两个相应的DEMO.今天我们会一起分析一下这两个DEMO中相应的同步文件内容和相互差异. 首先要分析的DEMO是"只同步新更改和增量更改",我们用VS2008打开DEMO的解决方案方案,如下图: 之前所说的关于MSF为我们生成的主要的类代码就保存在了BiDirectSyncData.sync文件中,下面先分析一下BiDirectSyncData

微软同步框架(MSF)入门之四--冲突(Conflict)检测和处理

在几篇文章当中,我介绍了 SnapShot(快照方式)和"只同步新更改和增量更改"这两种同步方式并对相应的生成文件进行了粗略的分析.今天开始把话题深入一下,聊一聊MSF的冲突检测和处理. 这里所说的冲突(Conflict) 主要是指当客户端与服务端数据在进行CUD时,所操作的数据同步期间发生了错误,如通常所说的约束冲突(主键重复),以及在同步时多个节点(客户端)上更改了同一行,或服务端删除该行而其它节点却更新了该行便存在冲突等.当然在设计应用程序时应避免产生冲突(比如可通过筛选行和列等

微软同步框架(MSF)入门开篇(附SnapShot快照Demo)

在Teched2008上听了一节关于MSF(Microsoft Sync Framework 微软同步框架),这一框架允许开发者创建离线式的应用.设备和服务,可以与任何应用的任意类型数据进行集成. 有关这个模架的介绍在网上有一些链接,而园子里也有朋友做过这方面的介绍.当时东西好不好,只有用过才会知道.今天这篇文章就是简单试用一把MSF来开发ADO.NET同步的DEMO(当然其也支持文件和文件夹的同步,我会在以后写文介绍研究心得).因为是初次使用,所以截图多了一些,当然在概念理解上也可能有偏差,有

微软同步框架(MSF)入门之八--使用WCF同步远程元数据(二)

到这里服务端的代码就全部列举出来了.当然本文中介绍的是元数据同步,而相应的SyncProvider实现是通过MySimpleSyncProvider.cs文件提供的,当然为了不让我的某些错误理解影响大家阅读源码,这里直接将相应的英文注释也放在这里. public class MySyncProvider : KnowledgeSyncProvider, IChangeDataRetriever, INotifyingChangeApplierTarget { // The name of the

微软同步框架(MSF)入门之八--使用WCF同步远程元数据(一)

在MSF中,提供了用于存取维护元数据的一些相应工具类,即Metadata Storage Service.它可帮助存储提供程序的同步元数据,该提供程序表示无法通过其他方式存储元数据的副本.Metadata Storage Service 使用占用较小内存和磁盘空间的轻型数据库,可以随提供程序重新分发,并且安全可靠. 其所提供的API 将元数据存储区与用于访问元数据存储区的接口和方法明确区分开,这样即可实现备用存储区,且对提供程序稍作变更即可使用备用存储区. 当然上面是SDK中的一些说法:) Me

微软同步框架(MSF)入门之六--文件(夹)同步

在前五篇文章当中,介绍了Sync For ADO.NET Service,从这篇文章开始,将开始介绍有关使用MSF进行文件(夹)同步的相关知识.因为文件同步的应用目前比较广泛,所以可能够要用3-4篇文章来进行介绍.今天先介绍一下有关MSF文件同步的原理和使用MSF中现有的类来实现一个简单的DEMO(本DEMO支持文件和文件夹)同步. 好的,下面开始今天的正文. SyncServices可帮助应用程序在NTFS.FAT或SMB文件系统中同步文件.文件夹和子文件夹.要同步的目录可为本地或远程目录,且

微软同步框架(MSF)入门之五--使用WCF同步远程数据

在之前介绍的两个DEMO中,链接远程服务器所使用的方式都是通过数据库链接串.虽然可以简单的实现所期望的数据同步功能,但这样做有两个问题: 1.不适合进行分布式布署. 2.安全方面存在问题,因为在客户端会持有远程数据库服务器的链接帐号. 因为这两个问题,导致了今天所要说的内容.当然在MSF中是支持采用WCF方式来进行远程数据访问的,而且WCF不仅可以用于数据同步,还可以进行文件同步(会在后续章节中进行介绍). 好了,费话少说,开始今天的正文吧. 下面简要介绍一下今天DEMO的一个具体开发流程. 首

微软同步框架(MSF)入门之二--增量和修改同步方式

在上一篇文章当中,我通过创建一个SnapShot(快照方式)DEMO演示MSF是如何将远程数据服务器中的数据同步到本地 SQLCE数据库中的.今天这篇文章演示如何使用同步操作向导创建另外一种方式,即"只同步新更改和增量更改"方式.当前这种方式比之前一种"快照方式"要更加便捷,而且因为快照方式是采用整表同步,因此不管是数据是否被修改过,都是把所有数据下载到本地,而今天演示的这种方式是只同步修改或新添加的数据,可以说是一种经济实惠的解决方案. 当然,这里并不是说&quo

entityfram...-ef框架数据库链接失败,基础提供程序在open上失败

问题描述 ef框架数据库链接失败,基础提供程序在open上失败 数据库上能看见表,却总是报这个错,求解啊为什么为什么啊,欲哭无泪了我 解决方案 检查你的连接字符串,以及sql server的配置.比如说实例名.账户.是否允许远程访问.防火墙等等.