没有会话的WCF上的Sync Framework

时间:2012-03-06 16:49:41

标签: wcf session load-balancing microsoft-sync-framework

我目前正在寻求使用Microsoft Sync Framework(2.1)将客户端(运行SQL Server Express)与基于云的中央数据存储同步,使用WCF进行所有通信。

中央数据存储是一个SQL数据库,连接有可扩展数量的处理节点,每个处理节点都有一个我的WCF服务实例来处理同步调用。

在同步时可能会有大量数据从服务器传输到客户端,所以我认为批处理是必要的,以避免内存不足,更好地处理不可靠的连接等。我的问题是N层示例我已经看到在WCF服务端似乎需要PerSession的实例化模式,并且批处理文件存储在磁盘上的某个位置,这不是一个选项,因为无法保证后续调用将转到同一个处理节点,所以我的WCF服务都设置为PerCall实例化。

解决此批处理问题的最佳方法是什么?有没有办法将批次存储在一个中央数据存储(比如我的服务器数据库)上,或者是否有一种替代方法可以将数据集的大小减小到“咬合大小”的传输,这种传输将更加强大?

1 个答案:

答案 0 :(得分:1)

Sync Framework中的批处理只是用于传输更改,而不是应用程序的更改。因此,如果您有一个同步会话,其更改批量分为10个批次,则不会单独应用单个批次。相反,整个10批次作为一个批次应用。在内部,批处理实际上是重建为数据集的字节数组。因此,您不能在一个节点中拥有批处理的一部分,而在其他节点上则不能拥有其他批处理。

不确定它是否有帮助,但Windows Azure Sync Service示例可能会为您提供有关如何存储批处理文件以及编写类似服务和处理批处理的一些模式。

查看Walkthrough of Windows Azure Sync Service Sample