序列化
在java中socket传输数据时,数据类型往往比较难选择。可能要考虑带宽、跨语言、版本的兼容等问题。比较常见的做法有两种:一是把对象包装成JSON字符串传输,二是采用java对象的序列化和反序列化。随着Google工具protoBuf的开源,protobuf也是个不错的选择。对JSON,Object Serialize,ProtoBuf 做个对比。
三种方式对比传输同样的数据,google protobuf只有53个字节是最少的。结论:
方式 | 优点 | 缺点 |
JSON |
跨语言、格式清晰一目了然 |
字节数比较大,需要第三方类库 |
Object Serialize | java原生方法不依赖外部类库 | 字节数比较大,不能跨语言 |
Google protobuf |
跨语言、字节数比较少 |
编写.proto配置用protoc工具生成对应的代码 |
转自:http://www.iteye.com/topic/1128881