在上一篇文章當中,簡要介紹了一下如何使用現有的 SyncProvider 對象來進行文件(夾)同步。今天的這個DEMO主要演示通過繼承方式來實現自己的SyncProvider來進行相關同步元數據存儲,當然這樣做會給我們以額外的好處,比如按自己的意願來創建、版本和刪除項的信息等。另外就是對同步應用程序的工作原理也會有一個大概的認識。
在開始正文之前,我在網上看到了這篇文章對MSF的負責報道,當然它所說的部分觀點我同意。MSF的確不那麼好學,官方的文檔的確也難懂,但事情總要慢慢來,只有通過不斷積累不斷進步,產品才會做的越來越好。就讓我們一起與MSF共同進步吧!
好了,開始今天的正文。
首先要解釋一下自定義同步程序(本DEMO中為“MySyncProvider”)所要繼承和實現的接口:
KnowledgeSyncProvider:表示使用知識執行同步的同步提供程序
IChangeDataRetriever:表示目標提供程序從源提供程序檢索項數據所使用的機制。
INotifyingChangeApplierTarget:表示可將項變更保存到副本中的對象
備注:當使用NotifyingChangeApplier對象以幫助將變更應用到目標副本時,目標提供程序必須實現此接口。INotifyingChangeApplierTarget對象傳遞給ApplyChanges方法。然後,NotifyingChangeApplier
對象調用INotifyingChangeApplierTarget方法,將變更和沖突保存到目標副本中。
KnowledgeSyncProvider方法定義如下主要方法:
BeginSession 在派生類中重寫時,通知提供程序它將聯接一個同步會話。
EndSession 在派生類中重寫時,通知提供程序它所登記到的同步會話已經完成。
GetChangeBatch 在派生類中重寫時,獲取包含某些項的項元數據的變更批,這些項不包含在來自目標提供程序的指定知識中。
GetFullEnumerationChangeBatch 在派生類中重寫時,獲取作為完全枚舉一部分的變更批,該變更批中包含ID大於指定下限的項的項元數據。
GetSyncBatchParameters 在派生類中重寫時,獲取要包含在變更批中的項變更數,以及同步作用域的當前知識。
ProcessChangeBatch 在派生類中重寫時,通過檢測沖突和將變更應用到項存儲區中來處理變更組。
ProcessFullEnumerationChangeBatch 在派生類中重寫時,通過將變更應用到項存儲區中來處理變更組,以用於完全枚舉。