WCF上无会话的同步框架

WCF上无会话的同步框架,wcf,session,load-balancing,microsoft-sync-framework,Wcf,Session,Load Balancing,Microsoft Sync Framework,我目前正在寻找使用Microsoft Sync Framework(2.1)将客户端(运行SQL Server Express)与基于云的中央数据存储同步,并使用WCF进行所有通信 中央数据存储是一个SQL数据库,与之连接的处理节点数量可扩展,每个节点都有一个我的WCF服务实例来处理同步调用 同步时可能会有大量数据从服务器传输到客户端,因此我认为批处理是必要的,以避免内存不足问题,更好地处理不可靠的连接等。我的问题是,我看到的N层示例似乎需要WCF服务端的PerSession实例模式,批处理文件

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

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

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


对于我来说,解决配料问题的最佳方法是什么?有没有一种方法可以将批存储在中央数据存储(比如我的服务器数据库)上,或者有没有一种替代方法可以将数据集的大小减少到更健壮的“小规模”传输?

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

不确定它是否有用,但是WindowsAzure同步服务示例可能会为您提供一些关于如何存储批处理文件、编写类似服务和处理批处理的模式


看一看

我可能应该补充一点,即客户端也将彼此同步,因此这将是一个协作场景,因此从我所读到的内容来看,我应该使用SyncOrchestrator和KnowledgeSyncProvider(或其继承的子代)。如果有什么帮助的话,这个示例似乎展示了我想要的大部分内容,除了PerSession实例。云存储在SQL Azure上吗?不,它不在Azure上运行,但本质上我们的基础设施与Azure提供的VM角色是一样的。每个节点都是一个可以处理调用的机器映像,我们可以在任何时候任意添加或删除节点,要求所有节点都是无状态的。好的,谢谢我看了一下,我认为这对我的场景没有帮助。我现在正试图使WCF服务成为一个持久服务,并将状态存储在一个集中数据库中,以便会话中的后续调用使用相同的对象,而不考虑节点。然而,事实证明这很棘手,因为它似乎没有正确地序列化/反序列化SqlSyncProvider,而且我在尝试使用它时遇到了DbMissingCommandExceptions。我提到的示例实际上是将批存储在blob存储中,并且有另一个工作程序应用更改。。。其他同步框架wcf示例也使用文件系统来存储批处理文件,您是否可以将此示例更改为将批处理文件存储在数据库中?是的,对不起,我可能应该在Azure示例中添加更多内容。在玩了一会儿之后,我发现将批写入/读取到DB相对简单,但不幸的是,在无法让服务器端在同步期间(在BeginSession和EndSession之间)正确维护状态后,我不得不放弃。我想我已经接近DurableService了,但我就是无法让SqlSyncProvider完全序列化。我们现在只使用一个支持粘性会话的负载平衡器,使到DB的批处理变得冗余,因为我们现在可以批处理到磁盘!无论如何谢谢你