我大量使用字节数组来传输对象,原始数据,通过网络和返回.我通过一个类型实现ISerializable来适应java的方法,它包含两个方法,作为接口的一部分,ReadObjectData和WriteObjectData.使用此接口的任何类都会将日期写入字节数组.像那样的东西
class SerializationType:ISerializable { void ReadObjectData (/*Type that manages the write/reads into the byte array*/){} void WriteObjectData(/*Type that manages the write/reads into the byte array*/){} }
写完所有对象后,我发送一个网络数组.
这实际上是双重问题.这是通过网络以最高效率(速度,大小)发送数据的正确方法吗?
您是否会使用此方法将对象写入文件,而不是通常使用xml序列化?
编辑#1
Joel Coehoorn提到了BinaryFormatter.我从未使用过这门课.除了我目前在msdn上看到的内容之外,你会详细说明,提供好的例子,参考资料,建议,当前的做法吗?
这应该没问题,但你正在做已经完成的工作.看看System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
课程.
不需要为每种特定类型实现自己的Read/WriteOjbectData()方法,您只需使用已经可以处理大多数任何对象的类.它基本上需要几乎任何.Net对象的内存表示的精确副本,并将其写入流或从流中读取它:
BinaryFormatter bf = new BinaryFormatter(); bf.Serialize(outputStream, objectToSerialize); objectToDeserialize = bf.Deserialize(inputStream) as DeserializedType;
确保阅读链接文档:unicode字符串可能存在问题,并且确切的内存表示并不总是合适的(例如,打开套接字等).