当这个报文编码到 ProtocolBuffer 的二进制格式(
http://code.google.com/apis/protocolbuffers/docs/encoding.html )时(上面的文本仅用于调试和编辑),它
只需要 28 字节和 100-200ns 的解析时间。而 XML 的版本需要 69 字节(除去空白) 和 5000-10000ns 的解
析时间。
当然,操作 ProtocolBuffer 也很简单:
7@@0':0@@-/3@@
7@@0 A:0@@-/3@@
而 XML 的你需要:
7@@0':0
@@- '/003AB/!3A
B6/3
@@
7@@0 A:0
@@- '/003AB/!3A
B6/3
@@
当然,ProtocolBuffer 并不是在任何时候都比 XML 更合适,例如 ProtocolBuffer 无法对一个基于标记文本
的文档建模,因为你根本没法方便的在文本中插入结构。另外,XML 是便于人类阅读和编辑的,而
ProtocolBuffer 则不是。还有 XML 是自解释的,而 ProtocolBuffer 仅在你拥有报文格式定义的 .proto 文件
时才有意义。
1.4听起来像是为我的解决方案,如何开始?
下载包( http://code.google.com/p/protobuf/downloads/ ),包含了 Java、Python、C++的 ProtocolBuffer
编译器,用于生成你需要的 IO 类。构建和安装你的编译器,跟随 README 的指令就可以做到。
一旦你安装好了,就可以跟着编程指导( http://code.google.com/apis/protocolbuffers/docs/tutorials.html )
来选择语言-随后就是使用 ProtocolBuffer 创建一个简单的应用了。
1.5一点历史
ProtocolBuffer 最初是在 Google 开发的,用以解决索引服务器的请求、响应协议。在使用 ProtocolBuffer
之前,有一种格式用以处理请求和响应数据的编码和解码,并且支持多种版本的协议。而这最终导致了丑
陋的代码,有如:
*/F3
---
&*/FB,3