用于将给定对象的“仅更新字段”从服务器发送到客户端的模式/技术
本文关键字:服务器 模式 客户端 技术 仅更新字段 对象 字段 更新 用于 | 更新日期: 2023-09-27 18:00:30
我有一些服务器端数据需要从服务器应用程序复制(实时推送)到大约100个wpf客户端。我的问题是,当给定的Order对象发生更改时,它通常只更改1或2个字段,所以我只想通过有线发送这些更改,而不是整个对象——因此减少了有线负载、处理时间等,因为整个Order对象大约有50个字段。
数据是以OrderId为键的Order对象的Dictionary。我使用protobuf-net对数据进行序列化,并通过有线发送到wpf客户端。
以前有人处理过这个模式/问题吗?或者对谁来实现这一目标有什么想法?
非常感谢。
使用Castle创建一个简单的代理。DynamicProxy,用于保存已更改的所有属性的名称。
protobuf-net支持多种模式来帮助这种类型的场景,最简单的是(共享System.ComponentModel使用的模式):
[ProtoMember(1)]
public string Foo { get;set; }
public bool ShouldSerializeFoo() { /* return true if Foo is "dirty" */ }
这假设您有一些机制来跟踪自己的更改(用于挂接ShouldSerialize*
方法);protobuf-net本身不进行更改跟踪。如果您目前没有任何更改跟踪,您可以使用以下答案:比较2个对象并检索具有不同值的字段列表