【问题标题】:WCF serialization and performance [duplicate]WCF序列化和性能[重复]
【发布时间】:2014-11-05 13:56:16
【问题描述】:

我注意到,如果我将一个对象转换为这样的字节数组:

MemoryStream memorystream = new MemoryStream();
BinaryFormatter bf = new BinaryFormatter();
bf.Serialize(memorystream, objectToSerialize);
byte[] toSend = memorystream.ToArray();

然后通过 WCF (WsHttpBinding / NetTcpBinding) 发送该字节数组,然后在客户端上也使用BinaryFormatter 对其进行序列化,这比仅通过 WCF 发送对象所花费的时间要少得多。

如何启用 WCF 将发送给它的任何对象转换为字节数组,然后才将其发送给客户端?

【问题讨论】:

  • 据我了解,wcf 使用 DataContractSerizalizer 将对象转换为 WCFMessage,然后通过 Formatter 转换为二进制格式(本文中为二进制)。我正在寻找的是在对象通过 DCS 之前对其进行转换,因为 DCS 需要大量时间来序列化对象。
  • 请注意,当您以这种方式进行序列化时,您会获得性能,但会失去在其他平台甚至其他版本的对象中反序列化的能力(如果添加了字段,则序列化将失败)

标签: c# wcf serialization


【解决方案1】:

你可以实现自己的序列化/反序列化,看看this article

或者您可以使用Proto-buf .Net port 序列化程序。

performance comparisons 表明,Protocol Buffers 在大小和序列化/反序列化速度方面都优于内置序列化器。

请在github上看看这个sample project

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-24
    • 2011-04-16
    • 1970-01-01
    相关资源
    最近更新 更多