我尝试在WCF / Silverlight应用程序中使用protobuf-net来改进大对象数组序列化性能。我可以在服务代码中序列化/反序列化类(添加Order =等)。
但是当我尝试应用ProtoBehavior并从Silverlight调用启用protobuf的服务方法时,我得到的是空值而不是数据(或错误)。
我认为这是因为:
然而,目前我无法改变这两点。有没有办法使用protobuf-net而不重构(相当大的)项目以与域类共享ASP.NET / Silverlight程序集等?
我甚至认为,如果没有其他解决方案,调整Reference.cs以添加缺失行为和Order =更适合成员(通过perl / regex脚本)会更容易,但我究竟需要调整什么,并且它有用吗?
答案 0 :(得分:1)
Re [ProtoBehavior]
,Silverlight非常缺乏我们可以用来静默将一个替代序列化器注入WCF的扩展点,这很痛苦。使用silverlight执行此当前的唯一方法是通过线路抛出byte[]
或Stream
,并在两端处理序列化/反序列化。
Re Order=...
,值得查看内容;如果他们提出不同的数字,有办法通过partial class
- 一个丑陋的黑客来解决这个问题,但IIRC有ProtoPartialMember
(或类似的)可以应用于类,但讨论的是个人会员(财产/领域)。您可以通过这种方式更正数字。在Offset
上还有一个[ProtoContract]
(IIRC,抱歉 - 没有代码可以提供),如果您有大量字段,也可以提供帮助。
在v2(未发布)中,您可以更好地控制排序(/字段编号),而不必弄乱属性。