我大量使用字节数组通过网络来回传输对象、原始数据。我采用了 java 的方法,通过让一个类型实现 ISerializable,它包含两个方法,作为接口(interface)的一部分,ReadObjectData 和 WriteObjectData。任何使用此接口(interface)的类都会将日期写入字节数组。类似的东西
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 字符串可能存在问题,并且精确的内存表示并不总是合适的(例如打开套接字之类的东西)。
关于c# - 序列化字节数组与 XML 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/570535/