参考文献:
当然,关于这个问题的更多信息,请参考维基百科。
Vdirsyncer作者的简单同步算法。
SyncML®:同步和管理移动数据(O'Reilly Safari图书)。
乐观复制 YASUSHI SAITO(惠普实验室)和MARC SHAPIRO(微软研究有限公司)- ACM计算调查,第5卷,第N号,2005年3月。
Alexander Traud,Juergen Nagler-Ihlein,Frank Kargl和Michael Weber。 2008年。通过重用SyncML进行循环数据同步。在移动数据管理的第9届国际会议(MDM'08)论文集中。 IEEE计算机学会,华盛顿特区,美国,165-172。 DOI=10.1109/MDM.2008.10 http://dx.doi.org/10.1109/MDM.2008.10
Lam,F.,Lam,N.和Wong,R。 2002年。移动XML数据的高效同步。在信息和知识管理的第11届国际会议论文集(美国弗吉尼亚州麦克林,2002年11月04日至09日)。 CIKM'02。 ACM,纽约,NY,153-160。 DOI=http://doi.acm.org/10.1145/584792.584820
Cunha,P.R。和Maibaum,T.S。 1981年。资源&平衡抽象数据类型+同步-面向消息的编程方法论。在软件工程的第5届国际会议论文集(美国加利福尼亚州圣迭戈,1981年3月9日至12日)。国际软件工程会议。 IEEE出版社,皮斯卡特维,NJ,263-272。
(最后三个来自ACM数字图书馆,不知道您是否是会员或是否可以通过其他渠道获取这些内容)。
来自Dr.Dobbs网站:
来自arxiv.org:
DeletedRows = (id,table_name,pk_column,pk_column_value,timestamp)
因此,您必须读取DeletedRows表的所有新行,并使用table_name,pk_column和pk_column_value在服务器上执行删除操作。const string path = "localrepository.db";
//Create our azure mobile app client
this.MobileService = new MobileServiceClient("the api address as setup on Mobile app services in azure");
//setup our local sqlite store and initialize a table
var repository = new MobileServiceSQLiteStore(path);
// initialize a Foo table
store.DefineTable<Foo>();
// init repository synchronisation
await this.MobileService.SyncContext.InitializeAsync(repository);
var fooTable = this.MobileService.GetSyncTable<Foo>();
4) 然后推送和拉取您的数据,以确保我们拥有最新的更改:
await this.MobileService.SyncContext.PushAsync();
await this.saleItemsTable.PullAsync("allFoos", fooTable.CreateQuery());