程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> ASP.NET >> 關於ASP.NET >> 微軟同步框架(MSF)入門之四--沖突(Conflict)檢測和處理

微軟同步框架(MSF)入門之四--沖突(Conflict)檢測和處理

編輯:關於ASP.NET

在幾篇文章當中,我介紹了 SnapShot(快照方式)和“只同步新更改和增量更改”這兩種同步方式並對相應的生成文件進行了粗略的分析。今天開始把話題深入一下,聊一聊MSF的沖突檢測和處理。

這裡所說的沖突(Conflict) 主要是指當客戶端與服務端數據在進行CUD時,所操作的數據同步期間發生了錯誤,如通常所說的約束沖突(主鍵重復),以及在同步時多個節點(客戶端)上更改了同一行,或服務端刪除該行而其它節點卻更新了該行便存在沖突等。當然在設計應用程序時應避免產生沖突(比如可通過篩選行和列等方式做到這一點),因為沖突的檢測和解決會增加應用程序的復雜性,增加處理負擔和網絡流量。

當前MSF本身對沖突這種問題也是提供了一些基礎層面上的支持的。下面是其定義的幾種沖突的基本類型(Conflict.ConflictType),它們包括:ClientInsertServerInsert:客戶端和服務器都插入了具有相同主鍵值的行。此操作導致了主鍵沖突。

ClientDeleteServerUpdate:客戶端刪除了服務器更新的行。

ClientUpdateServerDelete:服務器刪除了客戶端更新的行。

ClientUpdateServerUpdate:客戶端和服務器更新了相同的行。

ErrorsOccurred:客戶端或服務器存儲區(通常為數據庫)在應用更改時引發了一個異常。

Unknown:客戶端同步時提供程序能對所遇到的所有沖突進行分類,但服務器同步時不能提供程序。

如果要截獲沖突,可以通過對相應的SyncProvider對象中ApplyChangeFailed事件綁定來完成為,比如下面的示例代碼:

syncClientSyncProvider.ApplyChangeFailed+=
 new EventHandler<ApplyChangeFailedEventArgs>(syncClientSyncProvider_ApplyChangeFailed);

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