c# - 序列化字节数组与 XML 文件

标签 c# .net networking file-io

我大量使用字节数组通过网络来回传输对象、原始数据。我采用了 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/

相关文章:

c# - 每 X 分钟最大化窗口

c# - OnCollisionEnter 不与 2D 碰撞器统一调用

.NET 数据库访问 : Newest technology, 比较 (2011)

c++ - 无法使用 wininet 将 ZIP 文件发布到服务器

从VM到主机的mysql连接

java - 以编程方式刷新 ARP 表

c# - 从 .NET 中的数据库中提取 varbinary 会导致 IndexOutOfRangeException

c# - IEnumerable 在底层与 IObservable 有何不同?

.net - 在 .NET 4.0 中将图标转换为 IPicture?

.net - 将文件上传到 WCF 3.5 服务