程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> ASP.NET >> 關於ASP.NET >> 微軟同步框架(MSF)入門開篇(附SnapShot快照Demo)

微軟同步框架(MSF)入門開篇(附SnapShot快照Demo)

編輯:關於ASP.NET

在Teched2008上聽了一節關於MSF(Microsoft Sync Framework 微軟同步框架),這一框架允許開發者創建離線式的應用、設備和服務,可以與任何應用的任意類型數據進行集成。

有關這個模架的介紹在網上有一些鏈接,而園子裡也有朋友做過這方面的介紹。當時東西好不好,只有用過才會知道。今天這篇文章就是簡單試用一把MSF來開發ADO.NET同步的DEMO(當然其也支持文件和文件夾的同步,我會在以後寫文介紹研究心得)。因為是初次使用,所以截圖多了一些,當然在概念理解上也可能有偏差,有這方面開發經驗的朋友歡迎指正。

好了,開始正文吧。

在開發本應用之前,假設您已下載並安裝了相應的MSF框架服務包和SDK,如果沒安裝的朋友請自行下載並安裝。

本人下載安裝的是:SyncSetup_zh-CHS.x86.zip(因為本文的VS是中文的,所以就使用了Microsoft Sync Framework v1.0 - 簡體中文)當然,目前該框架的最新版本是Sync Framework v2 CTP1(目前暫無中文開發包,且不支持在1.0和2.0版本之間的組件協同操作Interoperability)。

首先,我們需要了解一下該框架實現ADO.NET同步的實現原理。請看下圖:

我們可以看到在客戶端數據庫(SqlServerCompact3.5)與服務端數據(Server Database)之間是提供了一組(兩個)Provider,分別是ClientSyncProvider和ServerSyncProvider, 其中:

ClientSyncProvider用於:

提取(供)與客戶端數據存儲區(SqlServerCompact3.5)進行通信並將同步代理(SyncAgent)與該數據存儲區的特定實現隔離的客戶端同步提供程序。說明白了就是該對象用於與本地數據存儲區進行通信。

ServerSyncProvider用於:

提取(供)與服務器數據存儲區(ServerDatabase)進行通信並將同步代理與該數據存儲區的特定實現隔離的一般服務器同步提供程序。該對象用於與遠程數據存儲區進行通信。

這兩個對象會通過下面的SyncAgent類以屬性方式來提供:)而圖中的SyncAgent用於對象組織同步過程。其中的:

Synchronize()方法會在本地和遠程數據存儲之間同步數據(下面會用到)。

LocalProvider屬性: 獲取或設置一個派生自ClientSyncProvider的對象。

RemoteProvider屬性:獲取或設置一個派生自ServerSyncProvider的對象。

圖中的SyncTable對象表示在同步過程中涉及的表的客戶端設置。比如我們可以通過SyncDirection屬性來設置該值表示相對於客戶端的同步方向,其類型為枚舉,包括如下幾個值:

Bidirectional:首次同步期間,客戶端通常從服務器下載架構和一個初始數據集。執行後續同步時,客戶端將更改上載到服務器,然後從服務器下載更改。

DownloadOnly:首次同步期間,客戶端通常從服務器下載架構和一個初始數據集。執行後續同步時,客戶端從服務器下載更改。

Snapshot: 客戶端將從服務器下載一個數據集。每次同步期間,這些數據都將完全刷新(本文演示)UploadOnly: 首次同步期間,客戶端通常從服務器下載架構。執行後續同步時,客戶端將更改上載到服務器。

圖中的SyncAdapter用於提供一組數據命令,這些命令用於獲取架構信息以及在服務器數據庫中檢索和應用更改(通過SQL語句或存儲過程)。

當然上圖中的結構有些復雜,涉及到的類多了一些。但我們不用手工來寫這些代碼。只要按照操作導航一步步走下來,就會生成這個類了。下面就以一個快照方式(Snapshot)來開發一個DEMO來大概了解一下相應的操作流程。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved