1

我正在构建一个共享状态应用程序,其中 WCF 服务器应用程序将来自不同来源的数据聚合到单个数据模型中,然后与客户端同步。它为每个客户端提供模型的初始快照,然后将增量作为模型中的每个模型属性发送。结果,状态在所有客户端之间共享。

因为模型是易变的,所以每个增量都需要是数据模型属性的深层副本,其中可以包括具有嵌套属性的复杂对象。一旦属性发生变化,就会生成一个副本并将其传递给客户端队列处理程序。它必须是副本 - 我不能传递对属性的引用,因为它可能会在序列化过程中发生变化。在将增量传递给每个客户端时锁定模型是不可取的。我希望在制作副本后立即释放应用程序的主线程。

我的问题是如何以最有效的方式将深拷贝与 WCF 线序列化结合起来。创建每个增量的深层副本的一种快速而廉价的方法是使用DataContractSerializer班级。因为这通常在 WCF 序列化中使用,所以感觉这可以节省序列化 delta 以传输到客户端的时间 - 也许有一种方法可以在一个操作中完成这两项操作。因此,我正在寻找一种方法来暂停双工回调接口上特定 OperationContract 方法的序列化。实际上,我正在寻找一种方法来告诉绑定“不要序列化此 OperationContract 方法的参数值 - 它已经使用 DataContractSerializer 序列化 - 请直接将其传递给客户端。因为我使用的是 Silverlight 客户端,所以我使用的绑定是 PollingDuplexHttpBinding。

4

0 回答 0