如何使用protobuf-net序列化字节数组?

时间:2012-08-05 15:29:00

标签: c# sockets compression protobuf-net

是否可以使用protobuf-net序列化字节数组,然后通过套接字发送它以反序列化客户端?我正在寻找一种有效的方法来压缩/减少发送的数据。有人告诉我protobuf-net将是最好的方式。知道怎么回事吗?

感谢您的帮助!

2 个答案:

答案 0 :(得分:1)

Protobuf-net是一个序列化器,旨在将复杂的对象结构简化为可通过线路发送的基本表示。它不使用压缩。如果你想要压缩,使用像GZipStream这样的东西。实际上,byte []的protobuf表示是:数据的长度(作为varint),后跟原始byte []。没有protobuf实现会减少它。

所以:要么按原样发送原始字节[],要么使用类似GZipStream的东西来尝试减小尺寸。请注意,这并非总是可行,对于某些数据,压缩工具可以增加大小。

答案 1 :(得分:0)

通过使用7Zip(http://www.7-zip.org/sdk.html)中的LZMA SDK来压缩/解压缩我们的protobuf对象的字节数组表示,我们获得了很大的改进。例如,一个1114字节的数组缩小到740.但是像Marc说的那样,你的里程可能会有所不同。