生成 RSS 和 Atom 馈送
Sync Framework Web 同步组件允许副本将自己的数据作为 RSS 或 Atom 馈送发布给感兴趣的订阅服务器。这些 Web 同步组件在内部将该馈送表示为同步提供程序并使用其他 Sync Framework 组件在馈送提供程序和表示副本的提供程序之间同步馈送项。因此,应用程序只需要实现相关的方法将 ID 和项数据转换为该馈送要求的 XML 格式。Sync Framework 负责执行常见同步任务,如检测变更、检测冲突和将变更应用到生成的馈送。
为了生成馈送,应用程序创建馈送生成方对象并提供以下项:
表示要生成的副本的同步提供程序。
ID 和项转换器对象。
包含空的 RSS 或 Atom 馈送的流。
应用程序然后调用馈送生成方对象的相应方法来生成馈送。为了生成馈送,Sync Framework 在同步提供程序中包装馈送并启动一个同步会话,该会话使用本地提供程序作为源提供程序而将馈送提供程序作为目标提供程序。在处理期间,Sync Framework 调用 ID 和项转换器将 ID 和项数据转换为有效的 XML 格式,然后将 XML 数据插入流中相应的位置。处理完成后,流馈送将包含副本中的项以及有关这些项的 FeedSync 元数据。然后可以使用相应的机制将此流发布到馈送订阅服务器。
有关实现 ID 和项转换器对象的更多信息,请参见为 RSS 和 Atom 馈送转换 ID 和项。
有关 FeedSync 馈送的更多信息,请参见 FeedSync 网站。
通过使用托管代码来生成馈送
若要生成馈送,请首先通过使用 FeedProducer 并为其传递以下对象来创建一个 FeedProducer 对象:
由应用程序实现的 FeedIdConverter 对象。
由应用程序实现的 FeedItemConverter 对象。
表示要生成的副本的 KnowledgeSyncProvider 对象。
然后,调用 ProduceFeed 并为其传递包含空的 RSS 或 Atom 馈送的 Stream 对象。处理完成后,此 Stream 对象将包含具有副本中的项的 FeedSync 馈送。请注意必须用读写权限打开此流。
若要生成部分馈送,请将 EndpointState 对象传递给 ProduceFeed。这将为增量馈送建立一个基线,该增量馈送包含所有未包括在基线中的副本项。
通过使用非托管代码来生成馈送
若要生成馈送,请首先通过将 CLSID_FeedSyncServices 和 IID_IFeedProducerConsumerServices 传递给 CoCreateInstance 函数来创建一个 IFeedProducerConsumerServices 对象。然后,通过使用 IFeedProducerConsumerServices::CreateFeedProducer 创建 IFeedProducer 对象。
为了生成馈送,调用 IFeedProducer::ProduceFeed 并为其传递以下对象:
由应用程序实现的 IFeedIdConverter 对象。
由应用程序实现的 IFeedItemConverter 对象。
表示要生成的副本的 ISyncProvider 对象。
包含空的 RSS 或 Atom 馈送的 IStream 对象。请注意必须用读写权限打开此流。
处理完成后,IStream 对象将包含具有副本中的项的 FeedSync 馈送。
若要生成部分馈送,请将 IEndpointState 对象传递给 IFeedProducer::ProduceFeed。这将为增量馈送建立一个基线,该增量馈送包含所有未包括在基线中的副本项。
请参阅
参考
IFeedProducerConsumerServices 接口
IFeedProducer 接口
IEndpointState 接口
Microsoft.Synchronization.FeedSync
FeedProducer
EndpointState