Microsoft Sync Framework下的快速开发同步程序

本文涉及的产品
云数据库 RDS SQL Server,独享型 2核4GB
简介:

Microsoft Sync Frameworks简称MSF,是一个综合的同步平台,MSF支持应用程序,服务,设备的在线以及离线同步。MSF主要有以下几个部件组成:
    * Sync Services for ADO.NET: 同步ADO.NET的数据
    * Sync Services for FeedSync: 同步 RSS 和 ATOM 种子
    * Sync Services for File Systems: 同步文件和文件夹
    * Sync Framework Core Runtime: 客户化的同步方案,支持native code。

本文主要讲述如何快速建立一个Sync Services for ADO.NET的应用进行数据同步。由于在PC的winform项目可以在使用向导快速建立同步程序,所以本文先介绍PC的webform程序上的Sync Services for ADO.NET开发,陆续会介绍移动设备上的开发,这也是我最关心的部分。

下载安装


请到以下链接下载 Microsoft Synchronization Services for ADO.NET。 Microsoft Synchronization Services for ADO.NET本地缓存数据需要使用SQL CE 3.5,不能支持SQL CE 3.0。SQL CE 3.5和3.0的差异可以参考 .NET Campact Framework下SQL CE兼容性问题

建立Local Database Cache


先建立一个PC的winform程序。右键项目新建“New Item”,经过了Microsoft Synchronization Services for ADO.NET 的安装,新建向导会出现“Local Database Cache”,选择该类型。

2009041707301123.png
图1

这个文件可以建立服务器与本地数据库的同步关系,服务器数据库可以为支持ADO.NET的任何数据库,我使用免费的SQL Server Express,本地数据库是SQL CE 3.5,可以不用手工建立,向导程序根据服务器数据自动生成本地数据库。SQL Server Express的下载安装可以参考 SQL Server Express和SQL Server Compact的应用
在SQL Server Express上建立一个库叫做TestDB,建立两个表,表结构如下: 

复制代码
CREATE TABLE [dbo].[t1](
 [f1] [
int ] NOT NULL,
 [f2] [nvarchar](
50 ) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
 CONSTRAINT [PK_t1] PRIMARY KEY CLUSTERED 
(
 [f1] ASC
)WITH (PAD_INDEX  
=  OFF, IGNORE_DUP_KEY  =  OFF) ON [PRIMARY]
) ON [PRIMARY]

CREATE TABLE [dbo].[t2](
 [f1] [
int ] NOT NULL,
 [f2] [datetime] NOT NULL,
 CONSTRAINT [PK_t2] PRIMARY KEY CLUSTERED 
(
 [f1] ASC
)WITH (PAD_INDEX  
=  OFF, IGNORE_DUP_KEY  =  OFF) ON [PRIMARY]
) ON [PRIMARY]

复制代码

 

选择数据库

 2009041707315743.png

图2

配置完数据库服务器后,可以选择“Add”增加需要同步的表,在例子中选择t1和t2。

2009041707321890.png

图3

如果数据表属于下面的情况,那么就不能显示出来进行选择:
1.不是用户默认的原数据(user’s default schema)。
2.没有定义主键。
3.名字长于118个字符。
4.字段中有SQL CE 3.5不支持的数据类型。

在默认选择下向导会为原始表自动增加LastEditDate和CreationDate自动。同时增加数据表 (原表名_TombStone)。

添加数据源(DataSet)


在增加同步数据表完毕后,向导自动弹出增加数据源(DataSet)的向导,填写DataSet的名字,选择所以表格和字段。

2009041707324485.png
图4

系统会自动的生成处理类和数据类,如下图

2009041707330478.png

图5

代码编写

 

在程序中增加Load事件处理函数和增加一个按钮以及处理函数,添加代码如下:

 

复制代码
     public   partial   class  Form1 : Form
    {
        TestDbDataSet testDbDataSet 
=   new  TestDbDataSet();
        TestDbDataSetTableAdapters.t1TableAdapter t1TableAdapter 
=   new  TestDbDataSetTableAdapters.t1TableAdapter();
        TestDbDataSetTableAdapters.TableAdapterManager tableAdapterManager 
=   new  TestDbDataSetTableAdapters.TableAdapterManager();
        
        
public  Form1()
        {
            InitializeComponent();
        }

        
private   void  button1_Click( object  sender, EventArgs e)
        {
            tableAdapterManager.UpdateAll(testDbDataSet);

            
// Call SyncAgent.Synchronize() to initiate the synchronization process.
            
// Synchronization only updates the local database, not your project's data source.
            LocalDataCache1SyncAgent syncAgent  =   new  LocalDataCache1SyncAgent();
            Microsoft.Synchronization.Data.SyncStatistics syncStats 
=  syncAgent.Synchronize();
            testDbDataSet.t1.Merge(t1TableAdapter.GetData());
        }

        
private   void  Form1_Load( object  sender, EventArgs e)
        {
            t1TableAdapter.Fill(testDbDataSet.t1);
        }
    }

复制代码


 一个从server同步到本地SQL CE的程序完成了。

 TestDbDataSet: 表示一个强类型的内存数据缓存。
 t1TableAdapter 表示用于取数据库和保存数据的connection和commands。
 TableAdapterManager 用于协助TableAdapters之间关联关系的更新(Hierarchical Update)。

测试

在SQL Server Express里的t1表格增加些数据,如下

2009041707374841.png

图6

运行程序,点击同步按钮进行同步。

在VS2008打开SQL CE数据库,你会发现SQL CE库的数据和SQL Server Express里的t1表格一模一样。

修改,删除SQL Server Express里的t1表格的数据,进行再测试,也会发现SQL CE库同步在服务器上的数据。

 

参考文献
Overview and Scenarios (Sync Services)

Sync Framework Overview

How to Choose a Data Synchronization Technology – Offline & Collaboration 
Sync 101 - Getting Started with Sync Framework v2

Sync101 - (Windows Mobile) Device Synchronization

Introduction to ADO.NET Sync Services



    本文转自Jake Lin博客园博客,原文链接:http://www.cnblogs.com/procoder/archive/2009/04/17/1437686.html,如需转载请自行联系原作者


相关实践学习
使用SQL语句管理索引
本次实验主要介绍如何在RDS-SQLServer数据库中,使用SQL语句管理索引。
SQL Server on Linux入门教程
SQL Server数据库一直只提供Windows下的版本。2016年微软宣布推出可运行在Linux系统下的SQL Server数据库,该版本目前还是早期预览版本。本课程主要介绍SQLServer On Linux的基本知识。 相关的阿里云产品:云数据库RDS SQL Server版 RDS SQL Server不仅拥有高可用架构和任意时间点的数据恢复功能,强力支撑各种企业应用,同时也包含了微软的License费用,减少额外支出。 了解产品详情: https://www.aliyun.com/product/rds/sqlserver
相关文章
|
SQL 数据库
Microsoft SQL Server 2000数据还原
Microsoft SQL Server 2000还原数据操作流程 1、开始 - 所有程序 - Microsoft SQL Server - 企业管理器(如图1-1)。
1053 0
|
SQL 数据库
Microsoft SQL Server 2000数据附加
Microsoft SQL Server 2000附加数据操作流程 1、开始 - 所有程序 - Microsoft SQL Server - 企业管理器(如图1-1)。
1057 0
|
SQL 数据库 Windows
Microsoft SQL Server 2008数据还原
Microsoft SQL Server 2008还原数据操作流程 1、开始 - 所有程序 - Microsoft SQL Server 2008 R2 - SQL Server Management Studio(如图1-1)。
1069 0
|
SQL 数据库 Windows
Microsoft SQL Server 2000数据库备份
Microsoft SQL Server 2000备份数据操作流程 1、开始 - 所有程序 - Microsoft SQL Server - 企业管理器(如图1-1)。
1181 0
|
SQL 监控 数据库
Microsoft SQL Server 2008清理LDF日志
Microsoft SQL Server 2008 LDF数据文件清理方法。 PS:由于该操作涉及数据库中的数据,请在操作前先做好数据备份。 准备:Microsoft SQL Server 2008清理LDF脚本,请点击下载获取。
1626 0
|
SQL 数据库 Windows
Microsoft SQL Server 2008修改混合模式
数据库身份验证SQL Server和Windows设置 1、开始 - 所有程序 - Microsoft SQL Server 2008 R2 - SQL Server Management Studio(如图1-1) 图 1-1 2、进入后会弹出窗口【连接到服务器】,在【身份验证】选择中【Windows身份验证】— 点击【连接】(如图1-2) 图 1-2 3、在数据库服务实例名(如图1-3,WIN-VQ5SKTLJ9EU\sql位置)点击鼠标右键【属性】。
1149 0
|
SQL 数据库 数据安全/隐私保护
Microsoft SQL Server 2008修改sa密码
数据库sa密码忘记处理方案 1、开始 - 所有程序 - Microsoft SQL Server 2008 R2 - 点击SQL Server Management Studio(如图1-1)。
1475 0
|
SQL 数据库 数据安全/隐私保护
Microsoft SQL Server 2000修改sa密码提示错误:2812
报错提示:错误 2812:未能找到存储过程 ‘ sp_password ’。 准备:存储过程修复脚本,请点击下载获取。下载完毕后,请放置C盘根目录并解压。
1062 0
|
SQL 数据库 Windows
Microsoft SQL Server 2000修改混合模式
数据库身份验证SQL Server和Windows设置 1、开始—所有程序—Microsoft SQL Server—企业管理器,进入Microsoft SQL Server 2000数据库中(如图1-1)。
1146 0
|
SQL 数据库 Windows
Microsoft SQL Server 2000收缩MDF数据
Microsoft SQL Server 2000 MDF数据文件清理方法。 PS:由于该操作涉及数据库中的数据,请在操作前先做好数据备份。 准备:Microsoft SQL Server 2000收缩MDF脚本,请点击下载获取。
1094 0