Microsoft Sync Framework基礎篇 1:Microsoft Sync Framework簡介


前言

最近,Team接手Microsoft Sync Framework(MSF)相關的開發工作,所以得此良機近距離的研究和學習Microsoft Sync Framework這個優秀的同步工具。當然,第一步自然是學習它的使用方式,下面就是本人學習Microsoft Sync Framework的一系列學習筆記,本着分享學習、共同進步的目的,將系列筆記發於博客園。希望與使用Microsoft Sync Framework的園友共同探討和學習。初涉同步領域,錯誤或不當之處,還希望大家不吝指正。

 

下面先給出系列隨筆的大致目錄,在寫作過程中會根據需要進行微調。

目錄

第一部分Microsoft Sync Framework基礎

Microsoft Sync Framework簡介

Microsoft Sync Framework架構與運行時

Microsoft Sync Framework元數據和同步流程

第二部分 同步數據庫

同步數據庫簡介

示例:同步 SQL Server 和 SQL Server Compact

針對同步進行設置

第三部分 同步文件

同步文件簡介

示例

第四部分 同步Web Feeds

同步Web Feeds簡介

第五部分使用自定義提供程序

自定義提供程序基礎

實現簡單的自定義提供程序

實現標准的自定義提供程序

第六部分 Microsoft Sync Framework 4.0 CTP

CTP簡介

Sync Protocol規范

示例:創建和使用Sync Service

SyncSvcUtil簡介

SyncSvcUtilHelper簡介

 

Microsoft Sync Framework簡介

引入Microsoft Sync Framework

同步的優點

在深入學習MSF之前,我們有必要先對同步這個概念來做一個了解,以及為什么同步是必須的。簡單來說,同步是保持兩個端點/數據存儲區中數據一致性的過程。當兩個數據存儲區中內容完全一致時,我們可以說它們是相互同步的。

比如,如果你想手工同步兩個數據庫,我們通常會這么做:

  • 找出源數據庫中的變更
  • 把變更發往目標數據庫
  • 在目標數據庫中應用變更
  • 交換源數據庫和目標數據庫,重復上述步驟

那么,對一個程序,數據存儲區或services來講,我們為何需要為其創建同步機制呢?下面列出了同步最常用的好處:

離線操作:同步最大的優點就是使我們能夠讓程序支持離線操作。如果我們為程序創建了同步機制,那么程序用戶就可以和本地數據進行交互。直到我們需要從服務器端下載新數據時或者重新獲得網絡連接時,才使用聯網操作。

創建更快速和豐富的用戶界面:通過為程序建立同步機制,我們可以創建更加豐富的用戶界面,而不用擔心程序的性能問題。因為所有的數據通常都從本地獲取,所以程序會為我們提供更加迅速的反饋。

降低網絡開銷:支持同步的程序通常支持上傳/下載的增量更新,所以降低了通過網絡傳輸的數據量。

上面只是列出了同步給我們帶來的部分好處,現在,我們應該能夠了解同步的必要性了。下面我們將討論如何實現同步。

實現同步的挑戰

雖然同步在理論上十分簡單,但是,實踐起來卻十分困難。理解這些問題會讓我們更好的了解Microsoft Sync Framework的重要性。具體來說,同步過程中的問題與挑戰如下:

錯誤與失敗處理:設想我們正在同步兩個數據庫,一個程序錯誤發生了,比如數據庫連接超時或者是往目標數據庫應用更改時違反了某個約束,被同步的記錄該如何處理呢?

網絡失效:還是上面同步數據庫的示例,假如一個數據庫在從另一個數據庫獲取更新時,網絡突然失效了,我們該如何應對?

沖突檢測:沖突是指當同一個數據項目同時被同步兩端所修改。我們又該如何應對?

顯然,我們可以自己書寫代碼來解決上述的所有問題。但是如果能有一個同步框架能替我們解決所有這些問題,而我們可以專注於實現自己的業務邏輯時,豈不美哉。好了,是時候介紹Microsoft Sync Framework了,Microsoft為我們提供了這個同步框架,不僅內置了解決上述問題的功能,而且可以在任何網絡、任何協議中同步兩個數據存儲區。

為何選擇Microsoft Sync Framework

Microsoft Sync Framework給我們提供的最大好處在於:它的同步功能支持了數據的離線和在線操作。MSF的主要目的在於允許我們的數據同步集成任何數據源,而不論是何種類型的數據。

讓我們先來看看Microsoft對於Microsoft Sync Framework的官方定義:Sync Framework 是一個功能完善的同步平台,實現了應用程序、服務和設備的協作和脫機訪問。Sync Framework 提供了一些可支持在脫機狀態下漫游、共享數據和獲取數據的技術和工具。通過使用 Sync Framework,開發人員可以構建同步生態系統,通過在任意網絡上使用任意協議,將任意應用程序與任意存儲區中的數據集成在一起。

下面是Microsoft Sync Framework的一些主要特征:

  • 獨立於底層數據存儲、數據類型和協議的強大同步平台
  • 可擴展的提供程序模型
  • 用於同步數據子集的篩選器
  • 內置自動和自定義沖突解決方案
  • 對文件系統、數據庫和RSS、Atom feeds的同步支持
  • 支持對等協作方式和客戶端-服務器拓撲
  • 為托管代碼和非托管代碼都提供了API

Microsoft Sync Framework安裝

Microsoft Sync Framework 2.1

目前,Microsoft Sync Framework的最新發布版本是2.1(當然下面即將提到的Sync Framework 4.0 CTP除外),我們可以通過SDK安裝包安裝開發組件。從 Microsoft Download Center(Microsoft 下載中心)下載此安裝包,按照該網站上提供的安裝說明操作。

在 x86 平台上,x86 安裝包將會將主要組件安裝到 Program Files\Microsoft SDKs\Microsoft Sync Framework\2.1 中,並且將托管 DLL 添加到全局程序集緩存 (GAC)。在 64 位平台上,x86 和 x64 安裝包安裝到 Program Files (x86)\Microsoft SDKs\Microsoft Sync Framework\2.1 中。

Sync Framework 2.1 包括以下方面的新功能和增強功能:

數據庫提供程序

  • SQL Azure 同步
  • 成批應用變更
  • 基於參數的篩選
  • 刪除作用域和模板
  • 升級元數據格式
  • SQL Server Compact 3.5 SP2 兼容性

Microsoft Sync Framework 4.0 CTP

Microsoft Sync Framework 4.0 社區技術預覽版(CTP)建立在Sync Framework 2.1之上。實際上,Sync Framework 2.1是安裝MSF 4.0 CTP的前提,盡管Sync Framework 4.0的最終發布版本會是一個完整的安裝包,不再需要Sync Framework 2.1。

請按以下步驟安裝Microsoft Sync Framework 4.0 CTP版本:

1.    安裝Microsoft Sync Framework 2.1 SDK,見前一小節,或直接從這里下載:http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=23217

2.    點擊以下鏈接 Sync Framework在線調查 完成Microsoft關於Sync Framework的在線調查:

3.    一旦你提交了該在線調查,你將會在Microsoft Connect站點看到Sync Framework 4.0 CTP的下載鏈接:

Microsoft Sync Framework 4.0 CTP對Sync Framework 2.1進行了擴展,以允許我們針對任何平台來創建脫機應用。在Sync Framework之前的版本中,我們必須使用安裝了Sync Framework運行時的Windows系統來作為客戶端。而CTP允許Microsoft的其他平台比如Silverlight, Windows Phone 7, 和Windows Mobile, 以及其他的非微軟平台如iPhone, Android, 和Blackberry,而不需要為這些平台的客戶端安裝任何Sync Framework組件,這是因為所有的同步邏輯都從客戶端移到了服務端。那么Microsoft Sync Framework 4.0 CTP的這種跨平台能力是如何得到的呢,答案在於它定義了一個新的基於HTTP的同步協議:Sync Protocol。

本系列博客以Sync Framework 2.1為主要目標,當然,對於Microsoft Sync Framework 4.0 CTP我也會在專門的篇章里給予詳細介紹。

一個簡單的示例

下面這個例子將使用Sync Framework內置的文件同步提供程序來實現兩個目錄之間的同步。

  1. 新建一個Console Application(控制台應用程序),名為FileSyncSample。
  2. 添加對Microsoft.Synchronization、Microsoft.Synchronization.Files程序集的引用。
  3. 修改Main函數為如下格式:
using System;
using Microsoft.Synchronization.Files;
using Microsoft.Synchronization;

namespace FileSyncSample
{
class Program
{
static void Main(string[] args)
{
// Create Source Sync Provider
FileSyncProvider sourceProvider = new FileSyncProvider(@"C:\TestSync1");
// Create Target Sync Provider
FileSyncProvider destProvider = new FileSyncProvider(@"C:\TestSync2");

// Create Sync Orchestrator(同步會話)
SyncOrchestrator syncAgent = new SyncOrchestrator();
syncAgent.LocalProvider = sourceProvider;
syncAgent.RemoteProvider = destProvider;

// 開始同步
syncAgent.Synchronize();

Console.WriteLine("同步完成");
}
}
}

上面這個簡單的程序就完成了兩個目錄之間的同步工作,請建立相應的目錄和文件來驗證它的同步功能吧,相信你會和我一樣驚訝於Sync Framework讓我們的同步工作變得如此簡單,那么讓我們一起走進Microsoft Sync Framework的世界吧。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM