我大量使用字节数组通过网络来回传输对象、原始数据。我采用了 java 的方法,通过让类型实现 ISerialized,它包含两个方法(作为接口的一部分):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 序列化吗?
Edit #1
乔尔·科霍恩提到了BinaryFormatter。我从来没有使用过这个类。除了我目前在 msdn 上看到的内容之外,您能否详细说明,提供好的示例、参考资料、建议、当前实践?
这应该没问题,但你正在做的工作已经为你完成了。看着那(这System.Runtime.Serialization.Formatters.Binary.BinaryFormatter class.
您无需为每个特定类型实现自己的 Read/WriteOjbectData() 方法,只需使用此类即可处理大多数任何对象。它基本上获取几乎所有 .Net 对象的内存表示的精确副本,并将其写入流或从流中读取:
BinaryFormatter bf = new BinaryFormatter();
bf.Serialize(outputStream, objectToSerialize);
objectToDeserialize = bf.Deserialize(inputStream) as DeserializedType;
确保您仔细阅读了链接的文档:unicode 字符串可能存在问题,并且精确的内存表示并不总是合适的(例如,打开套接字之类的东西)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)