GetListItemChangesSinceToken
和GetListItemChangesWithKnowledge
有什么区别?
这是很棒的摘要文档,以及有关此事的所有说明:
GetListItemChangesSinceToken:返回自[change]令牌中指定的日期和时间以来对列表所做的更改。
GetListItemChangesWithKnowledge:返回所有满足指定条件并且自指定列表的知识参数中指定的日期时间以来已更改的列表项。
一个使用“更改令牌”,另一个使用“知识”。但是,我无法找到任何文档(或理论依据),以了解一个相对于另一个有什么优势,为什么两者都存在,它们在本质上有何不同,或哪个协议适合在协议客户端中使用。
这些SOAP服务是在[MS-LISTSWS]: Lists Web Service Protocol Specification协议中正式定义的,但是除了它们期望和发出的令牌外,它们看起来是相同的。 (也许只是未记录的错误数量?)
尽管GetListItemChangesWithKnowledge
确实有一个附加的syncScope
参数,但MS-LISTWS表示:
[syncScope]必须为null或为空... [syncScope]被保留并且必须被合并
非常感谢任何输入-特别是第一手知识。
最佳答案
您可能对错误的数量有所了解是正确的...
这是我可以找到的关于这两种方法的信息:GetListItemChangesWithKnowledge
(different MSDN documentation)
SharePoint 2010: Lists.GetListItemChangesWithKnowledge Method建议此方法是在SharePoint 2010和SharePoint Workspace同步中引入的-尽管我无法验证
重要的一点是“返回满足指定条件并且自指定列表的知识参数中指定的日期时间以来已更改的所有列表项”
进一步探讨:knowledge
元素包含“ Microsoft Sync Framework知识数据结构”(MSDN),例如,在此处进行解释(Microsoft Sync Framework, Part 2: Sync Metadata)。GetListItemChangesSinceToken
(different MSDN documentation)
根据MSDN,应使用它代替GetListItemChanges
(请参阅上面的链接)。我假设应该使用它,因为Change
元素进一步指定了要获取的列表项,因为它说:“如果不传递任何内容,则返回列表中的所有项。”changeToken
实际上包含Change Log中的某些内容,而Synchronizing with Windows SharePoint Services, Part 1中又包含有关添加,删除,重命名等的信息。->如果您在应用程序中进行了深入同步,这将非常有用
在上说明了同步,包括有关changeToken
的位信息。
摘要:在我看来,... WithKnowledge方法要复杂一些,因为它使用的是Microsoft Sync的Framework查询语法,其中包括更改的时间限制。 ... SinceToken方法仅查询具有指定操作(例如Delete)的所有更改,而没有时间限制。
问问自己:您是否真的想在缺少文档的情况下实施可能会更改的复杂方法?我建议做两件事:分析(例如,通过Fiddler)Microsoft Workspace 2010产生的流量(还检查Word / Outlook)。正在使用什么方法?你能实现类似的东西吗? GetListItemChanges
对于大多数应用程序还不够吗?