在这两个方面的分析(列化,反序列化)和发送数据包,通过网络是否有任何良好的估计绩效之间的差异的二xml化?

有帮助吗?

解决方案

不。

这在很大程度上取决于是XML文档本身里面有什么样的数据。如果你有大量的结构化数据,XML的开销会很大。例如,如果数据是这样的:

<person>
  <name>Dave</dave>
  <ssn>000-00-0000</ssn>
  <email1>xxxxxx/email1>
</person>
...

您将有比如果你有一个看起来像一个XML文档更大量的开销:

<book name="bible">
 In the beginning God created the heavens and the earth. 
 Now the earth was formless and empty ... 
 And if any man shall take away from the words of the book of this prophecy, God shall take away his part out of the book of life, and out of the holy city, and from the things which are written in this book. He which testifieth these things saith, Surely I come quickly. Amen. Even so, come, Lord Jesus.
</book>

所以,这不是一个真正的公平问题。这在很大程度上取决于这些数据,您打算发送,以及如何/如果你将其压缩。

其他提示

之间最大的区别 BinaryFormatter 并且xml序列化具有可移植性;BinaryFormatter 很难在版本之间保证,因此仅真正适合短期存储或传输。

但是,您可以充分利用两者, 把它变小 通过使用定制的二进制序列化,可以更快地获得它 - 而且您甚至不必自己动手;-p

protobuf网络 是 Google 协议缓冲区二进制序列化规范的 .NET 实现;它比任何一个都小 XmlSerializer 或者 BinaryFormatter, 完全 可移植(不仅仅是版本之间 - 您可以在例如 java 等中加载 pb 流)、可扩展且快速。它也经过了相当全面的测试,拥有相当数量的用户。

尺寸和速度的完整细分,涵盖 XmlSerializer, BinaryFormatter, DataContractSerializer 而 protobuf-net 是 这里.

你本能地想要说的是,二是更有效率,但它实际上取决于数据序列化。

看看这篇文章: http://www.nablasoft.com/alkampfer/index.php/2008/10/31/binary-versus-xml-serialization-size/

只是指出性能并不是您可能想要查看的唯一指标。

  • 易于施工。您是否有几天/几周的时间来构建串行器/解串器例程并对其进行彻底测试,或者是否可以将时间更好地花在功能上。
  • 易于使用数据。客户是否可以使用预构建的开源解析器,或者他们是否需要自己实现一堆(可能有错误的)代码?
  • 易于调试。能够查看传输中的数据有助于调试吗?那么二进制格式往往会混淆任何问题。
  • 每种方法的维护成本是多少?

就我个人而言,我会使用已发布的 XML 标准和开源解析库,直到通过实际测试证明性能瓶颈。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top