我尝试在WCF/Silverlight应用程序中使用protobuf-net来提高大对象数组的序列化性能。我可以在服务代码中序列化/反序列化类(添加Order =等)。如何在Silverlight WCF生成的服务中使用protobuf-net
但是,当我尝试应用ProtoBehavior并从Silverlight调用启用protobuf的服务方法时,我得到空值而不是数据(或错误)。
我想这是因为:
- ProtoBehavior是失去了在Silverlight中生成的服务代码;
- 域类(类型)不在重用的程序集中,它们在客户端重新生成,并且Order =丢失。
但是目前我无法改变这两点。有没有一种方法可以使用protobuf-net而不重构(相当大)的项目,以便与域类共享ASP.NET/Silverlight组件?
我甚至认为如果没有其他解决方案来调整Reference.cs以添加缺少的行为和Order =到适当的成员(通过perl/regex脚本)会更容易,但是我需要调整什么,以及它会起作用吗?
对,由于某种原因生成Order =仅在生成的reference.cs类中的第一个属性上丢失,所有其他人都拥有它,但是偏移量为-1。很奇怪。但现在通过解决这个问题并通过线路发送字节[],我可以恢复我的数据。所以,在Silverlight中没有办法使用ProtoBehavior,必须坚持byte []?没什么大不了的,但仍然...因为类型产生了,这将需要额外的努力来强制类生成,等等。 – queen3 2010-09-09 10:06:31
@ queen3 - 不是我所知道的。不过,我确实知道有人(不是我)在C#的RPC上做了很多工作;也许这将在Silverlight中作为WCF的替代*工作?我还没有时间玩它呢。 – 2010-09-09 11:33:01