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”,选择该类型。

图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]

选择数据库

图2

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

图3

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

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

添加数据源(DataSet)

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

图4

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

图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表格增加些数据,如下

图6

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

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

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

Microsoft Sync Framework下的快速开发同步程序的更多相关文章

  1. Microsoft Sync Framework 2.1 可再发行程序包 Microsoft Sync Framework 1.0 SP1 - 中文(简体)

    Sync Framework 2.1 引入了新功能,这些功能支持您计算机上的 SQL Server 或 SQL Server Compact 数据库与 SQL Azure 数据库进行同步.此发行版还引 ...

  2. Introducing Microsoft Sync Framework: Sync Services for File Systems

    https://msdn.microsoft.com/en-us/sync/bb887623 Introduction to Microsoft Sync Framework File Synchro ...

  3. 基于MINA框架快速开发网络应用程序

    1.MINA框架简介 MINA(Multipurpose Infrastructure for Network Applications)是用于开发高性能和高可用性的网络应用程序的基础框架.通过使用M ...

  4. ubuntu linux下建立stm32开发环境: 程序烧录 openocd+openjtag

    原文出处: http://blog.csdn.net/embbnux/article/details/17619621 之前建立stm32开发环境,程序也已经编译好生成main.bin,接下来就是要把 ...

  5. aardio + Python 可视化快速开发桌面程序,一键生成独立 EXE

    网络上大家分享的 aardio + Python 混合开发的文章很多,不得不说 aardio 与 Python 混合开发是真的简单 !  快速入门 推荐几个快速上手教程:< aardio + P ...

  6. asp.net导出excel-一行代码实现excel、xml、pdf、word、html、csv等7种格式文件导出功能而且美观-SNF快速开发平台

    分享: 腾讯微博  新浪微博   搜狐微博   网易微博  腾讯朋友  百度贴吧  豆瓣   QQ好友  人人网 作者:王春天  原文地址:http://www.cnblogs.com/spring_ ...

  7. 安装低版本Microsoft .NET Framework 4.5受阻解决方案

    在VS目标框中找不到Microsoft .NET Framework 4.5,项目出错,安装受阻.... 1.Microsoft .NET Framework 安装了高版本后,低版本通过网上上下载的d ...

  8. EMAS Serverless系列~4步教你快速搭建小程序

    体验简介 本实验基于 EMAS Serverless 的云函数.云数据库.云存储等云服务能力一站式快速开发小程序<私人云相册>.Demo 主要包括如下功能: 1 相册管理 2 上传相片 3 ...

  9. Sync FrameWork 文件同步 (源码)

    Sync Framework 是一个功能完善的同步平台,实现了应用程序.服务和设备的协作和脱机访问.Sync Framework 提供了一些可支持在脱机状态下漫游.共享数据和获取数据的技术 和工具.通 ...

随机推荐

  1. 分布式任务调度平台XXL-Job集群版搭建

    如果集群: 保存后: 启动两个 job 第二个job的配置: # web port server.port=8082 # log config logging.config=classpath:log ...

  2. Apache Phoenix基本操作-1

    本篇我们将介绍phoenix的一些基本操作. 1. 如何使用Phoenix输出Hello World? 1.1 使用sqlline终端命令 sqlline.py SZB-L0023780:2181:/ ...

  3. UVA 11731 Ex-circles (外切圆)

    题意:给你三角形的三条边,求图中DEF的面积和阴影部分的面积. 题解:一些模板,三角形的旁切圆半径:.与 三旁心为 #include<set> #include<map> #i ...

  4. MVC 绑定 下拉框数据

    HTML: <div class="form-group col-sm-12"> <div class="col-sm-4"> < ...

  5. MAC 系列 之XCode7.1 + HBuilder MUI 离线打包 ipa 上次application leader 问题:ERROR ITMS - 90534

    解决方法:这个原因 网上说法是 beta 测试版本:不过的确是beta版本(7.3 beta)打包的,所以我有下载了一个正式版本 7.1版本. 再次进行测试打包!

  6. 【转载】JAVA中线程的两种实现方法-实现Runnable接口和继承Thread类

    转自: http://blog.csdn.net/sunguangran/article/details/6069317 非常感谢原作者,整理的这么详细. 在java中可有两种方式实现多线程,一种是继 ...

  7. php特级课---1、网站大访问量如何解决

    php特级课---1.网站大访问量如何解决 一.总结 一句话总结: 负载均衡和冗余技术 1.负载均衡和冗余技术是一回事么? 并不是:负载均衡是用户分流:冗余技术是避免出现单点故障 负载均衡:将不同的用 ...

  8. wpf多程序集之间共享资源字典--CLR名称空间未定义云云

    wpf多程序集之间共享资源字典--CLR名称空间未定义云云 分类: WPF 2012-10-28 10:57 1162人阅读 评论(0) 收藏 举报 以下介绍如何创建可用于在多个程序集之间共享的资源字 ...

  9. 51nod 1040 欧拉函数

    http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1040 1040 最大公约数之和 题目来源: rihkddd 基准时间限制 ...

  10. ASP.NET Core 开源项目整理

    前言: 对 .NET Core 的热情一直没有下降过,新起的项目几乎都是采用 Core 来做开发. 跨平台是一个方面,另外就是 Core 很轻,性能远超很多开发语言(不坑). 一.ASP.NET Co ...