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

简介:
   在该框架中,提供了用于存取维护元数据的一些相应工具类,即Metadata Storage Service。它可帮助存储提供程的同步元数据,该提供程序表示无法通过其他方式存储元数据的副本。Metadata Storage Service 使用占用较小内和磁盘空间的轻型数据库,可以随提供程序重新分发,并且安全可靠。
     其所提供的API  将元数据存储区与用于访问元数据存储区的接口和方法明确区分开,这样即可实现备用存储区,对提供程序稍作变更即可使用备用存储区。
    当然上面是SDK中的一些说法:)
    Metadata Storage Service API中有一些类要着重说明一下:      
    SqlMetadataStore 类表示通过使用轻型数据库存储元数据来实现的元数据存储区。Metadata Storage Service 提供了 Metadata Storage Service API 的一个完整的实现,该实现使用轻型数据库在文件系统指定位置的一个数据库文件中存储同步所需的所有元数据。此实现的入口点是 SqlMetadataStore。

    ReplicaMetadata 类提供对元数据存储区中的副本元数据和项元数据的访问。ReplicaMetadata 还对删除检测和用于实现同步提供程序方法的帮助器提供服务。

           
    这两个类是今天DEMO的主角,里面的大部分方面都在源码中的MySimpleSyncProvider.cs加以实现。

    今天的这个例子,主要是演示了如何使用wcf来同步远程的元数据。当然这个例子是MSF小组公布的一些DEMO中的一个。通过它我们就可以大概了解一下如何使用etadata Storage Service进行维护操作同步元数据以及使用WCF来同步这些修改变更的原数据信息。
    首先要说明的是,当前的同步方式是MSF中所提到的四种参与者类型中的代理参与者,相关内容参见链接:)
    
    

    
    其中的代理程序参见如下:
    
ContractedBlock.gif Code

     
    当然上面RemoteProviderProxy中的一个重要属性:Sync101WebServiceClient是WCF客户端的实现代码。
    当进行同步SyncProvider绑定时,会将RemoteProviderProxy绑定到RemoteProvider属性上,当然通过上面代码,我们会发现,其实最终还是要通过Sync101WebServiceClient实例了进行远程元数据同步操作。下面是WCF接口代码(ISync101WebService.cs):
 
ContractedBlock.gif Code
    
    而最终的实现类Sync101WebService:
    
ContractedBlock.gif Code
    
    
    到这里服务端的代码就全部列举出来了。当然本文中介绍的是元数据同步,而相应的SyncProvider实现是通过MySimpleSyncProvider.cs文件提供的,当然为了不让我的某些错误理解影响大家阅读源码,这里直接将相应的英文注释也放在这里。   
ContractedBlock.gif Code
    最后,我们只要用下列代码来绑定相应的类并进行同步即可(参见MyTestProgram.cs文件):
ContractedBlock.gif Code
 

     好了,今天的内容就到这里了,更多的内容参见这个链接:)


本文转自 daizhenjun 51CTO博客,原文链接:http://blog.51cto.com/daizhj/124367,如需转载请自行联系原作者
相关文章
|
9月前
|
C++
WCF框架-分布式联调
WCF框架-分布式联调
56 0
|
9月前
|
网络协议 网络架构 Windows
框架学习——WCF框架
框架学习——WCF框架
230 0
|
9月前
|
Windows
安装wcf框架
安装wcf框架
|
9月前
|
API 数据库
如何使用WCF框架和EF框架实现对数据库的操作
如何使用WCF框架和EF框架实现对数据库的操作
|
9月前
|
数据库 C# 数据安全/隐私保护
使用分布式框架WCF出现的BUG记录
使用分布式框架WCF出现的BUG记录
|
监控 NoSQL
Wcf通讯基础框架方案(一)——基本结构
由于希望使用Wcf作为公司内的通讯框架,因此基于Wcf进行了一些扩展,主要的目的有以下几个方面: 1) 希望减少客户端调用的复杂度,调用方式简化为WcfServiceLocator.Create().Add(1,2)。
770 0
|
XML 监控 数据格式
Wcf通讯基础框架方案(二)——集中配置
从这次开始在几个方面简单阐述一下实现,集中配置是这个框架很大的一个目的,首先在数据库中会有这么一些表: 其实可以看到这些表的结构,应该是和配置节点中的层次有对应的 1) Service表描述的是服务,主要保存服务行为以及服务的配置。
578 0
|
监控
Wcf通讯基础框架方案(三)——客户端
假设定义了一个服务契约: [ServiceContract(Namespace = "WcfExtension.Services.Interface")] public interface ITestService { [OperationContract] ...
689 0
|
监控 负载均衡 缓存
Wcf通讯基础框架方案(四)——横切日志
在第一篇文章中已经列出了几种日志的概览: 所有的日志都有一个最终基类,来看看这个类: [DataContract(Namespace = "WcfExtension")] [KnownType(typeof(WcfExceptionInfo))] [KnownType(t...
609 0
|
缓存 NoSQL Redis
Wcf通讯基础框架方案(五)——更新通知
对于负载均衡环境,多服务器内存中缓存数据的话,需要解决的一个很重要的问题就是一旦数据库中数据有更新,怎么让缓存的数据立即更新? 如果可以容忍延迟或是差异性的话,可以考虑缓存的数据有一个过期时间。但是,最好的方式还是采用通知方式,或者说发布订阅方式。
756 0