在解析(序列化,反序列化)和通过网络发送数据包方面是否有任何关于二进制和xml序列化之间性能差异的良好估计?
不.
它在很大程度上取决于XML文档本身内部的数据类型.如果您有大量结构化数据,则XML的开销会很大.例如,如果您的数据如下所示:
... Dave 000-00-0000 xxxxxx/email1>
如果您的XML文档如下所示,您将获得更多的开销:
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.
所以这不是一个公平的问题.它在很大程度上取决于您打算发送的数据,以及如何/如果您正在压缩它.
BinaryFormatter
与xml序列化最大的区别是可移植性; BinaryFormatter很难在版本之间保证,所以它只适合短期存储或传输.
但是,你可以通过使用定制的二进制序列化来获得两者中的最佳效果,并使它更小并且更快,而你甚至不必自己动手;-p
protobuf-net是Google协议缓冲区二进制序列化规范的.NET实现; 它比小任XmlSerializer
还是BinaryFormatter
,完全可移植的(不仅仅是版本之间-你可以加载在PB流,例如,JAVA等),可扩展和快速.它也经过了相当全面的测试,拥有相当数量的用户.
规模和速度,覆盖的全面崩溃XmlSerializer
,BinaryFormatter
,DataContractSerializer
和protobuf网是在这里.