快速业务通道

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

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-05-19

在之前介绍的两个DEMO中,链接远程服务器所使用的方式都是通过数据库链接串。虽然可以简单的实现所期望的数据同步功能,但这样做有两个问题:

1.不适合进行分布式布署.

2.安全方面存在问题,因为在客户端会持有远程数据库服务器的链接帐号。

因为这两个问题,导致了今天所要说的内容。当然在MSF中是支持采用WCF方式来进行远程数据访问的,而且WCF不仅可以用于数据同步,还可以进行文件同步(会在后续章节中进行介绍)。

好了,费话少说,开始今天的正文吧。

下面简要介绍一下今天DEMO的一个具体开发流程。

首先我们采用我在第二篇文章中所说的方式,用同步设计向导创建一个同步增量的MSF 对象,将其名称命名为:WcfSyncData.sync。

在生成相应的DataSet类(WcfDataSet.xsd)文件之后,我们通过从“文件”-->"添加"-->"新建项目"来构造一个WCF服务库,并将其命名为WcfSyncService。这样在我们的解决方案中就包含了两

个项目,一个是我们的同步DEMO,一个就是新建的WCF服务项目。

接下来我们在DEMO项目中的WcfSyncData.sync文件上双击,在弹出的“配置数据同步”窗口中的“服务器项目位置”处的下拉列表中就可以看出我们刚才新建的 WCFSyncService项,我们选择它并单击确定即可,如下图所示:

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

这样我们在看WcfSyncService项目中就会多出几个文件,它们是:

WcfSyncData.Server.Sync

WcfSyncData.Server.Designer.cs

WcfSyncData.Server.SyncContract.cs

其中的WcfSyncData.Server.Designer.cs内容就是以前在DEMO项目中的WcfSyncData.Designer.cs中的关于服务端SyncAdapter(数据库访问操作,SQL命令等)部分的内容,这里设计器自动将这部分代码迁移到了当前的WCF项目中,代码如下(相应的生成类内容分析参见这篇文章):

public partial class dnt_spacelinksSyncAdapter : Microsoft.Synchronization.Data.Server.SyncAdapter {
partial void OnInitialized();
public dnt_spacelinksSyncAdapter() {
this.InitializeCommands();
this.InitializeAdapterProperties();
this.OnInitialized();
}
[System.Diagnostics.DebuggerNonUserCodeAttribute()]
private void InitializeCommands() {
// dnt_spacelinksSyncTableInsertCommand command.
this.InsertCommand = new System.Data.SqlClient.SqlCommand();
this.InsertCommand.CommandText = @" SET IDENTITY_INSERT dbo.dnt_spacelinks ON INSERT INTO dbo.dnt_spacelinks ([linkid], [userid], [linktitle], [linkurl], [description], [LastEditDate], [CreationDate]) VALUES (@linkid, @userid, @linktitle, @linkurl, @description, @LastEditDate, @CreationDate) SET @sync_row_count = @@rowcount SET IDENTITY_INSERT dbo.dnt_spacelinks OFF ";
this.InsertCommand.CommandType = System.Data.CommandType.Text;
this.InsertCommand.Parameters.Add(new System.Data.SqlClient.SqlParameter("@linkid", System.Data.SqlDbType.Int));
this.InsertCommand.Parameters.Add(new System.Data.SqlClient.SqlParameter("@userid", System.Data.SqlDbType.Int));
this.InsertCommand.Parameters.Add(new System.Data.SqlClient.SqlParameter("@linktitle", System.Data.SqlDbType.NVarChar));
this.InsertCommand.Parameters.Add(new System.Data.SqlClient.SqlParameter("@linkurl", System.Data.SqlDbType.VarChar));
this.InsertCommand.Parameters

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号