本文提供完整的 MySyncProvider 實作程式碼,繼承 KnowledgeSyncProvider 並實作 IChangeDataRetriever、INotifyingChangeApplierTarget,使用 SqlMetadataStore 儲存中繼資料,支援遠端 WCF 同步。
SqlMetadataStore:輕量級資料庫儲存中繼資料ReplicaMetadata:存取副本與項目中繼資料、刪除偵測MySimpleDataStore:記憶體內資料存放 (Key=Guid, Value=字串名值對)BeginSession/EndSession:初始化/關閉中繼資料存放區與資料存放區GetChangeBatch:取得變更批次供同步引擎處理ProcessChangeBatch:應用遠端變更,處理衝突ProcessRemoteChangeBatch:WCF 遠端呼叫進入點,回傳 ChangeApplierInfo 支援分批同步完整程式碼見原文 (含中繼資料初始化、變更偵測、衝突解決、知識持久化等邏輯)。
SyncOrchestrator agent = new SyncOrchestrator();
agent.Direction = SyncDirectionOrder.DownloadAndUpload;
agent.LocalProvider = new MySyncProvider(folderPath, providerNameA);
agent.RemoteProvider = new RemoteProviderProxy(remotePath, name, endpointConfig);
stats = agent.Synchronize();