前幾篇文章介紹了快照與增量同步兩種模式,並對生成的文件進行了初步分析。本文將深入探討 MSF 的衝突檢測與處理機制。
當客戶端與伺服端在同步期間對同一數據執行 CUD(建立、更新、刪除)操作時,若發生錯誤即構成衝突。常見類型包括:主鍵重複(約束衝突)、多節點同時修改同一行、伺服端刪除而客戶端更新同一行等。雖然應用設計應盡量避免衝突(如透過篩選行、列),但衝突處理會增加應用複雜度、處理負擔與網路流量。
MSF 在 Conflict.ConflictType 中定義了以下基礎衝突類型:
可透過訂閱 SyncProvider 物件的 ApplyChangeFailed 事件來攔截衝突,範例代碼如下:
syncClientSyncProvider.ApplyChangeFailed +=
new EventHandler<ApplyChangeFailedEventArgs>(syncClientSyncProvider_ApplyChangeFailed);
在事件處理常式中,開發者可根據衝突類型採取相應的解決策略(如保留伺服端版本、合併變更、記錄日誌等),確保數據一致性。