google protobuf基本分析
Tuesday, July 8th, 2008安装尝试了一下,谈一下感受:
1、该库是C/C++编写的。编译过程缓慢,看来规模庞大。
2、写好的.proto文件仅仅是一个格式定义文件。需要用protoc编译器将其编译为C++/Python/Java的代码,我测试过程编译为Python代码。
3、生成的源码文件为标准的Python源码,包含了.proto中同等意义的类定义,可以方便的进行属性赋值。
4、可以通过对象的SerializeToString()方法输出串行化数据。经分析串行化数据是语言无关的。
一个简单的串行化数据示例:
‘\n\x02hi\x10\x1d\x1a\x0ehliu@tudou.com’
这是Python例子中提供的一处,可以看到是二进制编码格式,此数据并不具有XML的传输过程中仍然可读的特点。不过性能是可以保证的。按照.proto定义的数据来定位每个字段。每个字段前加上了后面数据的长度。对于数字也是使用二进制编码,不过我没有分析出其使用的字节序。
总结:
1、性能足够高
2、可以提供C++/Python/Java三种语言之间的数据共享
3、串行化数据传输过程中不可读
4、串行化数据中没有见到校验字段
5、历史上出现过无数种二进制数据传输标准,估计有google推荐的东西会传播的广一些