【发布时间】: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